Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack


Page tree
Skip to end of metadata
Go to start of metadata
Project ChampionUnknown User (paul)
FHIR Guru / mentorUnknown User (grahamegrieve)
Domain expert / mentorUnknown User (surangak), Unknown User (harsha89)
Other interested parties / experts

Andrew Kanter for MVP CIEL Dictionary

Burke Mamlin

Unknown User (roger.friedman)

Unknown User (darius)

The OpenMRS FHIR module supports the ability to export and import data in the form of FHIR Resources.

Quick introduction

What is FHIR ?

What does FHIR look like ?

A resource is an instance of data that is stored or exchanged.  It has,

  • a known identity (URL) by which it can be addressed;
  • an identification of the subclass (an abstraction from the health domain) of which it is an instance;
  • a set of data elements, whose values can be a resource references or of a pre-defined type, and may be single- or array-valued;
  • a method of declaring additional data elements to extend the subclass;
  • a human-readable XHTML representation of its content;
  • a version ID that changes if the contents of the resource change;
  • the ability to be extended to include additional data elements.

Upcoming FHIR efforts

We are working on three major projects to improve our work on FHIR during the summer of 2015.

Current status of FHIR support

To date, the FHIR module supports the following resources and actions.













Explore FHIR support for OpenMRS

Interested in learning more about our current support for FHIR?

1) Try our hands on demo at

2) Read through descriptions for each FHIR resource via the child pages given below

Intercepting FHIR requests for logging and testing

  • No labels


  1. Is the Java based FHIR reference application source online somewhere (in GitHub or other hosted repo) that's easier to browse?

    1. To answer my own question, Mother Google led me to fhir-haver-model on GitHub.

  2. Question from Unknown User (surangak):

    Are the model classes in the reference application intended to be Base Resources or FHIR Resources ?

  3. Question from Unknown User (surangak):

    Where can we obtain the xsd for validating the Patient Observation list ?

    1. Response from Unknown User (r.friedman):

      Suranga Kasthurirathne, what do you mean "Patient Observation List"  All observations contain a subject, which can be a patient.  The list resource can contain observations and can refer to a subject.  But patient doesn't have lists or observations; this type of one-sided reference seems to be very typical of xml objects.  I think we are going to have to devote considerable attention to mapping our person-patient-visit-encounter-observation cascade onto FHIR resources.

  4. Unknown User (darius)

    Strategically I think that if intermediate representations of FHIR-relevant data is semantically interesting beyond just FHIR, we should introduce these intermediate representations outside of the OpenMRS FHIR module, e.g. in the EMR API module.

    Also, as I said on the Talk topic, I would prefer to focus on some well-defined FHIR clinical resource, not pick something very generic like Observation. (I think I'm agreeing with Roger here.)

  5. Any chance we could use wiki comments or the OpenMRS Talk forum for threaded discussion instead of direct wiki page edits?  It's very difficult to follow a discussion that is going on in multiple locations within a single document.

  6. Unknown User (alexgg)

    Five things to know about FHIR

    The link is dead. What it was about?

    1. The link is working for me. :-/

      1. Unknown User (alexgg)

        Sorry. It was a networking issue.

  7. Unknown User (angshuonline)

    Unknown User (surangak), how do you differentiate between a DiagnosticReport Lab or Radiology? As much as I know the "DiagnosticReport" resource doesn't have anything to specify whether its for Radiology or Pathology/Clinical. Are you using any extension to define additional meta data?

  8. Unknown User (surangak)

    Hi Unknown User (angshuonline), basically, we're using the category attribute to identify what type of report (Radiology or other) each specific diagnostic report represents.


    So take diagnostic report -> read service category _> identify what it represents -> forwards diagnostic report to a handler class that has radiology specific business logic to parse its contents. 

  9. Unknown User (angshuonline)

    Unknown User (surangak), thanks for the clarification. My question was also misleading I guess, since I meant DiagnosticOrder (instead of DiagnositicReport). I was wondering how would you indicate that the order is a "radiology" or a "pathology". For example, if someone is posting a "DiagnosticOrder" resource to OpenMRS, how would you determine whether to create a order for "labTest" which OpenMRS has support for, or to create a "radiology" order type (custom ordertype in OpenMRS)?

    Another question, is that  DiagnosticReport.Category cardinality is 0..1. Imagine a CBC order, would category indicate the department (Hematology) or type (lab)?