Skip to content
This repository has been archived by the owner on Jul 4, 2023. It is now read-only.
/ odm2fhir Public archive

This tool maps study/patient data in CDISC ODM based on the GECCO data dictionary to HL7 FHIR which adheres to the GECCO profiles, value sets and code systems.

License

Notifications You must be signed in to change notification settings

num-codex/odm2fhir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ODM2FHIR

Mapper for study/patient data in CDISC ODM based on the GECCO data dictionary to HL7 FHIR adhering to the GECCO implementation guide (see here for mapping details).

Command

docker run **ENVIRONMENTS** **VOLUMES** ghcr.io/num-codex/odm2fhir **ARGUMENTS**

(Note: Replace all **VARIABLE** references with their actual values.)

Arguments

  • --help Print README.

  • --debug Print debug logging messages.

  • --odm.redcap.datadictionary Print current data dictionary.

  • --odm.redcap.mapping Print current mapping.

  • --odm.incompleteforms.allowed=(true|false) Allow processing of incomplete forms (false by default).

  • --odm.subjectkeys.hashed=(true|false) Hash the original subject keys (true by default).

  • --fhir.identifier.system.**TYPE**=**TYPE_IDENTIFIER_SYSTEM** Add an identifier system with **TYPE** of condition, consent, diagnosticreport, encounter, immunization, medicationstatement, observation, organization, patient or procedure (see here).

  • --fhir.identifier.assigner=**IDENTIFIER_ASSIGNER** Add an identifier assigner.

  • --fhir.encounters.enabled=(true|false) Enable FHIR Encounter resources for patient cases (false by default).

  • --fhir.organization.enabled=(true|false) Enable FHIR Organization resource for patient (false by default).

  • --fhir.updateascreate.enabled=(true|false) Enable update-as-create (see here, false by default).

  • --fhir.codingdisplays.removed=(true|false) Remove the display property from all FHIR Coding resources (false by default).

  • --fhir.notapplicables.removed=(true|false) Remove all FHIR resources having code not applicable (true by default).

  • --fhir.validation.enabled=(true|false) Enable FHIR resource validation (see here, false by default).

  • --cron="**CRON_PATTERN**" Enable timed execution (see here).

Input

Enable either local input by adding the volume for the local file to **VOLUMES** or remote input by adding the arguments for either REDCap or DIS to **ARGUMENTS**.

Local File

-v **ODM_FILE_PATH**:/workspace/input/ODM.xml

REDCap

--odm.redcap.api.url=**ODM_REDCAP_API_URL**
--odm.redcap.api.token=**ODM_REDCAP_API_TOKEN**

HTTP(S) Proxy

Enable HTTP(S) proxy by adding the environment to **ENVIRONMENTS**:

-e JAVA_TOOL_OPTIONS="-Dhttp.proxyHost=**HTTP_PROXY_HOST** -Dhttp.proxyPort=**HTTP_PROXY_PORT** -Dhttp.nonProxyHosts=**HTTP_NON_PROXY_HOSTS** -Dhttps.proxyHost=**HTTPS_PROXY_HOST** -Dhttps.proxyPort=**HTTPS_PROXY_PORT** -Dhttps.nonProxyHosts=**HTTPS_NON_PROXY_HOSTS**"

PKCS12 Certificate

--odm.redcap.api.key.file.path=**ODM_REDCAP_API_KEY_FILE_PATH**
--odm.redcap.api.key.password=**ODM_REDCAP_API_KEY_PASSWORD**

Export Chunking

By default, the ODM export from REDCap is divided into exports for data of single patients to avoid connection issues and timeouts. This can be changed by adding the argument:

--odm.redcap.api.patientspercall=**PATIENTS_PER_CALL**

Filtering

By default, all subjects within an ODM are processed. To process only subjects with changed values since the last run add a volume with **CACHE_FOLDER** pointing to a local folder:

-v **CACHE_FOLDER**:/workspace/cache

(Note: To reset the filtering, empty the folder **CACHE_FOLDER**.)

To filter subjects using REDCap's filter logic add the argument with **FILTER_LOGIC** holding a valid filter logic string:

--odm.redcap.api.filterlogic=**FILTER_LOGIC**

DIS

--odm.dis.rest.url=**ODM_DIS_REST_URL**
--odm.dis.rest.studyname=**ODM_DIS_REST_STUDYNAME**
--odm.dis.rest.username=**ODM_DIS_REST_USERNAME**
--odm.dis.rest.password=**ODM_DIS_REST_PASSWORD**

HTTP(S) Proxy

(see here)

PKCS12 Certificate

--odm.dis.rest.key.file.path=**ODM_DIS_REST_KEY_FILE_PATH**
--odm.dis.rest.key.password=**ODM_DIS_REST_KEY_PASSWORD**

Output

Either enable local output by adding the volume for the local folder to **VOLUMES** or enable remote output by adding the argument for the FHIR Server in **ARGUMENTS** - together with BasicAuth or OAuth2 (Client Credentials), if applicable.

Local Folder

-v **FHIR_BUNDLES_FOLDER_PATH**:/workspace/output

FHIR Server

--fhir.server.url=**FHIR_SERVER_URL**

HTTP(S) Proxy

(see here)

BasicAuth

--fhir.server.basicauth.username=**FHIR_SERVER_BASICAUTH_USERNAME**
--fhir.server.basicauth.password=**FHIR_SERVER_BASICAUTH_PASSWORD**

OAuth2 (Client Credentials)

--fhir.server.oauth2.token.url=**FHIR_SERVER_OAUTH2_TOKEN_URL**
--fhir.server.oauth2.client.id=**FHIR_SERVER_OAUTH2_CLIENT_ID**
--fhir.server.oauth2.client.secret=**FHIR_SERVER_OAUTH2_CLIENT_SECRET**

PKCS12 Certificate

--fhir.server.key.file.path=**FHIR_SERVER_KEY_FILE_PATH**
--fhir.server.key.password=**FHIR_SERVER_KEY_PASSWORD**

Validation

Enable validation of the generated FHIR resources - and filtering out of all invalid ones - according to mentioned profiles by adding the argument --fhir.validation.enabled=true.

Enable the use of an external terminology server by adding the argument(s) below - together with BasicAuth or OAuth2 (Client Credentials), if applicable.

FHIR Terminology Server

--fhir.terminologyserver.url=**FHIR_TERMINOLOGYSERVER_URL**

HTTP(S) Proxy

(see here)

BasicAuth

--fhir.terminologyserver.basicauth.username=**FHIR_TERMINOLOGYSERVER_BASICAUTH_USERNAME**
--fhir.terminologyserver.basicauth.password=**FHIR_TERMINOLOGYSERVER_BASICAUTH_PASSWORD**

OAuth2 (Client Credentials)

--fhir.terminologyserver.oauth2.token.url=**FHIR_TERMINOLOGYSERVER_OAUTH2_TOKEN_URL**
--fhir.terminologyserver.oauth2.client.id=**FHIR_TERMINOLOGYSERVER_OAUTH2_CLIENT_ID**
--fhir.terminologyserver.oauth2.client.secret=**FHIR_TERMINOLOGYSERVER_OAUTH2_CLIENT_SECRET**

PKCS12 Certificate

--fhir.terminologyserver.key.file.path=**FHIR_TERMINOLOGYSERVER_KEY_FILE_PATH**
--fhir.terminologyserver.key.password=**FHIR_TERMINOLOGYSERVER_KEY_PASSWORD**

License

Copyright © 2021 DIFUTURE (https://difuture.de)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

This tool maps study/patient data in CDISC ODM based on the GECCO data dictionary to HL7 FHIR which adheres to the GECCO profiles, value sets and code systems.

Resources

License

Stars

Watchers

Forks

Packages