Domain Model for Medical Administrative Record System(MAR) for IPD purpose

Hi @dkayiwa @grace @ibacher @mogoodrich @mseaton @mksd We have a requirement to create medical administrative record system(MAR) for IPD purposes (like a Patient chart) for one of the Bahmni implementations, that are going to use Bahmni across paediatric care hospitals. As far as we know OpenMRS doesn’t directly have a domain model for MAR. We intend to store drugs ordered in DrugOrder (same place as we do for OPD), but also additionally leverage the Task Model

  1. To add a schedule for patient on which medicines are to be administered when.
  2. And then use task completion as a way of tracking medicine administered or not while generating an MAR view on the UI.

We want to know if OpenMRS community has suggestions on data model representation of MAR, or does the above method sound good (Drug Order + Tasks)? Any additional suggestions/concerns/inputs on MAR will be helpful. We will share more once we have progressed further, but wanted to understand community point-of-view on this early.

cc/ @angshuonline @gsluthra @abhinab @kavitha11

I think the zillion dollar question is, what about that UI?

Is this going to be 1) a piece of UX that will be usable in O3 or 2) something inextricably embedded into Bahmni EMR?

1 Like

Some previous discussions on OpenMRS talk related to MAR.

  1. What is the best way to implement observations form in OpenMRS 2x?
  2. New Ideas for new OPENMRS
  3. MAR(Medication Administration Record) functionality in OpenMRS

There seems to be general agreement in the above discussions about MAR / Drug, but no specific direction on how to implement it in OpenMRS or its domain model. Most people seem to attempt it via HTML Forms Module.

I guess in Bahmni team’s case, the MAR is similar to what we see here: Old document: MAR CONCEPT NOTE (for IPD purposes, where a nurse is tracking the drug order schedule and giving drugs (with signoff), to patient as per schedule). I think if you intergate it with “tasks”, then you are also creating a “schedule” and can give “reminders” to indicate when a drug is due or missed.

I feel this is a functionality that is important for most IPD use-cases, and both OpenMRS/Bahmni will need it when deploying EMR in an IPD environment.

Not the most important thing, but MAR = medication administration record, i.e., it’s a record of medications administered to the patient.

So, there are two options for modelling the MAR itself:

  1. Use an ObsGroup with a defined structure (probably something similar to CIEL’s ImmunizationHistory or ProcedureHistory if there isn’t something there already).
  2. Create a domain model in OMRS, likely via a module.

1 has the advantage of being implementable with no code changes other than w/e features you want to build on top of the actual record. The down-side is that Obs really only can be used to record something that did happen, so if there’s a requirement to model, e.g., in-progress administrations, you’d probably need to implement a new domain object.

Do you mean the Task stuff in the FHIR2 module? Because I’m not sure that’s implemented in a way that will actually scale well with a large number of tasks. We might need to discuss this further…

At a first pass, this seems a reasonable way to model a workflow that would result in a MAR, sure, assuming that the order has enough structured data that you can calculate the expected administration times.

A few things (some of them discussed in the Concept Note @gsluthra linked):

  • Do we do anything if an expected administration is missed?
  • Do we require a mechanism for recording drugs that are not pre-ordered?
  • How would you want to handle the case where the user affirmative does not administer the drug?
  • Do we need to do anything to track the drugs themselves in progress? (MAR systems are often integrated with a pharmacy system to give a “closed medication loop” that allows tracking the drug from when it leaves the pharmacy until it’s administered to the patient).

There’s probably some considerations I’m not thinking of and having input from, e.g., @burke and other clinicians in the community could be very useful on this point.

1 Like

PS We did something a little similar with MedicationDispense recently. With that, we took the path of basically porting the FHIR model (with some changes) into a core data model (part of 2.6.0). The requirements here, though, are a little more complex since you generally have:

  1. A workflow for working out what drugs are to be administered when
  2. An immutable record of the actual administration

Personally, I would see the use of observations for medication administration data as a workaround (i.e., temporary hack), since medication administration – analogous to medication dispensing – is information about administration events that are related to a patient, and are not really clinical observations.

A proper model for medication administration would align with FHIR’s MedicationAdministration and allow for details about the administration (status, when administered, actual dose given, who administered the medication, etc.). This could be introduced as a core module (i.e., a module that breaks module namespacing convention to introduce core resources +/- APIs), assuming we will need to iterate on the model more rapidly than the platform release cadence and to introduce the functionality on already-released versions of the platform.

Also, just as dispensing at an enterprise level is often performed by a separate pharmacy system, medication administration (a MAR) is often a separate system from the EMR at an enterprise level. This is another reason for having a module that provides basic MAR functionality with an assumption that MedicationAdminsitration data will eventually be coming in from another system.