This page contains the steps to setup SNOMED enabled integration of Bahmni with SNOMED Terminology Server over FHIR in local machine
Pre-requisite
Docker should be up and running
Steps
Checkout this repository and change branch to
snomed-master
(for latest docker images). Alternatively, you can use thesnomed-ph2
branch to deploy the changes associated with Phase 2 of Bahmni SNOMED integration.git clone https://github.com/Bahmni/snomed-bahmni-docker.git git checkout snomed-master
This repository is used to run entire SNOMED Integration with Bahmni.
This deployment comes with two profiles i.e snomed-clinic and snomed-standard. Each profile has two terminology server options: SNOWSTORM (External SNOMED Server) and SNOWSTORM LITE (Micro FHIR Server)
To start SNOMED CLINIC or STANDARD using docker compose (External SNOMED Server)
Go to snomed-clinic or snomed-standard subfolder. For example:
cd snomed-clinic
.Ensure your
.env
file in the sub-folder has correct PROFILE configured. For example:COMPOSE_PROFILES=snomed-clinic
. Make sure the JVM argument fhir.terminology-server.url in the environment variable CDSS_JAVA_SERVER_OPTS is set to the valid SNOMED FHIR Server URL (eg.https://snowstorm.snomed.mybahmni.in/fhir/
)Execute script:
./run-bahmni.sh
. This will give you options for start/stop/view-logs/pull/reset/etc.
To use SNOWSTORM LITE server along with SNOMED CLINIC or STANDARD, please follow the below steps:
Go to snomed-clinic-with-snowstorm-lite or snomed-standard-with-snowstorm-lite subfolder. For example:
cd snomed-standard-with-snowstorm-lite
.Update SNOWSTORM_RF2_FILE_PATH with RF2 file path from SNOMED and admin.password in the .env file.
Replace
<UPDATE_PASSWORD_HERE>
with the same admin.password in the load-data.sh file.Execute script:
./run-bahmni.sh
. This will give you options for start/stop/view-logs/pull/reset/etc.
Get the SNOMED RF2 file from SNOMED International (this RF2 file is a licensed file)
4. Go to browser, and hit https://localhost
5. List of Global properties to be updated - Under OpenMRS Advance Settings, lookup for below properties, and update the values as mentioned
Global Property Name | Description | Example | |
---|---|---|---|
1 | bahmni.lookupExternalTerminologyServer | Boolean property to determine whether external terminology server is being used or not | true |
2 | ts.fhir.baseurl | Base URL of the terminology server | https://snowstorm.snomed.mybahmni.in/fhir/ (external terminology server URL) For using Snowstorm Lite use below value: |
3 | cdss.fhir.baseurl | Base URL for CDSS service | |
4 | cdss.enable | Property used to determine whether CDSS being used or not | true |
5 | ts.fhir.valueset.urltemplate | Valueset URL template for FHIR terminology server | ValueSet/$expand?url={0}&filter={1}&count={2}&displayLanguage={3}&includeDesignations={4} |
6 | ts.fhir.diagnosissearch.valueseturl | Valueset URL for Diagnosis Search on terminology server | http://snomed.info/sct?fhir_vs=ecl/<404684003 i.e includes subset of Clinical finding (finding) |
7 | ts.fhir.conceptDetailsUrl | URL template pattern for fetching concept details from terminology server | |
8 | ts.fhir.diagnosiscount.valueseturl | Valueset URL for Diagnosis Count on terminology server | http://snomed.info/sct?fhir_vs=ecl/<< |
9 | ts.fhir.diagnosiscount.valueset.urltemplate | Valueset URL template for Diagnosis Count Reports | ValueSet/$expand?url={0}{1}&displayLanguage={2}&count={3,number,#}&offset={4,number,#} |
10 | ts.fhir.observation.valueset.urltemplate | Valueset URL template for Observation on terminology server | ValueSet/$expand?url={0}&displayLanguage={1}&_format={2}&filter={3}&count={4} |
11 | ts.fhir.procedure.valueset.urltemplate | URL template pattern for fetching valueset for procedure details from terminology server | |
12 | fhir.export.anonymise.config.path | Path of the config file that controls the anonymisation mechanism during bulk-export of patient data | /openmrs/data/fhir-export-anonymise-config.json see this page for more details |
To upload procedures in Bahmni, please follow steps mentioned here
Creation of Custom ValueSets:
In some cases, there could be a need to create a custom ValueSet for a curated set of answers for a concept when designing a form. Snowstorm APIs allows creation and management of ValueSets using REST APIs. Postman Collection can be found here.
As an example, the SNOMED CoVID form shipped out-of-the-box in config needs three custom ValueSets to be manually created. http://bahmni.org/fhir/ValueSet/bahmni-valueset-covid
,http://bahmni.org/fhir/ValueSet/bahmni-valueset-hospitalisation
,http://bahmni.org/fhir/ValueSet/bahmni-valueset-symptoms
. A POST request needs to be made to https://<SNOWSTORM_URL>/fhir/ValueSet
with the Payload below to create the ValueSets.
Known Issues with SNOMED CLINIC CONFIGURATION
For any concept supporting multiple languages, the form builder report displays all the languages against the corresponding concept. For more details, refer to this link
'Procedure Orders' concept is not automatically added as set member under 'All Orderables' after SNOMED CLINIC deployment. As a workaround 'Procedure Orders' needs to be manually added as set member under 'All Orderables' using OpenMRS concept dictionary. For more details refer to this link
Known Issues with SNOMED STANDARD CONFIGURATION
The Patient Identifier (GAN) needs to be updated in OpenMRS with Max Length of 14. This will allow new patients to be created in Bahmni.
Known Issues common to CLINIC and STANDARD CONFIGURATION
The concept ‘Procedure Orders’ need to be edited under OpenMRS and the checkbox of the ‘Is Set’ field should be checked. This will allow Bahmni to add procedures, once uploaded.