HUD-Data-Lab / Data.Exchange.and.Interoperability

Repository for Homeless Management Information System (HMIS) development and management of products to support data exchange and interoperability
GNU General Public License v3.0
2 stars 5 forks source link

Formalize Burden of ID Translation #11

Open bdavis-pcl opened 2 months ago

bdavis-pcl commented 2 months ago

It is entirely possible I'm missing something basic. I'm trying to understand the workflow of this API as written and I'm left slightly confused. Let's walk through Organizations for example.

First in my system I build my Organizations json object, for the purposes of clarity here is my example:

{ "organizationId": "12345ABC", "organizationName": "The PCL Test", "victimServiceProvider": null, "organizationCommonName": "PCL Test", "dateCreated": "2024-01-01T00:00:00Z", "dateUpdated": "2024-01-01T00:00:00Z", "userId": "12345", "dateDeleted": null }

I post this to another HMIS system via /organizations. For the purposes of this scenario, let's just say it is successful. I get the message back 201 - "Organization successfully created." So now I want to check this data in the other HMIS system. According to the code as written I simply call "/organizations/12345ABC?" What is the ID in the other HMIS system?

My confusion is on whose OrganizationID is the OrganizationID for the purposes of this Get request?

Should I, as the person receiving the request, keep a record of OrganizationID given to me by the requestor? How do I keep track of what OrganizationID goes with which requestor?

Would it be better to communicate what the OrganizationID is in the HMIS system to the requestor? For example "Organization successfully created. The OrganizationID in this system is XYZ98." Putting the burden on the requestor to know the new ID for any future calls?

This is similar, but not quite the same as Issue 1, as a list could help facilitate this communication. It is also talked about in Issue 7, when dealing with deduplication of Clients. It would be helpful to formalize who the burden of translation is on. Is it the requestor who needs to keep track, or is it the responsibility of the requested system to translate any ID given to match previously given IDs?

This should apply to every ID/Unique identifier that is used for a Get, Put, or Delete.

TomNUSDS commented 2 months ago

I'm new to the project, but I understand the question and am attempting to get an answer.

TomNUSDS commented 1 month ago

This is in progress in the API.

New records will return the ID, similar a database insert.

There will be "summary" endpoints that will return paginated lists based on search parameters. (Still being defined). The resulting list will include summary data and ids.

Does this sound like it will address your concerns? @bdavis-pcl

bdavis-pcl commented 1 month ago

Yep, that sounds like it will handle my concerns stated here.