FHIR Chat · Operation Name · bulk data

Stream: bulk data

Topic: Operation Name


view this post on Zulip Dan Gottlieb (Jan 28 2018 at 15:20):

Several folks at the connectathon have pointed out that $everything may not be an ideal operation name to kick off a bulk data export. In particular it seems confusing to have a \Patient\[id]\$everything that generally won't support async and \Patient\$everything that will.

view this post on Zulip Dan Gottlieb (Jan 28 2018 at 15:20):

We wouldn't change this today, but what do people think about defining the endpoints as \Patient\$export and \Group\[id]\$export (Josh's suggestion) or \Patient\$bulkdata and \Group\[id]\$bulkdata (Jason's suggestion)? Post a message below with $everything, $export or $bulkdata (and optionally a justification) to vote!

view this post on Zulip Grahame Grieve (Jan 28 2018 at 15:21):

I don't understand this: "In particular it seems confusing to have a \Patient\[id]\$everything that generally won't support async and \Patient\$everything that will."

view this post on Zulip Grahame Grieve (Jan 28 2018 at 15:21):

and are you just asking about renaming, or are you proposing different semantics?

view this post on Zulip Dan Gottlieb (Jan 28 2018 at 15:24):

Just renaming - my point is that currently $everything on a single patient is a synchronous request

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

only if you ask for it that way

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

my server supports async on any GET

view this post on Zulip Dan Gottlieb (Jan 28 2018 at 15:26):

Sure, but not all servers will support all options on all request types and bulk data requires async support while single patient requests don't

view this post on Zulip Grahame Grieve (Jan 28 2018 at 15:27):

true. but that doesn't change the semantics

view this post on Zulip Dan Gottlieb (Jan 28 2018 at 15:30):

Yup, but for clarity I think having an operation that will often only support async be distinct from one that will often only support sync would make sense

view this post on Zulip Grahame Grieve (Jan 28 2018 at 15:31):

we get into trouble differentiating semantics because they're often implemented differently for performance reasons (though we have done in a few places)

view this post on Zulip Vladimir Ignatov (Jan 28 2018 at 15:37):

I wonder, if we rename these and give them dedicated async endpoints like ".../$export", then why do we even need to send the "prefer: respond-async" header?

view this post on Zulip Josh Mandel (Jan 28 2018 at 15:40):

@Grahame Grieve On semantics, I'd think that giving distinct names to frequently-async operations would help with this confusion and lead to more consistent performance, no?

view this post on Zulip Danielle Friend (Jan 28 2018 at 15:44):

Additionally, $everything is already defined at [base]/Patient/$everything and has different parameters than we're recommending for bulk data.

view this post on Zulip Danielle Friend (Jan 28 2018 at 15:44):

It also has a different expectation (whether required or implied) that data is returned paged/in a bundle, not in ndjson files.

view this post on Zulip Danielle Friend (Jan 28 2018 at 15:46):

And.. is it expected that $everything go normative this year with patient? That seems like it would severely limit our ability to mature the bulk data specification on its own timeline.

view this post on Zulip Grahame Grieve (Jan 28 2018 at 16:14):

  • we haven't decided whether $everything goes normative or not.
  • Danielle is actually arguing the semantics are different
  • but the return expectations are in the mind of the beholder; they're not different for me
  • renaming purely for performance might help if there is a sweet spot for differentiation, but it could also be very confusing

view this post on Zulip Jason Walonoski (Jan 28 2018 at 16:19):

I vote for a different operation name. $bulkdata or $export. The operation is different than $everything -- should have a different name. It also violates the definition of an operation, I think. Can't POST Parameters, for one thing. It is different. Deserves a different name.

view this post on Zulip Phil Langthorne (Jan 28 2018 at 16:27):

+1 to $export

view this post on Zulip Grahame Grieve (Jan 28 2018 at 16:41):

@Jason Walonoski I didn't follow parameters issue

view this post on Zulip Dan Gottlieb (Jan 28 2018 at 16:43):

General question - if we do go with $export, should you be able to call \Patient\[id]\$export in addition to the current \Patient\[id]\$everything to run an async export to ndjson?

view this post on Zulip Danielle Friend (Jan 28 2018 at 16:48):

@Dan Gottlieb sounds good to me.

view this post on Zulip Jason Walonoski (Jan 28 2018 at 16:54):

Parameters issue (as I perceive it): http://hl7.org/fhir/STU3/operations.html#executing

You are supposed to be able to execute an operation with a POST of Parameters or a Resource or a GETif it is idempotent. So, right now bulk data fits under the GET/idempotent rule... but is it expected that operations should also support the POST? I may be muddying the waters here.

view this post on Zulip Grahame Grieve (Jan 28 2018 at 17:23):

servers can choose to support POST - but so what?

view this post on Zulip Bas van den Heuvel (Jan 29 2018 at 21:47):

my server supports async on any GET

mine too :)


Last updated: Apr 12 2022 at 19:14 UTC