Shown below is an example of how a number of OpenMRS module objects would map to FHIR resources
Patient
private Integer patientId :: n/a - unused private Set<PatientIdentifier> identifiers :: Patient.identifier private Integer patientIdentifierId :: not mapped private Patient patient :: not mapped private String identifier :: patient.identifier.value private PatientIdentifierType identifierType :: private Integer patientIdentifierTypeId :: mapping table, type id ==> URL private String format :: not mapped private Boolean required = Boolean.FALSE :: not mapped private String formatDescription :: not mapped private Boolean checkDigit = Boolean.FALSE :: not mapped private String validator :: not mapped private LocationBehavior locationBehavior :: not mapped private UniquenessBehavior uniquenessBehavior :: not mapped private Location location :: Patient.identifier.assigner (URL) private Boolean preferred = false :: if true, Patient.identifier.use = usual
Person
protected Integer personId :: [base]/Patient/[personId] private Set<PersonAddress> addresses = null :: Patient.address private Integer personAddressId :: not mapped private Person person :: not mapped private Boolean preferred = false :: Patient.address.use ? mapping private String address1 :: Patient.address.line private String address2 :: Patient.address.line private String address3 :: Patient.address.line private String address4 :: Patient.address.line private String address5 :: Patient.address.line private String address6 :: Patient.address.line private String cityVillage :: Patient.address.city private String countyDistrict :: Patient.address.extension : "http://hl7.org/fhir/Profile/iso-21090#address-part-county", valueString private String stateProvince :: Patient.address.state private String country :: Patient.address.country private String postalCode :: Patient.address.zip private String latitude :: Patient.address.extension -> Location private String longitude :: Patient.address.extension -> Location private Date startDate :: Patient.address.period.start private Date endDate :: Patient.address.period.end private Set<PersonName> names = null :: Patient.name private Integer personNameId :: not mapped private Person person :: not mapped private Boolean preferred = false :: Patient.name.use = usual private String prefix :: Patient.name.prefix private String givenName :: Patient.name.given private String middleName :: Patient.name.given private String familyNamePrefix :: folded into Patent.name.family (else, Patient.name.family with extension http://hl7.org/fhir/Profile/iso-21090#name-qualifer, valueCode = PFX) private String familyName :: Patent.name.family private String familyName2 :: Patent.name.family private String familyNameSuffix :: Patent.name.suffix private String degree :: Patent.name.suffix private Set<PersonAttribute> attributes = null :: private integer personAttributeTypeId :: mapping table that defines how attributes map - whether existing elements or extensions private String value :: depends on mapping private String gender :: Patient.gender (mapped: code = M or code = F, code system is http://hl7.org/fhir/v2/0001) private Date birthdate :: Patient.birthDate private Boolean birthdateEstimated = false :: Extension if worth mapping private Boolean deathdateEstimated = false :: Extension if worth mapping private Boolean dead = false :: if true, and no date, then Patient.deceasedBoolean= true private Date deathDate :: Patient.deceasedDate private Concept causeOfDeath :: Patient.extension private User personCreator :: not mapped (would be in provenance if worth mapping) private Date personDateCreated :: not mapped (would be in provenance if worth mapping) private User personChangedBy :: not mapped (would be in provenance if worth mapping) private Date personDateChanged :: not mapped (would be in provenance if worth mapping) private Boolean personVoided = false :: if true, Patient.active = false, else Patient.active = true private User personVoidedBy :: not mapped (would be in provenance if worth mapping) private Date personDateVoided :: not mapped (would be in provenance if worth mapping) private String personVoidReason :: not mapped (would be in provenance if worth mapping) private boolean isPatient :: not mapped
Obs
protected String accessionNumber :: Observation.identifier protected String comment :: Observation.comments protected ComplexData complexData :: -- not mapped -- protected Concept concept :: Observation.Name protected 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" protected Set<Obs> groupMembers:: Observation.relatedItem.target (type = has-component) protected Location location :: Observation.extension http://resources.openmrs.org/doc/fhir/profiles/vitalsigns.xml#location protected Date obsDatetime :: Observation.appliesDateTime protected Obs obsGroup:: n/a - back links are implicit not explicit protected Integer obsId :: n/a - goes in the URL e.g. [base]/Observation/[obsId] protected Order order :: not mapped (at least for now) protected Person person :: Observation.subject protected Integer personId :: not mapped static long serialVersionUID :: not mapped protected Concept valueCoded :: Observation.valueCodeableConcept protected ConceptName valueCodedName :: Observation.valueCodeableConcept protected String valueComplex :: Observation.valueAttachment protected Date valueDatetime :: Observation.valueDateTime protected Drug valueDrug :: Observation.valueCodeableConcept protected Integer valueGroupId :: not mapped protected String valueModifier :: not mapped protected Double valueNumeric :: Observation.valueQuantity protected String valueText:: Observation.valueStirng