FHIR Chat · CDS Inferences · implementers

Stream: implementers

Topic: CDS Inferences


view this post on Zulip Andrew Ross (Jun 22 2016 at 19:38):

Let's say I have a service that is able to read in patient Observations/Conditions and infer new Observations/Conditions as a result, which it might want to send back to the EHR or expose to the doctor directly.

As a concrete example, imagine I'm given a series of hemoglobin concentration Observations, the most recent of which is a measurement of 8 g/dl (very low) made yesterday, from which our service infers that the patient is anemic. Let's also imagine we have other Observations that indicate the patient does not have an iron deficiency, meaning the anemia is due to other causes.

How do we then expose this information to a SMART app?

One option we're considering is:
- send two Conditions, one for iron deficiency and one for anemia
- iron deficiency has verificationStatus = refuted, anemia has verificationStatus = confirmed
- we reference the associated Observations as evidence
- we leave most of the fields blank, since we cannot reference our service as the asserter and the onset value might be ambiguous (if the condition was inferred from many different observations that were made at different times)

Another is:
- send two Observations, one asserting the patient is not iron deficient and one asserting the patient is anemic
- for their values, use a codeable concept meaning no and yes, respectively
- reference our own service as an Organization under performer, or perhaps as adevice.
- potentially set the method of observation to be something like algorithm
- reference the observations we used to infer them under related with type = derived-from
- maybe set the status to preliminary, since these observations are not registered in the EHR / canonical source of the patient's information.

The Observation case seems to be more applicable, since there is more explicit support for programmatic inferences, but the Condition case maps better to the boolean values.

Anyone have thoughts on this?

view this post on Zulip Kevin Shekleton (Jun 22 2016 at 19:42):

@Andrew Ross - have you heard of CDS Hooks?

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:42):

Do you expect your changes to just immediately take effect (in which case, PUT to replace the bad Observation -- though I should say most EHRs don't and perhaps won't support this), or are they more like suggestions of things the user might do (in which CDS Hooks could be a good interface point)

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:43):

We've definitely heard of CDS hooks, but this is in the context of a more-or-less readonly SMART app

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:44):

If it's read-only, then how are you anticipating "sending" these results?

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:45):

We don't necessarily even want to -- it's informational, and if anything would be sent back to the EHR, it would be a suggested action they opt to complete, not any fact-type resource

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:47):

Essentially, we get a set of FHIR Observations and Conditions from one service, do mapping and inference to expand and/or transform that set, then display something to the doctor within our application

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:47):

Hmm. Well, if you're really "read-only" the best you can do is display a message/suggestion to the clinician. If you can write data, the FHIR REST API is a good fit. If you want to insert concrete suggestions (with action buttons) into the EHR UI, CDS Hooks could help.

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:47):

Right, unfortunately neither of those will work in our case, given the business/design requirements

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:48):

the main question is whether there are any best practices for representing those inferences using FHIR in a way that distinguishes them from the raw/actually-measured observations we're getting from the EHR

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:48):

If none of these 3 is a fit, what more precisely are you looking/hoping for?

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:49):

I'm not clear on what this question means in the abstract (i.e. without understanding who is sending/receiving/consuming/requesting/displaying these inferred FHIR Resources).

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:49):

Well, in concrete terms, let's say you have a service that determines whether a patient is anemic, and whether that anemia is chemotherapy-induced or due to other causes

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:50):

The EHR only sends you basic observations of things like blood concentration measurements of various quantities

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:50):

And you'd like the EHR to invoke this service in a back-end, automated way (no user involvement)?

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:50):

This is in the context of a SMART on FHIR application that has its own UI

view this post on Zulip Kevin Shekleton (Jun 22 2016 at 19:50):

So you can't just show the suggestion in a textual manner in your SMART app UI?

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:50):

the service is launched from within the EHR, but doctors interact with it in a separate screen

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:50):

So when a user launches the app, the app can GET the relevant observations from the EHR.

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:51):

Yes. Now technically we don't need to use FHIR to represent these resources in our SMART app, because it's not actually a part of the integration with the EHR anymore

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:51):

Then doctors interact, and the app can display advice like "this patient doesn't have iron deficiency anemia. Consider eliminating the diagnosis."

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:51):

Right

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:52):

But we're interspersing inferences with other data we're getting directly from FHIR, and generally feel that it's best practice to represent patient data (actual measurements/diagnoses + programmatic inferences) in a common format

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:53):

But it still feels important to distinguish the two

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:53):

Ideally in a way that points back to us and makes it clear that a CDS service made those inferences, not a doctor

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:54):

i think Observation supports all of that

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:54):

but it's not a natural fit for patient facts that are more like diagnoses

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:54):

But you're writing these inferred resources for your own app to consume?

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:54):

Yes

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:54):

Might just slap a tag on 'em

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:54):

Right :) that definitely works

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:55):

Basically I'm just wondering if this is a common use-case in other applications as well

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:55):

and if so, how others do it

view this post on Zulip Andrew Ross (Jun 22 2016 at 19:55):

and/or validating that what we're doing isn't totally ad-hoc

view this post on Zulip Josh Mandel (Jun 22 2016 at 19:56):

Gotcha. I haven't heard of others applying a pattern to this problem, but let's see what we hear from the crowd!

view this post on Zulip Eric Haas (Jun 22 2016 at 20:14):

This use case sounds more like an Assessment ( the A in SOAP) why not use ClinicalImpression to convey the "anemia not due to iron deficiency" ? I am asking out of ignorance since perhaps CDS doesn't align with this at all.

view this post on Zulip Bryn Rhodes (Jun 22 2016 at 21:52):

I've seen this done with production rules that just produce a fact in the working memory of the rules engine. To expose those types of inferences through the CDS guidance operation, we would use a GuidanceResponse that proposed the creation of the Observation resource.

view this post on Zulip Bryn Rhodes (Jun 22 2016 at 21:53):

As far as distinguishing between a real vs an inferred observation, or other type of resource, that's a good use case, and we've talked about it in the context of CDS before, but don't have anything concrete to recommend at this point.

view this post on Zulip Bryn Rhodes (Jun 22 2016 at 21:54):

It seems like a good case for an extension though, that could be applied to any resource, and you could use it to say, "this resource was inferred by a device".

view this post on Zulip Bryn Rhodes (Jun 22 2016 at 21:54):

It's sort of like Provenance, except you want to know it directly on the resource.

view this post on Zulip Eric Haas (Jun 23 2016 at 14:25):

@Bryn Rhodes extension on what? Observation?

view this post on Zulip Bryn Rhodes (Jun 23 2016 at 14:38):

A generic extension that could be applied to any resource.

view this post on Zulip Eric Haas (Jun 23 2016 at 17:23):

@Bryn Rhodes Why not use Observation.device? for example I would think that would cover this use case instead of an extension. Device = CDS system

view this post on Zulip Bryn Rhodes (Jun 23 2016 at 18:36):

For Observation, you're right, I was thinking of something that could be handled the same way regardless of the resource type, so it would work for Condition as well.


Last updated: Apr 12 2022 at 19:14 UTC