Stream: implementers
Topic: Identity stability / persistence
Mattias Flodin (Apr 26 2017 at 11:00):
Hi, I have some concerns about the stability of references using URL-based identifiers. My worry is that over time, as systems are upgraded or replaced with competing products but resources are migrated to the replacement system, the URL that makes up the identity will become stale. Also, changes in network naming policy, splitting machines for load balancing, or similar might cause the server part of the identity to change.
Ideally I would have preferred if the identity was more like a URN, i.e. retains the same name regardless of the where it is physically stored. Then I could use a directory to determine where to find a particular resource.
Are there any thoughts / guidance / recommendations concerning this? Is it required that an identity's URL goes to a physical machine, or could it be used more like an XML namespace?
Lloyd McKenzie (Apr 26 2017 at 11:22):
The expectation is that the URL resolve. The whole point is that a server with a reference can execute a GET against that reference. The ecosystem is such that it wouldn't be obvious to a lot of clients what servers to look at to resolve a URN. It's certainly possible that, in time, a referenced resource may "go away", but HTTP provides redirects and other mechanisms to make load balancing transparent to clients. Servers absolutely need to be aware of the impact of changing their base URL on interoperability - and try hard to avoid doing that. If you think stronger guidance is needed in the specification, feel free to submit a change request.
Mattias Flodin (Apr 26 2017 at 11:26):
OK, thanks. I wouldn't consider it part of the specification per se, but "best practice" perhaps. As such it can be documented anywhere really as long as Google will find it. :)
John Moehrke (Apr 26 2017 at 12:10):
You can use URN identifiers in the Patient.identifier; and do just what you describe...
Mattias Flodin (Apr 26 2017 at 12:19):
Hmm, indeed. But on http://www.hl7.org/fhir/managing.html it seems that the canonical identity is a URL. When does that apply in practice?
John Moehrke (Apr 26 2017 at 12:23):
I understood your interest in using URI vs URL; as being a client side or remote app interest... I would expect that a REST server will have appropriate management to always keep internally consistent. Keeping internally consistent for a server is not hard. The breakage of URL vs URI is caused by two distinct systems drifting over time. That can be managed using business identifier, vs resource ID.
Mattias Flodin (Apr 26 2017 at 12:36):
I'm building a hub to act as a facade for potentially hundreds of systems, for integration purposes, and I'm trying to base it on the FHIR data model. For me the main challenge is to route an incoming request for a resource to the appropriate subsystem, based on its identity. So I'm trying to understand the identity model in order to figure out ways to reduce the complexity of the task.
John Moehrke (Apr 26 2017 at 12:53):
okay. so it is useful for you to understand the difference intended between .identifier in FHIR as the 'business' identifier, vs all the URL stuff.
Last updated: Apr 12 2022 at 19:14 UTC