Versions Compared

Key

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

...

  1. Deploy bdshr client omod. You can get released versions from github. (The location should be /opt/openmrs/modules for RPM based installation and should be owned by bahmni user.)
  2. To populate Locations, Facilities and Providers from HRM 
    Go to OpenMRS UI -> Manage Schedulers -> and set the LR Sync, FR Sync and PR Sync to start on startup and start off the schedulers.
    (If you have a provision to populate the data directly, you can do so and then start the schedulers).

  3. Create Users which are recognized by HIE. (To be done after step 2 is finished).
    1. Create a user from OpenMRS administration console and provide him the following roles
      Doctor, Nurse, RegistrationClerk, EmergencyRegistration, bahmni-document-uploader (or give him privilage-full).
    2. if the user is going to do any clinical assessment like encounter (diagnosis, drug or test order, record observation), then its better that you also register this user as a provider which is synced from PR. To add the user as a provider. --> In admin screen of openmrs goto manage providers and create a new provider for the user or link with a existing provider synced from PR.
      Providers synced from PR usually have only digits set in the identifier section of openrmrs provider. You can validate this by going to HRM and looking for a provider with this identifier. 
  4. Set up patient identifier in Bahmni

    1. Set up prefix for patient identifiers, in Administration -> "Manage Patient Identifier Sources" in openmrs. 
      Identifier type = (patient identifier)

    2. Go to Openmrs -> Administration -> Maintanence -> Settings → SHR  and set Default Patient Identifier Source Id as the source id generated in the above step.
  5. Create locations identified by HIE. (To be done after step 2 is finished).
    1. Login Locations for CHW application:  You can do this via OpenMRS Admin interface. Goto Administration->Locations, identify the location and edit it. Assign 'Login Location' and save.  You will also have to put the appropriate address for the location.
    2. Alternatively, to tag a location as a login location, run the following sqls :-

      Code Block
      languagesql
      INSERT INTO location_tag_map(location_id, location_tag_id)
      VALUES((Select location_id from location where name ='<location name>'),
      (Select location_tag_id from location_tag where name ='Login Location'));
       
      or 
      select * from location where uuid=(select internal_id from shr_id_mapping where external_id='facility code');
      verify location name from the above result.
      use the location_id from the above result and execute the below result
      insert into location_tag_map values($location_id, (select location_tag_id from location_tag where name = 'Login Location'));
    3. Tag the hospital location as "Visit Location". (For a CHW instance, the visit location will be the community clinics. It will be the same as the login locations.)

    4. For all the login locations, the parent location should be configured. The parent location will be the visit location or hospital location. (This is not applicable for CHW as the visit location and login location are the community clinics itself).


    1. Remove the "Bahmni Diagnosis Status" concept from the "Visit Diagnosis" concept set (If you are using the Diagnosis tab in Bahmni to enter Diagnosis).

      Code Block
      languagesql
      DELETE FROM concept_set WHERE concept_id = (SELECT concept_id FROM concept_name WHERE name='Bahmni Diagnosis Status' AND concept_name_type='FULLY_SPECIFIED');
    2. Remove the privilege "app:clinical:deleteDiagnosis" from all user roles.

      Code Block
      languagesql
      DELETE FROM role_privilege WHERE privilege = 'app:clinical:deleteDiagnosis';


  6. Set up global properties -
    You can setup the global properties through OpenMRS UI OR you can execute the sqls given below (refer code block : Setup Global Properties)
    1. For "concept.causeOfDeath" and "concept.unspecifiedCauseOfDeath"
      Go to Openmrs -> Administration -> Maintanence -> Settings → Concept
      1. Cause of Death = {concept id of locally synced cause of death concept}
      2. Unspecified Cause of Death = {concept id of locally synced unspecified cause of death concept}

    2. Go to Openmrs -> Administration -> Maintanence -> Settings -> SHR
      1. Default Patient Identifier Source Id = {default patient identifier source }

      2. Ignore Concept List  = {concept id of concepts that are not be synced with SHR}
      3. Concept Relationship Type = {concept id of locally synced Relationship Type}
      4. Concept Quantity Units = {concept id of locally synced Quantity Units}
      5. Concept Immunization Reason = {concept id of locally synced Immunization Reason}
      6. Concept Immunization Refusal Reason = {concept id of locally synced No Immunization Reason}
      7. Concept Immunization Status = {concept id of locally synced Immunization Status}
      8. Concept Procedure Status = {concept id of locally synced Procedure Status}
      9. Concept Procedure Outcome = {concept id of locally synced Procedure Outcome}

      10. Concept Route of Administration = {concept id of locally synced Route Of Administration}

      11. Concept Medication Forms = {concept id of locally synced Medication Forms}

      12. Concept Medication Package Forms = {concept id of locally synced Medication Package Forms} 
        (You can use the code block for global property to set the concepts only)

        Code Block
        languagesql
        titleSetup Global Properties
        update global_property set property_value=(select concept_id from concept_name where name='Cause of Death' and concept_name_type='FULLY_SPECIFIED') where property='concept.causeOfDeath';
        
        update global_property set property_value=(select concept_id from concept_name where name='Unspecified cause of death' and concept_name_type='FULLY_SPECIFIED') where property='concept.unspecifiedCauseOfDeath';
         
        update global_property set property_value=(select concept_id from concept_name where name='Immunization Reason' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.immunizationReason';
        
        update global_property set property_value=(select concept_id from concept_name where name='No Immunization Reason' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.immunizationRefusalReason';
        
        update global_property set property_value=(select concept_id from concept_name where name='Immunization Status' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.immunizationStatus';
         
        update global_property set property_value=(select concept_id from concept_name where name='Procedure Status' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.procedureStatus';
         
        update global_property set property_value=(select concept_id from concept_name where name='Procedure Outcome' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.procedureOutcome';
        
        update global_property set property_value=(select concept_id from concept_name where name='Route of Administration' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.routeOfAdministration';
        
        update global_property set property_value=(select concept_id from concept_name where name='Relationship Type' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.relationshipType';
        
        update global_property set property_value=(select concept_id from concept_name where name='Quantity Units' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.quantityUnits';
        
        update global_property set property_value=(select concept_id from concept_name where name='Medication Forms' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.medicationForms';
        
        update global_property set property_value=(select concept_id from concept_name where name='Medication Package Forms' and concept_name_type='FULLY_SPECIFIED') where property='shr.concept.medicationPackageForms';


  7. We need to add "Dispensed" concept to "shr obs ignore list" in global properties.
  8. Add the following concepts as set members to
    1.  Mandatory : 
      1. Relationship Type -> Family Member History
    2. Optional : 
      1. Immunization Reason -> Immunization Incident Group
      2. No Immunization Reason -> Immunization Incident Group
      3. Immunization Status-> Immunization Incident Group
      4. Procedure Outcome ->  Procedure Template
      5. Procedure Status-> Procedure Template

      Code Block
      languagesql
      select concept_id into @concept_set from concept_name where name='Immunization Incident Group' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.immunizationReason';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
      
      
      select concept_id into @concept_set from concept_name where name='Immunization Incident Group' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.immunizationRefusalReason';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
      
      
      select concept_id into @concept_set from concept_name where name='Immunization Incident Group' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.immunizationStatus';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
      
      
      select concept_id into @concept_set from concept_name where name='Family Member History' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.relationshipType';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
      
      
      select concept_id into @concept_set from concept_name where name='Procedure Template' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.procedureOutcome';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
      
      
      select concept_id into @concept_set from concept_name where name='Procedure Template' and concept_name_type='FULLY_SPECIFIED';
      select property_value into @concept_id from global_property where property='shr.concept.procedureStatus';
      insert into concept_set (concept_id, concept_set,creator,date_created,uuid) values(@concept_id,@concept_set,1,now(),uuid());
  9. For local envs only (not to be done for prod), add uncategorized diagnosis to diagnosis set of sets concept as a set member.
  10. Add immunizations to the coded concept "vaccine". 
  11. Change the datatype of the concept "procedure" to coded and add procedures like colposcopy, histopathology etc to it.
  12. To setup Order Types refer Steps to setup new Openmrs Order Type.

To get OpenELIS & OpenMRS working, you need to do the following.

...