IHE / ITI.mCSD

The IHE Mobile Care Services Discovery (mCSD) IG provides a transaction for mobile and lightweight browser-based applications to find and update care services resources.
https://profiles.ihe.net/ITI/mCSD/index.html
Creative Commons Attribution 4.0 International
4 stars 4 forks source link

Define codes for OrganizationAffiliation.code from Topologies Whitepaper #155

Open jlamy opened 3 weeks ago

jlamy commented 3 weeks ago

Section Number Artifacts Summary

Issue We walked through and identified a handful of needed codes to support the cases in the IHE Topologies Whitepaper, but have not normatively defined them. See section 6.2.1. These mechanisms are being incorporated by HL7 National Directory, and they have had to define these codes themselves.

Proposed Change Define normative codes in mCSD for OrganizationAffiliation.code.

Priority:

jlamy commented 3 weeks ago

One case I'm not sure we have thought all the way through is a federated Initiating Gateway.

In section 4.4.5, I think communities 1.2.7 and 1.2.6 can call each others' endpoints directly (e.g. 1.2.7 can call https://community_one_two_six.org), by virtue of both having HIEInitiator relationships to Lower Network A. But they also have an Initiating Endpoint they can use (https://lower_network_a.org/lower) attached to their HIEInitiator OrgAffiliations. I think this Initiating Endpoint is ambiguous:

I realize I used both concepts in section 5.1.8:

I guess the clients could tell them apart by whether they are cross-community profiles, but I'm uncomfortable with that being the only differentiator. Am I missing something?

slagesse-epic commented 3 weeks ago

The purpose of the Endpoint on an OrganizationAffiliation with code HIEInitiator is, at minimum, to provide an endpoint for .participatingOrganization to access .organization's Initiating Gateway to access resources from outside of the network.

The code HIEResponder's definition implies that it should be the endpoint that is available to other network members:

"This code is used to indicate that the Organization linked in .participatingOrganization is a member of the network headed by the Organization in .organization, and it has an Endpoint that accepts requests from other members of the network that have an HIEInitiator relationship with the network governing Organization. In this case, OrganizationAffiliation.endpoint contains endpoints used by other network members to send requests to .participatingOrganization. "

The algorithm defined in section 4.2.4.2 would prefer "https://community_one_two_six.org" over "https://lower_network_A.org/lower", though I'll admit that the word "satisfactory" is carrying a lot of weight there. The point is to say that if the endpoint is one that community 1.2.7 can communicate directly, it should use that, otherwise it should continue the algorithm (the next endpoint returned is https://lower_network_A.org).

As defined, I think HIEResponder precludes the hub and spoke model some networks use. But if we ignore that, the endpoint that 1.2.7 should use to access 1.2.6 really depends on whether or not it considers 1.2.6's HIEResponder endpoint "satisfactory". That in turn would presumably be configuration based on Lower Network A's network policy. And presumably, if Lower Network A's network policy requires a hub and spoke type model, we would expect their Initiating Gateway to return results from other network members.

I'll also note that we proposed the DocShare-federate-int code to define whether or not federation was available to other network members. Presence of that code indicates that other members of the same network can get access to data via the Initiating Gateway, while absence of the DocShare-federate-int code implies that the Initiating Gateway does not federate requests internally to that .participatingOrganization. So, I think that code removes the ambiguity, though it does look like we forgot to include consideration for this case in the algorithm provided in section 4.2.4.2.

So, TLDR:

jlamy commented 3 weeks ago

Thanks Spencer, I think I follow. I have a few follow ups:

slagesse-epic commented 3 weeks ago

Okay, I think I understand the question now.

I think when making that statement about "HIEInitiator", the intent was to imply that the Initiating Gateway is itself a member of the network, and thus .participatingOrganizations are allowed to make requests of it. And I think it is implied that the Initiating Gateway provides access to external networks, since that is how we've defined the purpose of an Initiating Gateway.

In your diagram, I think the profile is the only programmatic way to distinguish between internal and external communication. This doesn't seem completely inappropriate to me - the profile is also used in other cases where the client needs to select between several different endpoints (patient query vs document query, for example). In this case, the fact that different profiles are used for internal vs external communication would be a property of how clients are supposed to interact with the Initiating Gateway/central infrastructure.

Thanks,

Spencer

From: Joe Lamy @.> Sent: Monday, August 19, 2024 8:26 PM To: IHE/ITI.mCSD @.> Cc: Spencer LaGesse @.>; Comment @.> Subject: Re: [IHE/ITI.mCSD] Define codes for OrganizationAffiliation.code from Topologies Whitepaper (Issue #155)

External Mail. Careful of links / attachments. Submit Helpdesk if unsure.

Thanks Spencer, I think I follow. I have a few follow ups:

- Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/IHE/ITI.mCSD/issues/155*issuecomment-2297789552__;Iw!!BJMh1g!_A5wZKOf1t-uHhG0PAF0V9L0Pe0vLHZoQebB5sI9W4216w4_dq2AhyTcDexev2T42VrNAbgdHxXsafcv9sQzDg$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/AQLZHQOAOSMMAKDGB3BEUJDZSKLJPAVCNFSM6AAAAABMTFCGUOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJXG44DSNJVGI__;!!BJMh1g!_A5wZKOf1t-uHhG0PAF0V9L0Pe0vLHZoQebB5sI9W4216w4_dq2AhyTcDexev2T42VrNAbgdHxXsafeLtRpo6g$. You are receiving this because you commented.Message ID: @.**@.>>