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 with docker compose installed.
SNOMED RF2 File. You can get this from SNOMED International. This is a licensed file and cannot be shared across.
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.Code Block git clone https://github.language none bahmni-docker repository
Code Block language bash git clone https://github.com/Bahmni/snomed-bahmni-docker.git git checkout snomed-master
Info |
---|
|
Info |
This deployment comes with two profiles i.e snomed-clinic and snomed-standard. Each profile has You can choose to run either Bahmni Lite or Bahmni Standard. There are 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 snomedUsing SNOWSTORM Lite (bundled with docker compose):
Bahmni Docker Compose configuration bundled SNOWSTORM Lite service which is a lightweight terminology server. Read more about it here.Go to bahmni-lite or bahmni-standard subfolder. For example:
cd snomedbahmni-clinicstandard
.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.
...
Update the value of COMPOSE_PROFILES environment variable in .env file. You can add
snowstorm-lite, cdss
if you want to use SNOWSTORM Lite and CDSS features or only add snowstorm-lite. For example:COMPOSE_PROFILES=emr, snowstorm-lite, cdss
.Update the location of your RF2 File in the
SNOWSTORM_RF2_FILE_PATH
environment variable in the .env file. Then uncomment the volume inload-snowstorm-lite-data
service to mount the RF2 file for initialisationUpdate the Admin password for Snowstorm Lite server by changing the value of
SNOWSTORM_LITE_ADMIN_PASSWORD
environment variable in .env fileNow you can bring up the services by either using the
run-bahmni.sh
script ordocker compose up -d
command. The initial import of RF2 takes around 10mins to complete.
Using External SNOWSTORM Server:
You can setup your own standard version of SNOWSTORM server or use an external SNOMED terminology server with Bahmni. Instructions on setting up SNOWSTORM server can be found here. Once you have the terminology server up and running, follow the steps below to use the external terminology server.Go to bahmni-clinic or bahmni-standard subfolder. For example:
cd bahmni-standard
.If you want to use the CDSS feature, add
cdss
profile to the COMPOSE_PROFILES variable in the .env file. Example:COMPOSE_PROFILES=emr, cdss
Update the value of
TERMINOLOGY_SERVER_URL
variable in the .env file with the URL of the external terminology server.Also set the value of
ICD10_LITE_INDICATOR
to false.Now you can bring up the services by either using the
run-bahmni.sh
script ordocker compose up -d
command.
4. Go to browser, and hit https://localhost.
5. List of Global properties to be updated - Under OpenMRS Advance OpenMRS → Administation → Settings, lookup for below properties, and update the values as mentioned required
Mandatory Properties to be looked at:
Global Property Name | Description | Example | |
---|---|---|---|
1 | bahmni.lookupExternalTerminologyServer | Boolean property to determine whether external terminology server is being used or not | true |
2 | cdss.enable | Boolean Property used to determine whether CDSS being used or not (Requires CDSS profile to be enabled) | true |
3 | 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 valueURL of the terminology server | 5Defaults to Snowstorm Lite: |
3 | cdss.fhir.baseurl | Base URL for CDSS service | |
4 | cdss.enable | Property used to determine whether CDSS being used or not | true |
Update with external terminology server URL (Example: https://snowstorm.snomed.mybahmni.in/fhir/ ) |
Other Properties available with default values:
1 | ts.fhir.valueset.urltemplate | Valueset URL template for FHIR terminology server | ValueSet/$expand?url={0}&filter={1}&count={2}&displayLanguage={3}&includeDesignations={4} |
2 | 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) |
3 | ts.fhir.conceptDetailsUrl | URL template pattern for fetching concept details from terminology server |
4 | ts.fhir.diagnosiscount.valueseturl | Valueset URL for Diagnosis Count on terminology server |
5 | 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,#} |
6 | 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} |
7 | ts.fhir.procedure.valueset.urltemplate | URL template pattern for fetching valueset for procedure details from terminology server | |
8 | cdss.fhir.baseurl | Base URL for CDSS service |
9 | 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
There are also snomed specific configuration docker images published which has pre-configured forms and reports which uses SNOMED Terminology server integrations. If you want to try out with those config images, update the value of CONFIG_IMAGE_TAG to snomed-latest in the .env file.
Creation of Custom ValueSets:
...