Consuming FHIR Resources for OpenMRS

Primary mentorSuranga Kasthurirathne
Backup mentorVaibhav Agarwal
GSoC studentSashrika Waidyarathna


The purpose of this project is to expand upon the OpenMRS FHIR module so that it can consume a subset of FHIR resources and persist them in the OpenMRS database.

OpenMRS has recently undertaken a commitment to implement FHIR in order to ensure better interoperability between healthcare systems. The OpenMRS FHIR module was developed as part of these efforts. Currently, the FHIR module supports the export of FHIR Patient, practitioner, observation, location and Encounter resources. We are also working on implementing support for AllergyIntolerance and Condition resources. During the summer, the student will work to reverse engineer this work so that external applications can also send FHIR resources to OpenMRS.

This task involves understanding the data representation of the FHIR resource and its relationship with the OpenMRS database based on how we export OpenMRS data, and using this knowlege to persist data sent as FHIR


  • Good Java skills
  • Familiarity with J2EE web programming (e.g., JSPs)
  • Ability to learn and work with FHIR and the HAPI
  • Soft skills to interact with the HAPI and FHIR community in order to gather requirements and technical feedback

Project champions


  • Identify the best approach to create and update OpenMRS objects using the FHIR module.
  • Build support for the FHIR module to accept a subset of FHIR resources sent from third party applications. At minimum, the student should complete support for FHIR patient, practitioner, Observation, location, AllergyIntolerance and encounter resources.
  • Support (a) creation (b) conditional creation (c) update (d) conditional updates of FHIR resources
  • Forward an acknowledgement message to third party applications once the transaction is completed

Extra credit

  • Build an audit mechanism to track transactions and their outcome
  • Identify and implement support for additional FHIR resources
  • Add security features to manage transactions