FHIR Chat · endpoint · IPS

Stream: IPS

Topic: endpoint


view this post on Zulip Jens Villadsen (Aug 23 2021 at 12:48):

@Rob Hausam / @Giorgio Cangioli I would like to add some potential definition for obtaining the IPS as a capability statement on https://hl7-eu.github.io/gravitate-health/index.html. Could you guys provide me with some guidance here? Potentially the capabilitystatement that will be used for the cthon #28

view this post on Zulip John Moehrke (Aug 23 2021 at 13:27):

The way we are thinking of this in IHE... First, the IPS top level profile is what we would use as the FormatCode. Thus in the EndPoint.payloadType element on servers supporting IPS would include that value.
I guess this is the profile on the IPS Composition -- http://hl7.org/fhir/uv/ips/StructureDefinition/Composition-uv-ips

view this post on Zulip John Moehrke (Aug 23 2021 at 13:30):

in IHE (XD*) terms, there really should be a profile identifying a FHIR-Document Bundle containing the IPS. This would be more correctly the concept of a document vs just the Composition resource alone. I don't find this Bundle defined with a profile

view this post on Zulip Peter Jordan (Aug 23 2021 at 23:07):

At this moment, there isn't a Profile on the IPS Bundle in the Current Build, but there was one in the last Connectathon Build and I believe that @Rob Hausam will be merging these for the upcoming HL7 International and GDHP Connectathons.

view this post on Zulip Rob Hausam (Aug 24 2021 at 02:00):

Yes, @Peter Jordan is correct. I apologize to everyone for all the updates taking so long, but I can be pretty confident that this particular issue will be taken care of by the time of our HL7 IPS call on Wednesday (if not sooner).
@Jens Villadsen @John Moehrke

view this post on Zulip Jens Villadsen (Aug 24 2021 at 11:32):

In my mind the IPS bundle could be fetched just as easily by invoking a $summary operation on the Patient endpoint. It wouldn't conflict with XD* but mere act as a supplement / shorthand invocation

view this post on Zulip John Moehrke (Aug 24 2021 at 12:15):

@Jens Villadsen yes. we are working together. The new $summary would also be usable in combination with a cross-community "On-Demand" document entry.

view this post on Zulip Rob Hausam (Aug 24 2021 at 12:53):

Yes - $summary is the agreed preferred option to use, and to test (as far as possible) in the September Connectathon and beyond.

view this post on Zulip Jens Villadsen (Aug 24 2021 at 14:31):

Do you have a capability statement / operation definition somewhere that documents it?

view this post on Zulip Yunwei Wang (Aug 24 2021 at 15:18):

There is a ticket to create an OperationDefinition https://jira.hl7.org/browse/FHIR-32014

view this post on Zulip Jens Villadsen (Aug 25 2021 at 10:12):

@Yunwei Wang I've added the following as comment on the JIRA ticket:

{
"resourceType": "OperationDefinition",
"id": "summary-operation",
"url": " http://hl7.org/fhir/OperationDefinition/Patient-summary",
"version": "4.0.1",
"name": "Find patient summary",
"status": "draft",
"kind": "operation",
"date": "2021-08-08T08:31:20+00:00",
"publisher": "HL7 (FHIR Project)",
"contact": [
{
"telecom": [
{ "system": "url", "value": "http://hl7.org/fhir" }
,

{ "system": "email", "value": "fhir@lists.hl7.org" }
]
}
],
"code": "summary",
"resource" : ["Patient"],
"system": false,
"type": true,
"instance": true,
"parameter": [
{ "name": "identifier", "use": "in", "min": 0, "max": "1", "type": "Identifier" }
,
{ "name": "profile", "use": "in", "min": 0, "max": "1", "type": "uri" }
,
{ "name": "graph", "use": "in", "min": 0, "max": "1", "type": "uri" }
,

{ "name": "return", "use": "out", "min": 0, "max": "1", "type": "Bundle" }
]
}

view this post on Zulip Peter Jordan (Aug 25 2021 at 20:26):

@Jens Villadsen @Yunwei Wang - I'll add this , as an implementer defined operation, to my Server at the weekend.

view this post on Zulip Jens Villadsen (Aug 25 2021 at 22:57):

I'll have one rolling as well within a week that covers Denmark

view this post on Zulip Rob Hausam (Aug 25 2021 at 22:57):

That's excellent.

view this post on Zulip Peter Jordan (Aug 25 2021 at 22:58):

It would be great to test some cross-border exchanges from NZ<->Denmark at the upcoming Connectathons. @Matt Rahn

view this post on Zulip Rob Hausam (Aug 25 2021 at 22:59):

Yes, that's exactly what we are looking for.

view this post on Zulip Jens Villadsen (Aug 25 2021 at 23:05):

Our IPS currently only covers medication and demographics

view this post on Zulip Jens Villadsen (Aug 25 2021 at 23:05):

but it can be expanded

view this post on Zulip Peter Jordan (Aug 25 2021 at 23:06):

Probably needs allergies and conditions (or their recorded absence) to fulfill mandatory requirements. Meds will be interesting - what coding system will you be using @Jens Villadsen ?

view this post on Zulip Jens Villadsen (Aug 30 2021 at 12:47):

ATC for medication is one of them @Peter Jordan

view this post on Zulip Peter Jordan (Sep 02 2021 at 04:29):

@Jens Villadsen , @Rob Hausam , @Yunwei Wang - at the Connectathon we'll need to consider what has to be placed in an IPS instance that is POSTed to a Server so that it can be retrieved by another client. Looking at the draft $summary operation, that probably needs to be a patient identifier which currently has a cardinality of 0...n in the IPS Patient Profile. That's not such an issue within any given domain, but cross-border exchanges raise the issue of whether identifiers will be fully understood (e.g. systems) by both parties. Perhaps we need something like a dedicated IPS system or type plus an agreement to use GUID values to guarantee uniqueness? Further thoughts?

view this post on Zulip Jens Villadsen (Sep 02 2021 at 08:08):

I don't see the need for an IPS system in the identifier as the profile parameter tells explicitly that the request is scoped for IPS - correct?

view this post on Zulip Jens Villadsen (Sep 02 2021 at 08:09):

when profile is set to http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips that is

view this post on Zulip Jens Villadsen (Sep 02 2021 at 08:19):

@Ole Hedegaard :point_up:

view this post on Zulip Peter Jordan (Sep 02 2021 at 08:47):

That would be fine if that's the only patient identifier in the IPS. What if there's more than one, or do you think the cardinality should be 1..1 in the IPS Patient Profile?

view this post on Zulip Jens Villadsen (Sep 02 2021 at 08:57):

multiple identifers should be allowed on the patient IMHO

view this post on Zulip Jens Villadsen (Sep 02 2021 at 08:57):

I would say the cardinality should be 1..*

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 09:09):

..sorry I'm just looking at this conversation ... I'd expect that a "real" Patient has one or more business identifier associated to its record but there are some points that are not totally clear to me: (1) why it shall be 1.. in the IPS profile (2) why a "dedicated IPS system or type plus an agreement to use GUID values to guarantee uniqueness" is needed

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 09:11):

if there is no business identifiers, but I have some identification traits, I assume I can always get the right IPS by calling [base]/Patient/[id]/$summary

view this post on Zulip Peter Jordan (Sep 02 2021 at 11:55):

A [base]/Patient/[id]/$summary request would also need to include the IPS Profile URL. However, if client A POSTS an IPS Summary to my Server and later Client B requests that summary there is no guarantee that either Client (particularly B) will know the ID of that patient on my Server.

view this post on Zulip Jens Villadsen (Sep 02 2021 at 11:56):

The thing about POST'ing an IPS is to me out of scope

view this post on Zulip Jens Villadsen (Sep 02 2021 at 11:57):

I see the IPS summary operation as a facade to an infrastructure that I as a client do not need to know any details of

view this post on Zulip Peter Jordan (Sep 02 2021 at 11:57):

It's in scope for the Connectathon.

view this post on Zulip Jens Villadsen (Sep 02 2021 at 11:57):

why?

view this post on Zulip Jens Villadsen (Sep 02 2021 at 11:58):

How the IPS was constructed seems like a detail that should be unknown to the client

view this post on Zulip Jens Villadsen (Sep 02 2021 at 12:00):

Whether it is POST'ed to the server ahead of it being retrieved or it is created Ad-Hoc / on-demand is beyond the concern of the summary operation, right?

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 12:04):

Peter Jordan said:

A [base]/Patient/[id]/$summary request would also need to include the IPS Profile URL.

Yes but this is implicit in the $summary operation otherwise how do you know which kind of summary you need to return ? (unless the server may configure a default, if not specified it tries to return an IPS...)

However, if client A POSTS an IPS Summary to my Server and later Client B requests that summary there is no guarantee that either Client (particularly B) will know the ID of that patient on my Server.

Yes but the client need to know some identification trait and can use them to have the logical ID back ... even if I recognize that the best option is to try to filter per business identifier

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 12:05):

Jens Villadsen said:

Whether it is POST'ed to the server ahead of it being retrieved or it is created Ad-Hoc / on-demand is beyond the concern of the summary operation, right?

My understanding of the $summary operation is that is up to the server to create the summary on-the-fly or return an existing one

view this post on Zulip Jens Villadsen (Sep 02 2021 at 12:07):

exactly ... meaning that how the server got its hands on the IPS is beyond the scope of the summary operation

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 12:07):

the existing one can be posted by someone else or created by the server in advance (e.g. triggered by an user request )

view this post on Zulip Peter Jordan (Sep 02 2021 at 12:22):

From a server perspective, one has to consider how the IPS instance is to be created , stored (if not created 'on-the-fly') and made available to clients. As I'm not creating them 'on-the'fly', I'm interested in both the POST and $summary request scenarios.

view this post on Zulip John Moehrke (Sep 02 2021 at 14:42):

I would say both.. but as different portions of the specificaiton. I really want the IPS to be a standalone specification about the document profiling. It should not be weighted down by the $summary operation. The $summary operation is absolutely useful and needed, but not everyone that needs the details in the IPS specification need to be weighed down by the $summary (or the discussion on IPA). These are ALL needed, and fine to test at a FHIR connectathon. But they are modular specifications so as to be useful in different context.

view this post on Zulip John Moehrke (Sep 02 2021 at 14:48):

I see many IGs that depend upon each other.

  • $summary IG depends on the IPS IG because it produces an IPS.
  • IPS IG depends on IPA-profiles IG as it orchestrates those profiles into the IPS document
  • IPA-transaction IG depends on IPA-profiles IG as it enables RESTful access to the Resources defined with defined query parameters

possibly others will be part of this depends on relationship like a Patient Management IG, Practitioner Management IG, Organization Management IG. There is already the vHDir that we should seriously consider as providing the defining resources for organization and practitioner.

view this post on Zulip John Moehrke (Sep 02 2021 at 14:48):

making more IGs may be a bit harder up-front; but not all that much harder; and the results will be reusable blocks

view this post on Zulip Jens Villadsen (Sep 02 2021 at 14:58):

@John Moehrke you suggest that an IG is authored that 'merely' contains the capability statement and the summary operation and that it declares dependence to the IPS IG? Is that you idea?

view this post on Zulip John Moehrke (Sep 02 2021 at 14:58):

essentially, yes.

view this post on Zulip John Moehrke (Sep 02 2021 at 14:59):

I don't think that is a 'small' thing. but yes it is rather focused.

view this post on Zulip Jens Villadsen (Sep 02 2021 at 14:59):

its certainly doable

view this post on Zulip Jens Villadsen (Sep 02 2021 at 14:59):

i consider it a 'small' thing

view this post on Zulip John Moehrke (Sep 02 2021 at 15:00):

yes it is possible... did it for Patient management in IHE.

view this post on Zulip Jens Villadsen (Sep 02 2021 at 15:01):

it does have the advantage of a small scope

view this post on Zulip Giorgio Cangioli (Sep 02 2021 at 15:01):

IMHO the $summary operation is not IPS specific so it should be at the same level of the $everything or $document operation... that is or in the core specs or all of them in a separate IG

view this post on Zulip Jens Villadsen (Sep 02 2021 at 15:01):

which makes it easier to agree upon

view this post on Zulip Jens Villadsen (Sep 02 2021 at 15:02):

@Giorgio Cangioli in that case, it would be a profiled use of the summary operation

view this post on Zulip Jens Villadsen (Sep 02 2021 at 15:04):

I guess the bottomline is that it is not of importance where the summary operation is located in terms of IG's/core - the importance is in its stated use - and if it suits everybody better if it is stated i a separate IG - why dont we just do that?

view this post on Zulip Rob Hausam (Sep 02 2021 at 15:14):

Maybe we need to first do some exploration with using the $summary operation, at least in the Connectathon, and that may help us with deciding where the operation should "live" - in the IPS IG, a separate but related IG, or as a more general (not exclusively IPS) operation on the Patient resource documented in the FHIR core specification?

view this post on Zulip Jens Villadsen (Sep 02 2021 at 15:40):

If the idea of the connectathon is to assert interfaces and interactions between systems I cannot see how the result of the connectathon changes anything in this sort of decision - but I may be wrong.

view this post on Zulip John Moehrke (Sep 02 2021 at 17:31):

yes, short term we do what we can.. ultimately it would be great if it eneded up in core. But not all operations need to be in core.

view this post on Zulip Peter Jordan (Sep 03 2021 at 07:49):

$summary operation provisionally defined at https://terminz.azurewebsites.net/fhir/OperationDefinition/Patient-summary

view this post on Zulip Jens Villadsen (Sep 03 2021 at 17:37):

I'll have a test server implementing the $summary operation ready next week on https://gravitate-dk-ips.trifork.dev/fhir/Patient/$summary

view this post on Zulip Rob Hausam (Sep 03 2021 at 18:41):

I'm hoping to have one available for the Connectathon, too. Having two, or more, will be great.

view this post on Zulip David Hay (Sep 04 2021 at 19:45):

@Jens Villadsen you'll ping us here when ready? I'd like to test with the clinFHIR Bundle Visualizer...

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:08):

@David Hay -ready!

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:09):

sry ... had a to go for a 2 day conference abroad and forgot all about time and place

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:11):

invoking the operation with the following:

<Parameters xmlns="http://hl7.org/fhir">
    <parameter>
        <name value="identifier" />
        <valueIdentifier>
            <system value="urn:oid:1.2.3.4" />
            <value value="1206450168" />
        </valueIdentifier>
    </parameter>
    <parameter>
        <name value="profile" />
        <valueUri value="http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips" />
    </parameter>
</Parameters>
  • will return you with an IPS example from the Gravitate IG

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:12):

The use of the profile parameter is in our case mandatory as it says 'what' kind of summary you as a client would like

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:13):

:point_up: (FYI - @Craig Anderson )

view this post on Zulip Jens Villadsen (Sep 09 2021 at 20:19):

Changing the system of the identifier to urn:oid:1.2.208.176.1.2enables you to have a look into a danish test infrastructure

view this post on Zulip Peter Jordan (Sep 09 2021 at 21:46):

An example of invoking the operation with a GET request...
https://terminz.azurewebsites.net/fhir/Patient/$summary?profile=http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips&identifier=https://standards.digital.health.nz/ns/nhi-id|AAA1234

view this post on Zulip Jens Villadsen (Sep 10 2021 at 13:26):

In a danish setting we probably cannot allow GET as HTTP method as the URL would show the patient's social security number, and that is something that you would not like to have stored in proxies

view this post on Zulip John Moehrke (Sep 10 2021 at 13:49):

I really hate this fallacy. GET is no worse at exposing than POST is.

view this post on Zulip Jens Villadsen (Sep 12 2021 at 07:10):

It is worse - as it is usually handed differently

view this post on Zulip Jens Villadsen (Sep 12 2021 at 12:28):

Ofc. you could cache as eBay - but I tend to not see POSTs being cached: https://tech.ebayinc.com/engineering/caching-http-post-requests-and-responses/

view this post on Zulip Craig Anderson (Sep 13 2021 at 14:44):

Hey, @Jens Villadsen , @Rik Smithies

I believe each language should be a separate document. However, we will add that to our list of questions to EMA for confirmation.

view this post on Zulip Jens Villadsen (Sep 13 2021 at 20:07):

@David Hay can't see that the server address is registered in conman

view this post on Zulip David Hay (Sep 13 2021 at 20:14):

Which server is that?

view this post on Zulip Jens Villadsen (Sep 13 2021 at 21:42):

https://gravitate-dk-ips.trifork.dev/fhir

view this post on Zulip Jens Villadsen (Sep 14 2021 at 06:55):

nevermind ... I added it myself

view this post on Zulip Jens Villadsen (Sep 14 2021 at 07:00):

@David Hay - feature request: State the FHIR version of the IG on the Implementation Guide tab

view this post on Zulip Jens Villadsen (Sep 14 2021 at 07:00):

in Conman

view this post on Zulip David Hay (Sep 14 2021 at 07:18):

Hi Jens - as a user entered field? good idea...

view this post on Zulip David Hay (Sep 14 2021 at 07:20):

Also need a way to search the servers, there's a few of them there these days....

view this post on Zulip Jens Villadsen (Sep 17 2021 at 20:17):

yep - btw - my IG happens to be FHIR v4.1.0 ;)

view this post on Zulip Jens Villadsen (Sep 17 2021 at 20:17):

David Hay said:

Hi Jens - as a user entered field? good idea...

the FHIR version is stated in the IG so you can actually compute it automatically

view this post on Zulip Jens Villadsen (Sep 17 2021 at 20:20):

so @Rob Hausam / @Peter Jordan / anyone - where did we end on the $summary operation? should we put it in its own IG. - thereby isolating it and use it as an "optional" IG - or should we forget everything about it?

view this post on Zulip Peter Jordan (Sep 17 2021 at 20:24):

Why wouldn't it be placed in the IPS IG itself, at least for R4; unless the IPA IG would be more suitable? For R5, I'd hope that it will be in the spec.

view this post on Zulip Elliot Silver (Sep 17 2021 at 20:29):

Because putting it in the IG imposes a behavior on any system claiming to implement IPS, and many systems may want to produce IPS documents without supporting the $summary operation.

view this post on Zulip Elliot Silver (Sep 17 2021 at 20:30):

(That's actually an exaggeration. There are ways to put it in the IG without requiring behavior in all systems, but that approach is less common.)

view this post on Zulip Rob Hausam (Sep 17 2021 at 21:18):

Hi, @Jens Villadsen. I think we still need to do some thinking about where and how in the IPS IG we want to document the $summary operation. But I think we should include this in the IG, and I am still intending to accept your pull request.

view this post on Zulip Rob Hausam (Sep 18 2021 at 02:07):

I think @Elliot Silver has made a good point that we need to consider, though (which fits with the thinking that I mentioned).


Last updated: Apr 12 2022 at 19:14 UTC