Shown below is an example of how a number of OpenMRS module objects would map to FHIR resources, as proposed by Grahame Grieve.
The left side of the relationship indicates the OpenMRS attribute, while the right indicated the FHIR resource mapping.
Code Block |
---|
|
Integer patientId :: n/a - unused
Set<PatientIdentifier> identifiers :: Patient.identifier
Integer patientIdentifierId :: not mapped
Patient patient :: not mapped
String identifier :: patient.identifier.value
PatientIdentifierType identifierType ::
Integer patientIdentifierTypeId :: mapping table, type id ==> URL
String format :: not mapped
Boolean required = Boolean.FALSE :: not mapped
String formatDescription :: not mapped
Boolean checkDigit = Boolean.FALSE :: not mapped
String validator :: not mapped
LocationBehavior locationBehavior :: not mapped
UniquenessBehavior uniquenessBehavior :: not mapped
Location location :: Patient.identifier.assigner (URL)
Boolean preferred = false :: if true, Patient.identifier.use = usual |
...
Code Block |
---|
|
String accessionNumber :: Observation.identifier
String comment :: Observation.comments
ComplexData complexData :: -- not mapped --
Concept concept :: Observation.Name
Encounter encounter :: Observation.extension http://resources.openmrs.org/doc/fhir/profiles/vitalsigns.xml#encounter "Indicates that the information in the resource was gathered at a particular location"
Set<Obs> groupMembers:: Observation.relatedItem.target (type = has-component)
Location location :: Observation.extension http://resources.openmrs.org/doc/fhir/profiles/vitalsigns.xml#location
Date obsDatetime :: Observation.appliesDateTime
Obs obsGroup:: n/a - back links are implicit not explicit
Integer obsId :: n/a - goes in the URL e.g. [base]/Observation/[obsId]
Order order :: not mapped (at least for now)
Person person :: Observation.subject
Integer personId :: not mapped
static long serialVersionUID :: not mapped
Concept valueCoded :: Observation.valueCodeableConcept
ConceptName valueCodedName :: Observation.valueCodeableConcept
String valueComplex :: Observation.valueAttachment
Date valueDatetime :: Observation.valueDateTime
Drug valueDrug :: Observation.valueCodeableConcept
Integer valueGroupId :: not mapped
String valueModifier :: not mapped
Double valueNumeric :: Observation.valueQuantity
String valueText:: Observation.valueString |
Code Block |
---|
|
Integer uuid :: n/a - goes in the URL e.g. [base]/Location/[locationId]
String name :: Location.name
String description :: Location.description
String address1 :: Address.line
String address2 :: Address.line
String cityVillage :: Address.city
String stateProvince :: Address.state
String country :: Address.country
String postalCode ::Address.postalCode
String latitude :: Location.position.longitude
String longitude :: Location.position.latitude
String countyDistrict :: Address.district
String address3 :: Address.line
String address4 :: Address.line
String address6 :: Address.line
String address5 :: Address.line
Location parentLocation :: Location.partOf
Set<Location> childLocations :: not mapped |
FHIR Family history resource is map to patient's relations in OpenMRS as follow
Code Block |
---|
|
Integer relationshipId :: not mapped
Person personA :: If PersonA is the requesting patient of family history then it will be mapped to FamilyHistory.subject else person will be map to relation attributes accordingly
Person's Relationships will be map as follow
RelationshipType relationshipType ::
String aIsToB :: FamilyHistory.relation.relationship (if patient resource relation ship is A to B)
String bIsToA :: FamilyHistory.relation.relationship (if patient resource relation ship is B to A)
Person personB :: If PersonA is the requesting patient of family history then it will be mapped to FamilyHistory.subject else person name will be map to FamilyHistory.relation.name
Related person bithday :: FamilyHistory.relation.born[x]
|
FHIR Encounter resource is map with both the visit and encounter of OpenMRS. Below shows the mapping of encounter resource of OpenMRS to FHIR Encounter
Code Block |
---|
|
Integer uuid :: n/a - goes in the URL e.g. [base]/Encounter/[encounterId]
Date encounterDatetime :: Encounter.period
Patient patient :: Encounter.subject
Integer patientId :: not mapped
Set<EncounterProvider> encounterProviders :: Encounter.participant
Location location :: Encounter.location
EncounterType encounterType : not mapped
Set<Order> orders :: not mapped
Visit visit :: Encounter.partOf
|
Below shows the mapping of visit resource of OpenMRS to FHIR Encounter
Code Block |
---|
|
Integer uuid :: n/a - goes in the URL e.g. [base]/Encounter/[encounterId]
Patient patient :: Encounter.subject
VisitType visitType :: not mapped
Concept indication :: Encounter.indication
Location location :: Encounter.location
startDatetime :: Encounter.period
Date stopDatetime :: Encounter.period
Set<Encounter> encounters :: not mapped
|
OpenMRS Encounter is map to FHIR composition resource
Code Block |
---|
|
Integer uuid :: not mapped
Date encounterDatetime :: Composition.date
Patient patient :: Encounter.subject
Integer patientId :: not mapped
Set<EncounterProvider> encounterProviders :: Composition.author
Location location :: Composition.section
EncounterType encounterType : not mapped
Set<Order> orders :: not mapped
Visit visit :: not mapped
Set<Obs> obs :: Composition.section |