hl7au / au-fhir-base

AU Base FHIR Implementation Guide Source
36 stars 26 forks source link

Inherited extensible bindings are misrepresented in profiles #737

Closed RichardTON closed 1 year ago

RichardTON commented 2 years ago

There is a problem with the use of extensible bindings in AU Base.

When an element has an extensible binding to a value set, conformant instances must include a value from that value set if one is appropriate. R4's description of extensible includes

If there is at least one applicable concept in the extensibly-bound value set with a meaning which includes but is more general than the meaning that is intended to be represented by the element in the resource instance, then the code that is used in the instance SHALL be taken from the value set and should be the closest available match for the intended element instance meaning (i.e. neither more general or more specific). However, a more specific code that more completely represents the intended meaning may also be included in the instance as an additional Coding if the data type is CodeableConcept, but it cannot be used instead of the code from the value set. This helps ensure that systems know which codes they should expect to receive and build logic for and it facilitates interoperability.

The CI build of R5 has new wording for extensible with the same meaning. Related Zulip threads include Extensible binding of Identifier.type and Vocabulary WG survey on FHIR extensible binding strength.

This has not been made obvious in some HL7 AU Base profiles, they imply that it is enough to use a code from an extended version of the value set.

For example, Encounter.class in R4 is bound extensibly to V3 Value SetActEncounterCode. This includes the code VR. In AU Base Encounter class is bound to a value set with extra codes. All of the extra codes are subsumed by VR, so all conformant instances with one of the new codes need to also include VR, and there is no hint of this in the profile, or in the examples.

This problem also applies to many of the AU Base profiles of Identifier, as Identifier.type in Core has an extensible binding to IdentifierType. Note that the descriptions of the codes have been updated between R4 and R4B.

The descriptive parts of the profiles and examples need to be updated so that implementers are not misled.

See also https://jira.hl7.org/browse/FHIR-37739

RichardTON commented 2 years ago

Review of profiles of Identifier in AU Base

Profile Candidate codes Problem Effect
AU Accession Number   Required binding to valueset with code outside IdentifierType Some conformant instances need two codings. For example, sending LACSN requires sending ACSN as well.
AU AHPRA Registration Number - A unique sequence of characters assigned to a health practitioner to indicate registration to practice in Australia PRN Required value subsumed by one in IdentifierType PRN is needed
AU Care Agency Employee Identifier PRN Required value subsumed by one in IdentifierType PRN is needed
AU Commonwealth Seniors Health Card Number SB Required value subsumed by one in IdentifierType SB is needed
AU CSP Registration Number none Required value subsumed by one in IdentifierType PRN is needed
AU Delivery Point Identifier   No probs  
AU DVA Number JHN? Required binding to valueset with code outside IdentifierType JHN is needed
AU Employee Number   No probs  
AU ETP Prescription Identifier none Required value subsumed by one in IdentifierType PLAC is needed
AU G-NAF Identifier   No probs  
AU Health Care Card Number SB Required value subsumed by one in IdentifierType SB is needed
AU HPI-I PRN Required value subsumed by one in IdentifierType PRN is needed
AU HPI-O PRN Required value subsumed by one in IdentifierType PRN is needed
AU IHI JHN Required value subsumed by one in IdentifierType JHN is needed
AU Insurance Member Number   No probs  
AU Local Dispense Identifier   No probs  
AU Local Order Identifier   No probs  
AU Local Prescription Identifier none Required value subsumed by one in IdentifierType PLAC or FILL is needed, what if it is unknown which applies? Maybe then neither PLAC nor FILL is needed.
AU Local Report Identifier   No probs  
AU Location Specific Practice Number   No probs  
AU Medical Record Number   No probs  
AU Medicare Card Number JHN Required value subsumed by one in IdentifierType JHN is needed
AU Medicare Provider Number PRN Required value subsumed by one in IdentifierType PRN is needed
AU NATA Accreditation Number PRN Required value subsumed by one in IdentifierType PRN is needed
AU NATA Site Number   No probs  
AU National Provider Identifier At Organisation PRN Required value subsumed by one in IdentifierType PRN is needed
AU PAI-D Identifier   ? Might be a UDI
AU PAI-O Identifier none Required value subsumed by one in IdentifierType PRN is needed
AU PBS Prescriber Number PRN Required value subsumed by one in IdentifierType PRN is needed
AU Pensioner Concession Card Number SB Required value subsumed by one in IdentifierType SB is needed
AU Pharmacy Approval Number PRN Required value subsumed by one in IdentifierType PRN is needed
AU Residential Aged Care Service Identifier PRN Required value subsumed by one in IdentifierType PRN is needed
RichardTON commented 2 years ago

The boundary between SB and JHN is unclear. See Jira thread Identifier Type Codes. Some of the SBs and JHNs in the table above may need changing.

RichardTON commented 2 years ago

Subsumption in Identifier Type Codes is problematic. See https://jira.hl7.org/browse/UP-331

dtr-agency commented 2 years ago

@RichardTON the WG session identified that some of the above were not applicable. and further outcomes for this. Please update this concern and progress.

brettesler-ext commented 2 years ago

@RichardTON discussed in PAWG https://confluence.hl7australia.com/display/PA/2022-07-06+Minutes

RichardTON commented 2 years ago

Further review of profiles of Identifier in AU Base

RichardTON commented 2 years ago

Identifier type profiles requiring changes:

  1. In AU Accession Number when type includes the coding LACSN it must also include the coding ACSN.
RichardTON commented 1 year ago

Updated review of profiles of Identifier in AU Base

Profile Assessment Effect
AU Accession Number   According to https://jira.hl7.org/browse/FHIR-37739 "LACSN is a type of ACSN so ACSN would be the appropriate code to send and LACSN could also be sent if desired". Some conformant instances need two codings. Sending LACSN requires sending ACSN as well. I suggest drop LACSN from the profile
AU AHPRA Registration Number This is skill specific, so not a provider and thus not PRN. No others relevant. none
AU Care Agency Employee Identifier Not always providers, so not PRN. No others relevant. none
AU Commonwealth Seniors Health Card Number This is national, not state/province based, so is not JHN. This identifies an entitlement, not a person, so is not SB. Nothing else relevant. none
AU CSP Registration Number CSPs supply IT services, no health related services, so not PRN. Nothing else relevant. none
AU Delivery Point Identifier   Identifies an address. Nothing relevant. none
AU DVA Number This is national, not state/province based, so is not JHN. This identifies an entitlement, not a person, so is not SB. Nothing else relevant. none
AU Employee Number   Nothing relevant. none 
AU ETP Prescription Identifier The identifier is allocated by middleware, not the source system, so not PLAC. Nothing else relevant. none
AU G-NAF Identifier   Identifies an address. Nothing relevant. none 
AU Health Care Card Number This is national, not state/province based, so is not JHN. This identifies an entitlement, not a person, so is not SB. Nothing else relevant. none
AU HPI-I This is national, not local/jurisdictional, so not PRN. No others relevant. none
AU HPI-O This is national, not local/jurisdictional, so not PRN. No others relevant. none
AU IHI This national, not state/province based, so is not JHN. This can only be used for healthcare, so is not SB. No others relevant. none
AU Insurance Member Number  Identifies an insurance member. Nothing relevant. none 
AU Local Dispense Identifier   Identifies a dispensing. Nothing relevant. none
AU Local Order Identifier   FILL and PLAC are parents. FGN and PGN are not children of any parent none  
AU Local Prescription Identifier Could be a placer's or a filler's, not definitely PLAC or FILL, so is neither. Nothing else relevant. none
AU Local Report Identifier Identifies a report. Nothing relevant. none  
AU Location Specific Practice Number Identifies a site. Nothing relevant. none 
AU Medical Record Number MR is a parent. none  
AU Medicare Card Number This national, not state/province based so is not JHN. This may identify a set of 1 to 4 persons, so is not an SB. This identifies an entitlement, not a person, so is not SB. No others relevant. none
AU Medicare Provider Number This is location and skill specific, so not a provider and thus not PRN. No others relevant. none
AU NATA Accreditation Number Identifies an approval or license, so not a provider and thus not PRN. No others relevant. none
AU NATA Site Number Identifies a site. Nothing relevant.   none
AU National Provider Identifier At Organisation This is national, not local/jurisdictional, so not PRN. No others relevant. none
AU PAI-D Identifier   Not a UDI. No others relevant. none
AU PAI-O Identifier Not a provider and thus not PRN. No others relevant. none
AU PBS Prescriber Number Identifies an approval or license, so not a provider and thus not PRN. Not always a medical doctor so not MD. No others relevant. none
AU Pensioner Concession Card Number This is national, not state/province based, so is not JHN. This identifies an entitlement, not a person, so is not SB. Nothing else relevant. none
AU Pharmacy Approval Number Identifies an approval or license, so not a provider and thus not PRN. Not a medical doctor so not MD. No others relevant. none
AU Residential Aged Care Service Identifier Identifies a service provided by a provider, so not a provider and thus not PRN. No others relevant. none

Apart from LACSN in AU Accession Number, none of the codes in any of the profiles above is subsumed by a code in IdentifierType value set.

RichardTON commented 1 year ago

Originally posted by @oridashi in https://github.com/hl7au/au-fhir-base/issues/737#issuecomment-1212593785

  • can we have narrative around AU Base IdentifierType being a non-hierarchal codesystem therefore we have specific codes defined for specific identifiers and will by choice chose an appropriate

As IdentifierType CodeSystem is a V2 code system, there is no defined hierarchy to the values. (See comment by Ted Klein in UP-331.) This does not mean that there is no subsumption. (See resolution in FHIR-37739.) None of the identifiers profiled above use codes subsumed by codes in IdentifierType value set.

Subsumption will need to be assessed in future profiles of Identifier.

RichardTON commented 1 year ago

AU Accession Number problem moved to #748

brettesler-ext commented 1 year ago

Need a narrative statement that 203 codesystem is NOT hierachial - leave ACSN and LACSN are not related.

dt-r commented 1 year ago

Fixed in commit https://github.com/hl7au/au-fhir-base/commit/910e04010d415b25cb350e502d4295974cbeddc7