FHIR Chat · Appointment subscriptions · subscriptions

Stream: subscriptions

Topic: Appointment subscriptions


view this post on Zulip Josh Mandel (Sep 24 2018 at 19:52):

Can someone help me with a gloss on http://www.fhir.org/guides/argonaut/scheduling/patient-scheduling.html -- what do operations like $find and $prefetch provide instead of regular FHIR search interactions?

view this post on Zulip Jens Villadsen (Sep 24 2018 at 21:19):

Looks like a custom way to require fixed set of parameters ... but what do I know ... :neutral_face:

view this post on Zulip Josh Mandel (Sep 26 2018 at 20:46):

@Eric Haas do you have any background you can share on this?

view this post on Zulip Eric Haas (Sep 26 2018 at 21:20):

The operations are like api calls to a black box appointment scheduler. You plug in your requirements and it returns some options. There is no expectation of a set of FHIR open Slots or open Appointments stored in a server ready to be queried. where a search would work. @Cooper Thompson and @Brandon LaRue can speak to the real world functionality a bit better than I.

view this post on Zulip Josh Mandel (Sep 26 2018 at 23:11):

Okay -- I'd like to understand the distinction. Is it that only a limited set of slots will be returned?

view this post on Zulip Grahame Grieve (Sep 26 2018 at 23:12):

search only applies to existing things. the operation creates new things. I think that's the difference here

view this post on Zulip Eric Haas (Sep 27 2018 at 01:01):

The server would determine how many proposed appointment times or slots to return based on the input parameters. There is a parameter for the client to limit the number but that is a suggestion really. Note for $find these are proposed appointment times and they could disappear by the time you try to book. For prefetch the client server does all the work to determine the appointments instead of the EHR's Scheduling Server, So the EHR sends them a bunch of open slots periodically refreshing them so they can present appointments to the end user based on their ( Client Server's) logic and business rules. This is very similar to booking a flight for the end user you get a set of choices and then book.

view this post on Zulip Eric Haas (Sep 27 2018 at 01:06):

... and as GG points out there is no such thing as a pre-existing set of open slots/appointments to choose from. These are all created on the fly all the time. Even the idea of discrete slots is often not how these systems work they have varying chunks of time and the slot are virtual... Brandon has a lot experience with this and can explain it in great detail.

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:34):

Grahame Grieve: search only applies to existing things. the operation creates new things. I think that's the difference here

Wait, $find creates new things?

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:35):

Maybe I'm just confused by the name, in this case. @Brandon LaRue, I'm subscribing you here (zulip prompts me that you're not in this channel).

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:36):

find sounds like a domain appropriate name (e.g. 'find the next available slot') but a bit confusing from a FHIR search perspective, since at the API level, it's not 'finding' a resource

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:36):

Like in the example, $find is returning Appointment resources with ids and everything (e.g., "id": "proposed-appt-3"). Do they not then exist on the server?

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:37):

not sure. I think they would by then

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:39):

(I mean, I suppose the answer is "there is no general purpose fhir server" -- but if that's the case, it seems like the regular fhir search interaction would have served as well.)

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:41):

you mean, if there was a general purpose server that had a fully populated set of slots, then you could find the next available appropriate slot simply by doing a search?

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:41):

well, that and also for a limited-purpose server that just invented slots on the fly (and kept them around until they were confirmed by a client or timed out).

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:43):

not sure how search would work for the second case.

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:44):

Just the same way that $find does -- but it would be invoked via GET /Appointment

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:44):

also, if you had fully populated slots, is there any flexibility around their length? Is everything always 7 minutes?

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:44):

what's it finding?

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:46):

http://www.fhir.org/guides/argonaut/scheduling/OperationDefinition-appointment-find.html really describes visit types rather than explicit lengths.

view this post on Zulip Grahame Grieve (Sep 28 2018 at 04:47):

I think that's another reason why the search semantics are not appropriate in this case

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:50):

Appointment supports search by serviceType; it's not entirely clear to me that this wouldn't fit -- where a special-purpose server would examine its schedule, and your search, and return a set of Appointments that fit the criteria (but I do take your point).

view this post on Zulip Josh Mandel (Sep 28 2018 at 04:51):

To be clear, I _like_ the explicit rpc style here. It just makes me think we should be using it more broadly (or be able to articulate the distinction).

view this post on Zulip Eric Haas (Sep 28 2018 at 06:20):

I think the FHIR documentation outlines pretty clearly why we use an operation in this case: http://build.fhir.org/operations.html#3.2.0

view this post on Zulip Josh Mandel (Sep 28 2018 at 13:44):

I agree -- it's just "active role" is kind of slippery when your server is anything other than a rote FHIR store.

view this post on Zulip Grahame Grieve (Sep 28 2018 at 13:47):

why?

view this post on Zulip Josh Mandel (Sep 28 2018 at 13:54):

Just because there is some logic to apply -- you may be for example of inferring the "existence" of a resource

view this post on Zulip Josh Mandel (Sep 28 2018 at 13:55):

I'm not deeply bothered by this. Just musing...

view this post on Zulip Grahame Grieve (Sep 28 2018 at 13:56):

question is whether the inferring behaviour is explicit to an API consumer

view this post on Zulip Josh Mandel (Sep 28 2018 at 15:03):

Like, consider a FHIR search endpoint for medications where the server decorated the medication ndc codes with rxnorm codes, but only if for certain consumers.. where does that fit on the spectrum? Does it matter it has explicit inline hints from the client, vs static preferences? Is that no longer a search, and crossing into $find-and-translate (or whatever) territory?

view this post on Zulip Josh Mandel (Sep 28 2018 at 15:04):

Again, really just musing here.

view this post on Zulip Grahame Grieve (Sep 28 2018 at 15:25):

not sure


Last updated: Apr 12 2022 at 19:14 UTC