Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
Observation is a FHIR resource that is "used to support diagnosis, monitor progress, determine baselines and patterns and even capture demographic characteristics." As such, Observations have a wide range of uses and show up in a wide range of places. FHIR Observations are mapped to OpenMRS Obs objects.
The following properties are supported by the OpenMRS FHIR Module:
Observation.id
Observation.code
Observation.category
Observation.status
Observation.interpretation
Observation.issued
OpenMRS Data Model | FHIR Resource Element |
---|---|
Obs.uuid | Observation.id |
Obs.concept | Observation.code |
Obs.concept | Observation.category |
Obs.status | Observation.status |
Obs.interpretation | Observation.interpretation |
Obs.dateCreated | Observation.issued |
Obs.encounter | Observation.encounter |
Obs.order | Observation.basedOn |
Obs.person | Observation.subject |
Obs.value[x] | Observation.value[x] |
1 category
is determined by a simple mapping table (fhir_observation_category_map
) that maps between the FHIR observation category value-set (if possible) and a particular conceptClass
. By default, the following categories will be mapped if the expected versions of them exist in the concept dictionary:
Category | Concept Class |
---|---|
laboratory | Test |
procedure | Procedure |
exam | Finding |
2 value[x]
mappings between OMRS and Observation are largely one-to-one where possible. Numeric values are generally mapped to valueQuantity
; coded observations are mapped to valueCodeableConcept
, etc.
The FHIR2 module has a fairly generic system for mapping between OpenMRS concepts and observation codes. The FHIR2 module will send and accept codes from any coding system it knows about. A few of the common ones (note that these should usually be available by default):
URL | Code System |
---|---|
http://loinc.org | LOINC |
http://snomed.info/sct | SNOMED CT |
https://openconceptlab.org/orgs/CIEL/sources/CIEL | CIEL |
In addition, the FHIR module will send and accept the concept UUID without any system as a reference to that concept. The FHIR module can be instructed to use other systems as well. Mappings between system URLs and the underlying OpenMRS concept sources are maintained in a simple mapping table (fhir_concept_source
). Adding a new entry to the table will add a newly supported concept system.
Note: placeholder "{release}" below must be replaced by the FHIR Release - currently "R3" and "R4" are implemented. See more on the FHIR Release support page.
URL | Description |
---|---|
/ws/fhir2/{release}/Observation | Gets all observations |
/ws/fhir2/{release}/Observation/{uuid} | Gets a specific observation |
/ws/fhir2/{release}/Observation?{query} | Searches for observations matching the provided criteria |
Parameter | Value Type | Description |
---|---|---|
date | date | Searches for observations by the observation date and time |
code | token | Searches for observations with particular codes (concepts) |
category | token | Searches for observations by the observation category |
encounter | reference | Searches the encounter in which this observation was recorded |
subject | reference | Searches for observations by a given patient |
subject.identifier | token | Searches for observations by the patient identifier |
subject.given | string | Searches for observations based on the patient's given name(s) |
subject.family | string | Searches for observations based on the patient's family name |
subject.name | string | Searches for observations based on the patient's full or partial name |
patient | reference | Searches for observations by a given patient |
patient.identifier | token | Searches for observations by the patient identifier |
patient.given | string | Searches for observations based on the patient's given name(s) |
patient.family | string | Searches for observations based on the patient's family name |
patient.name | string | Searches for observations based on the patient's full or partial name |
has-member | reference | Searches for an observation group that contains a given observation |
has-member.code | token | Searches for an observation group that contains an observation with the provided code |
value-concept | token | Searches for an observation whose value is a concept that matches the provided concept code |
value-date | date | Searches for an observation whose value is a date by the specified date range. |
_id | Searches based on the exact UUID of the person record | |
_lastUpdated | date | Searches based on the the dateCreated field for the observation record |
1 See the notes on category mapping above
Include | Description |
---|---|
Observation:encounter | Includes the encounter for any observations in the result set |
Observation:patient | Includes the patient for any observations in the result set |
Observation:has-member | Includes the observation group members for any observation group in the result set |
Include | Description |
---|---|
Observation:has-member | Includes the observation group observation for any searches that match an observation group memeber |
DiagnosticReport:result | Includes the diagnostic report (if any) for which this observation is a result |
URL | Description |
---|---|
/ws/fhir2/{release}/Observation | Creates a new observation |
URL | Description |
---|---|
/ws/fhir2/{release}/Observation/{uuid} | Deletes (voids) the specified observation |
1 Comment
Andrew Kanter
Are we really going to specify the coded values with reference maps directly and not use the translation code method so that we can potentially send multiple reference maps and mapping types? Do we need an OID for the CIEL dictionary so that we can maintain interoperability at the OpenMRS concept level regardless of SNOMED, LOINC mapping etc.