it seems a quite basic question, but I am still not clear what’s the best practice in industry.
As you know, in both Dicom and HL7, patient has id and issuer, ( or assigning authority in HL7)
for example, in HL7 PID3 ,
subcomponents of assigning authority : <namespace id (IS)>&<universal ID (ST)>&<universal ID type code (ID)>
In FHIR, patient has identifier , so quite straightforward, we can use the identifier’s value to represent the patient id.
for issuer, we first wanted to use system to represent, it also looks quite handy, because we have a very common user case that search patient via patient id + issuer, then we can use issuer|id to search, like NHS|PA12345
unfortunately, this violate FHIR’S constraints, because the system is an uri, here it need to be a full url or a string start with ‘urn’.
One of the possible solution is we declare system as below
but what if we also want to support universal ID and universal ID type code
wondering the constraint to system under Identifier, is it too strict?
and what’s best practice for patient id handing in FHIR?
Thanks in advance.
In the Identifier data type, the system doesn’t represent the “issuer” it represents the namespace. The issuer could change over time - government departments get merged, split, renamed; companies get purchased or sold or spin off portions of their operations. The Identifier.assigner is the organization responsible for the issuing identifier.
The identifier system represents the “pool” of unique identifiers from which a given identifier value is drawn. In some cases, the same organization may manage multiple different identifier systems - and thus be the “issuer” of all of them. They might even be of the same type. For example, if the organization re-issues identiifers starting every ten years, you’d have one Identifier.system for the pool of numbers from the 1980s, a different Identifier.system for the pool of numbers from the 1990s, etc. system + Identifier.value would thus be guaranteed to be globally unique (ignoring all other components), even if the “assigner” had issued the same Identifier.value multiple times over the decades to different individuals.
In practice, HL7 v2’s notion of “assigning authority” is supposed to be the same as FHIR’s notion of system - that’s why newer versions of v2 also support “assigning organization” as a separate element. However, the understanding of “assigning authority” = namespace was not clearly defined in v2 and thus not consitently implemented. In FHIR, it’s very clearly asserted. And it being a URI helps to keep it from being misused.
Best practice in FHIR is to assign a meaningful (and legal) URI to each identifier namespace and establish a mapping from v2. Sometimes the assigning authority string alone will be sufficient to map. In other cases, you may need to look at other elements as well.
Would be worth you joining INTEROPen. We are reviewing FHIR profiles and how they may need extensions . Www.interopen.org.
On a practical level a urn can be an OID so in London we use the NHS No OID to define this and a local Trust OID if we want to capture an MRN
While OIDs can be expressed as URNs, they suffer from a lack of human-readability. Meaningful URLs are preferred - even if it means mapping must be performed when interoperating with legacy systems because it means that the FHIR instances are easier to develop and maintain and the learning curve is lower.