Core Data Model should support Encounter Diagnoses

Primary Mentor

Backup Mentor

Assigned toTBD


PIH first introduced "Diagnoses" in the emrapi module for their Mirebalais project (storing the actual data in an obs group). This has been included in the Reference Application and in Bahmni for years without any real changes being requested to the use case, so I'm pretty confident that we've got this right, and it's time to implement Encounter Diagnoses in openmrs-core, while aligning with recent developments in FHIR.


It's important to design and implement Conditions and Encounter Diagnoses together, so this is intentionally a large ticket, with broad scope. Whoever picks this up should break down the work further. (For example, implement Diagnosis first, and Condition next.)

Required Skills

  • Strong Java skills
  • Familiarity with the OpenMRS API
  • An basic understanding of how Concepts are modeled within OpenMRS


  • Introduce a new convenience class CodedOrFreeText in the Java API
  • Introduce an Enum for what we've historically called "diagnosis certainty" and FHIR refers to as ConditionVerificationStatus
  • Introduce an Enum for what we've historically called "condition status" and FHIR refers to as ConditionClinicalStatus
  • Introduce new Condition domain object, backed by a new `condition` table
  • Introduce a new EncounterDiagnosis domain object, backed by a new `encounter_diagnosis` table. 
  • Introduce new REST APIs for these domain objects (create associated tickets in the RESTWS project for this)
  • Refactor emrapi module's DiagnosisService and ConditionService to use this new functionality under the hood
  • Create a ticket for migrating existing data captured via the emrapi module and deprecating this functionality from emrapi
  • Create a ticket for updating the UIs in the reference application to use these new tables

Extra Credit


  • Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.