Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Primary mentor

Backup mentor

Assigned to


Abstract

FHIR is an emerging standard for healthcare interoperability. While OpenMRS has been an early adopter of the FHIR standard and there has been some work done on it already, there is a scope to do more in that area. FHIR defines a very detailed API for searching that is fundamental to providing the correct data to any front-end application. Currently, the OpenMRS FHIR module supports a good amount of search functionality including the capability to search across multiple properties and support advanced search parameters such as _include/_revinclude along with pagination.

This project aims to extend the FHIR module to include support for extended operations. Operations (for these purposes) serve as stored queries where there is some logic built into the semantics of the operation itself. For example, the $lastn operation on the Observation resource (invoked using [base]/Observation/$lastn?subject=Patient/123&max=3 endpoint for example) should return the most recent 3 Observations associated with the specified Patient reference. The aim is to implement extended operations that would prove useful for clients using the FHIR module.

Project Champions

Skills Needed

  • Good Java skills
  • Familiarity with SQL
  • Bonus points for familiarity with Hibernate and especially the Criteria API
  • Bonus points for knowledge of how to write efficient queries and how to optimise queries

Objectives

  • Define, implement and execute the following extended operations on the Observation resource:
    1. $lastn → The operation to fetch the most recent N Observations corresponding to the specified Patient resources.
      URL: [base]/Observation/$lastn?[query]
    2. $lastn-encounters → The operation to fetch all Observations matching the most recent N Encounters corresponding to the specified Patient resources.
      URL: [base]/Observation/$lastn-encounters?[query]
  • Improve the implementation of Observation.category to allow for enhanced filtering using the $lastn-type operations. In essence, helping in filtering out the "vitals" from other types of Observations.
  • Define, implement and execute the $everything instance-level operations on:
    1.  Patient resource → The operation to fetch all the information related to the specified Patient reference including links to any other resources.
       URL: [base]/Patient/[id]/$everything
    2.  Encounter resource → The operation to fetch all the information related to the specified Encounter reference including links to any other resources.
      URL: [base]/Encounter/[id]/$everything

Extra Credit

  • Implement the $everything type-level extended operation for Patient (URL: [base]/Patient/$everything) and Encounter (URL: [base]/Encounter/$everything) resources.

Resources / Getting Started

  • No labels