- Notifications
You must be signed in to change notification settings - Fork1
mimic4fhir converts data from MIMIC IV database (PostgreSQL) to HL7 FHIR R4 resources or the German Medical Informatics Initiative core data sets.
License
skfit-uni-luebeck/mimic4fhir
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
mimic4fhir converts data fromMIMIC IV database (PostgreSQL) to HL7 FHIR R4 resources or the German core data set ofMedical Informatics Initiative. Currently the following modules are supported:
- Patient
- Encounter
- Diagnosis
- Procedure
- Laboratory Results
- Medication
- Imaging techniques
To get access to MIMIC-IV , you have to complete a privacy course, seehere for more information. In addition to the MIMIC data, four FHIR ConceptMaps are needed for the translation of the codes. You can find a program to generate the necessary FHIR ConceptMapshere.
Bundles are created per patient admission/encounter. If the number of resources in a bundle exceeds 15000, a new bundle will be created. This limits the bundle size to ~20MB and are transcaction bundles withconditional creates.Resource bundles can be
- printed to console
- saved as xml file
- pushed to a fhir server
by setting the "outputMode":
app.setOutputMode(OutputMode.PRINT_FILE);
The parameter "topPatients" allows to limit the number of loaded patients; 0 means all patients. Transforming always starts with Patient 1.
app.setTopPatients(10);
ARabbitMQ server is required to run on localhost.Please note: Performance is highly dependent on the following and might be quite low:
- database partitioning and indexing for table chartevents (by HADM_ID)
- There is a scripthere which adds additional indeces to the PostgresSQL DB
- server performance (if pushed to a server)
We recommend starting with a low number of patients and with saving to xml files to check the database performance.
// Add server and config data..ConfigconfigObj =newConfig();// PostgresconfigObj.setPassPostgres("Pa33word!");configObj.setPortPostgres("5432");configObj.setUserPostgres("user");configObj.setPostgresServer("192.168.0.1");configObj.setDbnamePostgres("postgres");// FhirconfigObj.setFhirServer("http://server.com/fhir/");configObj.setFhirxmlFilePath("output/");// Validation// Set to true, if you want to validate with the InstanceValidatorconfigObj.setValidateResources(false);// ConceptMaps URI needed for the conversionconfigObj.setICD9toICD10GM("https://server.com/fhir/ConceptMap/d9be1278-282b-4e80-8be5-226cb30a9eb5");configObj.setICD9ToSnomed("https://server.com/fhir/ConceptMap/9f0b2a1f-8253-47fc-a8cf-118226823e22");configObj.setICD9ProcToSnomed("https://server.com/fhir/ConceptMap/01c83771-6524-46ef-aaa8-4f63e1d837ea");configObj.setICD10PCStoSnomed("https://server.com/fhir/ConceptMap/03ea8e3a-7fc3-4fb3-8e30-21af497c2a63");// Use CXR// If you have access to the CXR, the conversion will added DiagnosticReport and ImagingStudying// for the corresponding patientsconfigObj.setUseCXR(false);//Specification// Choose plain R4 or the German MII KDS outputconfigObj.setSpecification(ModelVersion.KDS);Mimic4Fhirapp =newMimic4Fhir();app.setConfig(configObj);app.setOutputMode(OutputMode.PRINT_FILE);// 25 Patients chosen random (boolean flag) from the MIMIC IVapp.setTopPatients(25,true);// You can run the conversion single-threaded//app.start();// Or with 10 Threadsapp.startWithThread();
In addition, there is a command line interface to accelerate the creation for automated testing.
java -jar target/mimic4fhir-1.0.0-jar-with-dependencies.jar --help -d, --database=<postgresDatabase> The PostgreSQL Database --debug Prints bundle into the console --fhir=<fhirEndpoint> FHIR Endpoint to submit the Resources --file=<filePath> Output Path the Resources -h, --help Show thishelp message and exit. --kds Enable to German MII KDS as the output -p, --port=<postgresPort> The PostgreSQL Port --patients=<patients> Number of Patients to transform -pwd, --password=<postgresPassword> The PostgreSQL User Password --random Randomly choose patients to convert -s, --server=<postgresServerIP> The PostgreSQL Server IP --thread Enable Threading -u, --user=<postgresUser> The PostgreSQL User -V, --version Print version information and exit. -validate Validates the Resources --10PCSToSCT=<ICD10PCStoSCT> FHIR ConceptMap to translate ICD10 PCS to SNOMED CT --9ProcToSCT=<ICD9ProcToSCT> FHIR ConceptMap to translate ICD9 Procedure to SNOMED CT --9To10GM=<ICD9toICD10GM> FHIR ConceptMap to translate ICD9 to ICD10GM --9ToSCT=<ICD9toSCT> FHIR ConceptMap to translate ICD9 to SNOMED CT --cxr Enable the MIMIC IV CXR
Example:
java -jar target/mimic4fhir-1.0.0-jar-with-dependencies.jar --server=192.186.0.1 --user=user --password=Pa33word! --patients=20 --thread --file=output/
This source code is licensed under Apache 2.
About
mimic4fhir converts data from MIMIC IV database (PostgreSQL) to HL7 FHIR R4 resources or the German Medical Informatics Initiative core data sets.