Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

We highly recommend going through this page to understand different features available with SNOMED Integration before proceeding for the setup

This page contains the steps to setup SNOMED enabled integration of Bahmni with SNOMED Terminology Server over FHIR in local machine

Pre-requisite

  1. Docker should be up and running with docker compose installed.

  2. SNOMED RF2 File. You can get this from SNOMED International. This is a licensed file and cannot be shared across.

Steps

  1. Checkout this repository and change branch to snomed-master (for latest docker images). Alternatively, you can use the snomed-ph2 branch to deploy the changes associated with Phase 2 of Bahmni SNOMED integration.bahmni-docker repository

    Code Block
    languagenonebash
    git clone https://github.com/Bahmni/snomed-bahmni-docker.git
    git checkout snomed-master
Info

This repository is used to run entire SNOMED Integration with Bahmni.

Info

This deployment comes with two profiles i.e snomed-clinic and snomed-standard. Each profile has two 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)

  1. To start SNOMED CLINIC or STANDARD using docker compose (External SNOMED Server)

    Go to snomed-clinic or snomed

    Using 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.

    1. 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

    2. 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=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/)

    3. 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:

    1. Go to snomed-clinic-with-snowstorm-lite or snomed-standard-with-snowstorm-lite emr, snowstorm-lite, cdss .

    2. Update the location of your RF2 File in the SNOWSTORM_RF2_FILE_PATH environment variable in the .env file. Then uncomment the volume in load-snowstorm-lite-data service to mount the RF2 file for initialisation

    3. Update the Admin password for Snowstorm Lite server by changing the value of SNOWSTORM_LITE_ADMIN_PASSWORD environment variable in .env file

    4. Now you can bring up the services by either using the run-bahmni.sh script or docker compose up -d command. The initial import of RF2 takes around 10mins to complete.

  2. 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.

    1. Go to bahmni-clinic or bahmni-standard subfolder. For example: cd snomedbahmni-standard-with-snowstorm-lite.Update SNOWSTORM_RF2_FILE_PATH with RF2 file path from SNOMED and admin.password .

    2. If you want to use the CDSS feature, add cdss profile to the COMPOSE_PROFILES variable in the .env file.

    3. Replace <UPDATE_PASSWORD_HERE> with the same admin.password in the load-data.sh file.

    4. Execute script: ./run-bahmni.sh. This will give you options for start/stop/view-logs/pull/reset/etc.

Info

Get the SNOMED RF2 file from SNOMED International (this RF2 file is a licensed file)

    1. Example: COMPOSE_PROFILES=emr, cdss

    2. Update the value of TERMINOLOGY_SERVER_URL variable in the .env file with the URL of the external terminology server.

    3. Also set the value of ICD10_LITE_INDICATOR to false.

    4. Now you can bring up the services by either using the run-bahmni.sh script or docker compose up -d command.

4. Go to browser, and hit https://localhost.

5. List of Global properties to be updated - Under OpenMRS Advance → 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

5

https://snowstorm.snomed.mybahmni.in/fhir/ (external terminology server URL)

For using Snowstorm Lite use below valueDefaults to Snowstorm Lite:

http://snowstorm-lite:8080/fhir/

3

cdss.fhir.baseurl

Base URL for CDSS service

http://cdss:8080/cds-services

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}

6
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)

7
3

ts.fhir.conceptDetailsUrl

URL template pattern for fetching concept details from terminology server

http://snomed.info/sct?fhir_vs=ecl/{0}

8
4

ts.fhir.diagnosiscount.valueseturl

Valueset URL for Diagnosis Count on terminology server

http://snomed.info/sct?fhir_vs=ecl/<<

9
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,#}

10
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}

11
7

ts.fhir.procedure.valueset.urltemplate

URL template pattern for fetching valueset for procedure details from terminology server

http://bahmni.org/fhir/ValueSet/

12

8

cdss.fhir.baseurl

Base URL for CDSS service

http://cdss:8080/cds-services

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

  1. To upload procedures in Bahmni, please follow steps mentioned here

  2. 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:

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.

Expand
titlebahmni-valueset-covid
Code Block
languagejson
{
    "resourceType": "ValueSet",
    "url": "http://bahmni.org/fhir/ValueSet/bahmni-valueset-covid",
    "version": "0.1",
    "name": "bahmni-valueset-covid",
    "description": "Bahmni Valueset for CoVID",
    "status": "draft",
    "experimental": true,
    "compose": {
        "include": [
            {
                "system": "http://snomed.info/sct",
                "concept": [
                    {
                        "code": "1240581000000104"
                    },
                    {
                        "code": "1240591000000102"
                    }
                ]
            }
        ]
    }
}
Expand
titlebahmni-valueset-hospitalisation
Code Block
{
    "resourceType": "ValueSet",
    "url": "http://bahmni.org/fhir/ValueSet/bahmni-valueset-hospitalisation",
    "version": "0.1",
    "name": "bahmni-valueset-hospitalisation",
    "description": "Bahmni Valueset for Hospitalisation",
    "status": "draft",
    "experimental": true,
    "compose": {
        "include": [
            {
                "system": "http://snomed.info/sct",
                "concept": [
                    {
                        "code": "707852009"
                    },
                    {
                        "code": "707851002"
                    }
                ]
            }
        ]
    }
}
Expand
titlebahmni-valueset-symptoms
Code Block
languagejson
{
    "resourceType": "ValueSet",
    "url": "http://bahmni.org/fhir/ValueSet/bahmni-valueset-symptoms",
    "version": "0.1",
    "name": "bahmni-valueset-symptoms",
    "description": "Bahmni Valueset for Covid Symptoms",
    "status": "draft",
    "experimental": true,
    "compose": {
        "include": [
            {
                "system": "http://snomed.info/sct",
                "concept": [
                    {
                        "code": "84387000"
                    },
                    {
                        "code": "82272006"
                    },
                    {
                        "code": "38666106"
                    },
                    {
                        "code": "79890006"
                    },
                    {
                        "code": "44169009"
                    },
                    {
                        "code": "36955009"
                    },
                    {
                        "code": "162397003"
                    },
                    {
                        "code": "29857009"
                    },
                    {
                        "code": "21522001"
                    },
                    {
                        "code": "131148009"
                    },
                    {
                        "code": "49727002"
                    },
                    {
                        "code": "84229001"
                    },
                    {
                        "code": "25064002"
                    }
                ]
            }
        ]
    }
}

Known Issues with SNOMED CLINIC CONFIGURATION

...