Mapping FHIR DiagnosticReport Resource attributes to OpenMRS

I’m currently working on the OpenMRS FHIR module and trying to implement import/export FHIR [DiagnosticReport][1] resource.

I found that it’s hard to figure out how should be the mapping done between FHIR DiagnosticReport resource and OpenMRS API. There isn’t direct mapping in the OpenMRS API for the DiagnosticReport resource(e.g. but some resources like [Person][2], [Encounter][3] etc can find a direct mapping).

Following is the mapping that I came up, so far;

DiagnosticReport       >> OpenMRS API
name (*)               :: Encounter->Obs->Concept
status (*)             :: Encounter->Obs->Concept
issued (*)             :: Encounter->EncounterDateTime
subject (*)            :: Encounter->Patient
performer (*)          :: Encounter->Provider
encounter              :: 
identifier             :: 
requestDetail          :: 
serviceCategory        :: Encounter->EncounterType
diagnosticDateTime (*) :: 
diagnosticPeriod (*)   :: 
specimen               :: 
result                 :: 
imagingStudy           :: 
image                  :: 
  comment              :: 
  link                 :: 
conclusion             :: 
codedDiagnosis         :: 
presentedForm          :: 

Keys: (*) - Required fields A->B - B contains in A


  • status and serviceCategory would have pre-defined [FHIR specific value sets][4].

Thank you in advance !.

cc to @surangak @harsha89 @judy
[1]: [2]: [3]: [4]: Representing FHIR specific value sets in OpenMRS

Hi everyone,

To pinpoint the most important challenges (at least up to now)…

The DiagnosticReport will contain data that can be stored as multiple Obs. So the question is, How do we group them together? should the diagnosticReport (lab report data, xray report data or path report data) be stored as an encounter (etc. one encounter per diagnostic report?)

And also, where do we map the following fields? = Name/Code for this diagnostic report DiagnosticReport.status = registered | partial | final | corrected | appended | cancelled | entered-in-error DiagnosticReport.serviceCategory = Biochemistry, Hematology, CAT Scan, Laboratory report etc.

Im thinking: DiagnosticReport.serviceCategory = OpenMRS encounter type DiagnosticReport.status = as an Obs for that encounter = again, as an Obs for that encounter diagnosticDateTime = EncounterDate diagnosticPeriod = this is a time period, so mayhap as two different Obs within the encounter?

CC @burke and @darius :sun_with_face:

1 Like