Connect OpenMRS With Hapi FHIR

Hello everyone, I research about FHIR for my task of school. I want to connect a hapi server with Open MRS , all were built by tomcat . Can i do it and how to do?

1 Like

Take a look at the OpenMRS FHIR module. It uses HAPI FHIR. Wiki page here.


Thanks @burke for that link shared, am actually also taking a research about exporting openmrs data using FHIR application resources


Welcome @nhanpdt and @sharif to OpenMRS! There is quite a bit of interest in FHIR that is coming up lately. @ssmusoke, @jdick, @valvijo, @darius, @lober, and @pmanko are also interested in additional FHIR work. What use cases are you trying to address with your FHIR research?


I see a few threads about FHIR.

Your question is about using HAPI FHIR as a backend data store for OpenMRS, I think, @nhanpdt ? Or, did you mean some other type of data connection?

@sharif asked, I think, about exposing OpenMRS data as FHIR resources, so REST queries can be made to read and write data stored in OpenMRS (This, I think, is what the OpenMRS FHIR module referenced by Burke addresses)

I know @pmanko is interested in this area

@ssmusoke wrote a post which I think was about generating a report using OpenMRS and then exposing elements of that report as FHIR resources (so they could be queried). That’s interesting because it exposed derived/reported values rather than clinical observations or other data stored directly within OpenMRS.

Where should we clarify those use cases and determine how they relate to FHIR, and to the work that has already been done - or that others are interested in doing?

A slack channel for disussion, until we have some shared understanding?

A new Talk thread on “FHIR use cases?”

One of the existing FHIR threads?

Any of these are good with me. I’m looking forward to the discussion, and to learning whether my short summaries, above, are accurate!


@lober I am using a report to extract observations across different encounters to create a “faux” longitudinal record.

The initial use case is to extract all the observations from a single encounter (I am assuming that my report which already exists) can be used but I am not stuck to it, if I can find a way of selecting encounters between specific dates - that would also work

The bottom line is I want to be able to pick data, send it to a selected end-point

1 Like

@ssmusoke - that makes sense. It’s kind of similar to what I meant - assuming such a report exists, you want to read the variables from the report, rather than what might be the exact same data in the openmrs database. So, it’s not different than reading a computed value, I think.

Setting aside, for the moment, whether that is hard, or whether it is a good idea, I think your use case could use slightly different terms. The “FHIR end point” is where the data are read or written, and the client is the thing accessing the end point. So, if you want to “send data” to an external system, then external system would need to read FHIR resources exposed by OpenMRS, on an OpenMRS FHIR endpoint, rather than the other way around.

So, back to the idea of exposing data from an OpenMRS-generated report as FHIR resources… I think the usual paradigm would be to query the FHIR resources exposed by the FHIR module from the OpenMRS database, rather than by an intermediate view/report. As to the goal of filtering out, or querying only the observations from a specific encounter, perhaps @burke or @pmanko could speak to that?

1 Like

@lober Yes that is the approach that I would rather use, but do not see how to query the FHIR resources, and get them packaged into a request to the external system - we are looking at using FHIR as the integration language between different systems - which is why I am looking into this use case.

If the functionality is not available then I will go the hard route to build a FHIR render for the report and send out - which will be sad but the pressure to deliver is there

1 Like

So, I think your comments support my thought that we need a place to lay out the various FHIR use cases, determine their similarities, the infrastructure we need to support them, etc. (Where should we do that, @burke?)

The use case I’d add is that I think OpenMRS should be able to host SMART on FHIR apps for two good reasons.

  1. To simplify the OpenMRS developers learning curve by adding a well documented, uniform approach to writing components (interoperable modules designed to expose a UI within OpenMRS). A simpler path for developers would reduce the barriers to adoption.

  2. To allow SMART on FHIR apps to be developed against OpenMRS, attracting a broader community of health software folks to OpenMRS. There is a need for a good, open source platform against which to develop SMART on FHIR apps. Currently the choices are a series of not-very realistic sandboxes, or the specific dev programs of Epic, Cerner, Chipsoft, Allscripts, GE, etc. (some of the US/EU vendors who’ve endorsed SMART on FHIR), all of which have limitations.

Technically, I think OpenMRS acting as a SMART on FHIR host is mostly the functionality in the FHIR module, but there are probably some significant details to explore - such as the extent of FHIR coverage in the module vs spec, SoF specifics for OAuth support, supported FHIR version(s), etc.).

Again, I know this is an area @pmanko has been thinking about also.

1 Like

Thanks @janflowers, my initial use case about FHIR was about exporting openmrs data using FHIR application resources, Conceptually j have really gained and got an insight of where to start from my fellow friends @lober and @ssmusoke. thanks


@ssmusoke thanks , for that insight. could you post that link you wrote about generating reports using openmrs then exposing the elements as FHIIR rsources, jthink it will give me more details, thanks

1 Like

thanks @lober, j really gained from your conversation with@ssmusoke, but j would suggest a new talk thread on FHIR use cases beacause it will expose all questions and answers about using FHIR in openmrs

1 Like

I have actually fallen down on my responsibility to help the FHIR standard along within OpenMRS… I have been focused on the terminology within OpenMRS and not the messaging standards. I think there is a lot going on with FHIR, and the resources themselves require an overarching information model to assemble them into a cohesive picture. There are even pending FHIR standards on bulk moving of patient data.

There are certainly lots of folks who think that they can extract patient data in FHIR resources and then use that version of the data for downstream processing. That seems to work better for population health than an individual longitudinal record, but would love to see examples of the latter.

@janflowers, please include me in your list of interested parties going forward :slight_smile:


your welcome @akanter ,lets see how we can solve this issue of using FHIR, but j think we should schedule a meeting online may be using IRC on this FHIR to find the best of really to use it because its very vast api. cc @janFlowers, @ssmusoke,@Burke, @lober, @j-joseph, @d-kayiwa, @mozzy, we need help on this issue. thanks

1 Like

This is great thread, and though perhaps not completely new ideas/requests (as mentioned there are other talk threads), a nice place to perhaps restart the conversation.

I strongly believe that we ought to move completely to FHIR api’s and when possible deprecate the existing OpenMRS rest ws api’s. Moreover, as new modules/resources are developed, I believe we should be only creating fhir api’s on them (unless no agreed upon fhir standard exists).

Moving to FHIR is a game changer for openmrs and makes this a much more relevant project thinking into the future.

There are multiple tactical ways that we could move this overall project forward. I think it’s a great idea to layout various use cases as a means of informing the discussion. I believe @burke has also some preliminary recommendations on various architectures.

Great to be moving this idea forward.

@lober, I started a slack channel on this.


The microfrontends squad is looking at options for making the new UI ready for FHIR and Smart on FHIR when the OpenMRS backend has more support for the FHIR REST APIs. Including using a modified version of the Smart on FHIR js client that is able to call non-FHIR REST endpoints where OpenMRS FHIR APIs do not yet exist.

There’s no RFC proposal or decision about this at all, yet, but I’m just sharing that we’re interested in trying to push towards the OpenMRS UI using FHIR.


@joeldenning - agreed that there is a close tie between microfrontend activities and FHIR. I think there’s some value thinking about aspects of each that are independent, also. So, I like that we now how two slack channels. I’d like to see us use the slack channel JJ set up to talk “from the top down” about ways in which we might propose using FHIR in OpenMRS. I think for the microfrontend activities, the most obvious way is supporting access to OpenMRS data via FHIR REST APIs. But, there are a couple of other ideas in this thread, and in many prior threads.

@jdick - I completely agree my ideas are not new. @janflowers seeded some of the discussion by gathering a list of Talk threads pertaining to FHIR and sharing that list with me. Maybe she would post it to your thread? (or, I will, with credit to her, eventually)

ALL - JJ set up a slack channel for further FHIR discussion. Here’s a link that will get you there: (that link was to the first post - it seems flawed. Try this one:

If you’re not on the OpenMRS Slack workspace already, I think that link will probably prompt you to create an account - it’s a public workspace so anyone self-join.

1 Like

(hopefully this won’t turn into a discussion of one type of communication tool vs. another, but I think many of us are interested in knowing whether we can effectively broaden our reach by moving some discussion to Slack, or whether that alienates Talk users who find it hard to make that transition. We don’t want that experiment to get in the way of moving forward on FHIR though so we’ll try to post relevant links in both)

1 Like

Ironically, the Slack link to the first post isn’t working for me right now - try this one: . (for those who care, it turned out it was the Epic Browser proxy server that was causing Slack to fail - I often use Epic for testing “what if I was not logged in”)

@sharif @akanter @nhanpdt @ssmusoke - I’ve summarized what I could of your use cases in the following slack post:

come join us there…

Talk won’t let me make more than 3 consecutive posts, and I have other work I need to do, so I’m done for the day. Thanks @jdick, for the inspiration!