HL7Norway/basisprofiler-r4

Valideringsfeil i no-basis filene (slicing of non-repeating elements)

Closed this issue · 17 comments

Forvaltningsspøkelset kommer.

Den pakken som ligger ute nå har flere valideringsfeil med siste versjon av den offisielle validatoren. Da vi publiserte benyttet vi en eldre versjon av validatoren og da validerte alt OK. .NET validatoren på SIMPLIFIER validerer dette OK.

Historikk

Det er flere grunner til at dette har oppstått:

  • Da pakken ble laget måtte vi generere snapshot versjoner av alle conformance ressurser både for rendring på SIMPLIFIER og validering av eksempler
  • Oppdateringen av FHIR standarden og verktøy til FHIR versjon 4.0.1 har påvirket valideringen på flere punkter
  • Forge som er verktøyet vi bruker til å lage profiler/extensions er oppdatert flere ganger og genererer helt forskjellige snapshots nå i forhold til det som genereres av dagens versjon

Utfordringer

Utfordringen med å ha ressurser som ikke validerer i den offisielle validatoren er at vi kan få problemer med å ta i bruk det offisielle IG publisher verktøyet. I tillegg til at det ser dumt ut å ha normative ressurser som ikke validerer i de offisielle verktøyene.

Vi må ha på plass noen retningslinjer for hvordan dette skal håndteres på no-basis og for andre normative ressurser fra HL7 Norge og andre aktører.

Mulige løsninger

  • Oppdatere no-basis til FHIR 4.0.1 og fase ut 4.0.0 versjonen
  • Publisere bare differentials i fremtiden nå som verktøyene synes modne nok til å håndtere dette

Det er en liten nøtt, og enig i at det ikke er uheldig at de ikke validerer. Når du refererer til det offisielle IG publisher - tenker du på Grahames verktøy?

Tenker på HL7 sine offisielle validering/publiserings verktøy. De er vel utviklet av Grahame ja, men det er et større team bak det nå såvidt jeg forstår.

Spørsmålet er da kanskje også hva som er det offisielle valideringsverktøyet hvis det er forskjell mellom IG-publisher og Simplifier. Det er jo generelt uheldig fra HL7-side hvis slikt skjer og er vel et tema for Connectahons. Inntil videre forholder vel vi oss primært til Simplifier og kan kanskje primært forholde oss til det. Men fortsatt en nøtt at det er forskjell mellom versjoner. Bør også løftes til TSK - kan du ta en prensentasjon i november?

Vanskelig - det er FHIR-spesifikasjonen som er normativ, mens verktøyene -- som man er helt avgengig av -- er i bevegelse og ikke treffer 100% med spesifikasjonen.

Generelt mener jeg at kun publisere differentials hjelper mye på lesbarheten. Å gå gjennom en profil som inneholder ekstremt mye "rask" er vanskelig. Mange, meg undertegnet, ønsker å se på kildekoden direkte og ikke bare gjennom et rendret view, som Simplifier.

Har startet på arbeidet i denne branchen
https://github.com/HL7Norway/basisprofiler-r4/tree/Bugfix-validering

Fjernet alle snapshots
Hoder på å fikse noen slice feil, sjekk ut denne tråden:
https://chat.fhir.org/#narrow/stream/179166-implementers/topic/Slicing.20non-repeating.20elements.20to.20define.20a.20choice

Sjekk forøvrig changelog:
https://github.com/HL7Norway/basisprofiler-r4/blob/Bugfix-validering/Changelog-20x.md

(dessverre har ikke simplifier og github samme markdown flavor for tabeller så changelogg ser helt idiotisk ut her).

Kan vi si at denne er lukket på basis av godkjent forslag i TSK om kun å bruke diff-profilering?

Ja, denne skulle egentlig vært lukket basert på pull-requests #60

MEN, jeg har ikke sjekket at de nye versjonene faktisk validerer feilfritt i HL7 sin Java validator, @kennethmyhra har validert på SIMPLIFIER (.NET validator). Det er heller ikke utført tester med validering av faktiske eksempler mot profilene så vidt jeg vet. Men det står ikke i sjekklistene våre så da så...

https://github.com/HL7Norway/best-practice/blob/master/docs/no-national-checklist.md

Offisiell validator klarer ikke generere snapshot for disse:

  • Endpoint
  • HealtcareService
  • AllergyIntolerance
  • Practitioner

Process Note: Unable to generate snapshot for no-basis-Practitioner: Attempt to a slice an element that does not repeat: Practitioner.qualification.code/Practitioner.qualification.code from http://hl7.org/fhir/StructureDefinition/Practitioner in http://hl7.no/fhir/StructureDefinition/no-basis-Practitioner Process Note: Unable to generate snapshot for no-basis-AllergyIntolerance: Attempt to a slice an element that does not repeat: AllergyIntolerance.code/AllergyIntolerance.code from http://hl7.org/fhir/StructureDefinition/CodeableConcept in http://hl7.no/fhir/StructureDefinition/no-basis-AllergyIntolerance Process Note: Unable to generate snapshot for no-basis-HealthcareService: Attempt to a slice an element that does not repeat: Reference.identifier/Reference.identifier from http://hl7.org/fhir/StructureDefinition/Reference in http://hl7.no/fhir/StructureDefinition/no-basis-HealthcareService Process Note: Unable to generate snapshot for no-basis-Endpoint: Attempt to a slice an element that does not repeat: Endpoint.connectionType/Endpoint.connectionType from http://hl7.org/fhir/StructureDefinition/Endpoint in http://hl7.no/fhir/StructureDefinition/no-basis-Endpoint

Vi har feilaktig slicet non-repeating elements:
https://chat.fhir.org/#narrow/stream/179166-implementers/topic/Slicing.20non-repeating.20elements.20to.20define.20a.20choice

MEN skal vi vente til HL7 fikser det eller skal vi fikse selv med å opprette flere ValueSet's?
https://chat.fhir.org/#narrow/stream/179166-implementers/topic/How.20to.20bind.20multiple.20ValueSets

Jira tracker for slicing non repeating elements:
https://jira.hl7.org/browse/FHIR-28619

Kan løses ved å flytte slicen i strukturen:

  • AllergyIntolerance.code (0..1) slicen kan flyttes ned til coding som er (0..*)
  • Practitioner.qualification slicen kan flyttes fra code (non-repeating) til qualification (0..*) for å fikse bug'en

Må løses på andre måter:

  • Endpoint.connectiontype - Forslag, endre valuesettet NoBasisConnectionType til å inneholde alle kodene fra begge kodeverkene istedenfor slice (HL7 EndpointConnectionType og NoBasisConnectionType)
  • HealthcareService.providedBy - Forslag, fjerne slicer som beskriver koding av ENH/RESH og beskrive disse mulighetene i den tekstlige dokumentasjonen

Innspill? @kennethmyhra @rockphotog @daghammer @olemartinwinnem
@oaassv Kan vi diskutere disse innspillene til fix på neste TSK, først i møtet, bør ikke ta lang tid?

Har fikset alle feilene unntatt AllergyIntolerance. Så nå får vi validert no-basis.

Fix bugs for validation with official java validator. Remove all snapshots from definitons.
Fix errors in slicing: Slicing discussion

Date: 2021-06-15

  • no-basis-Location Removed invalid constraint on partOf element (was Organization whitch is illegal)
  • no-basis-Practitioner Practitioner.qualification slicen flyttet fra code (non-repeating) til qualification (0..*) for å fikse bug'en
  • no-basis-connection-type.valueset.xml Updated to version number
  • no-basis-HealthcareService.StructureDefinition-profile.xml Removed slicing, wrote constraint to check for correct providedBy.identifier.system value (ENH/RESH)
    • Validated constraint on providedBy invariant

Date: 2020-10-17

  • no-basis-documentreference-type.valueset.xml Added status in the ValueSet (required)
  • no-basis-connection-type.valueset.xml Added HL7 connection types to this valueset so to replace errondous slicing of the connectionType element in Endpoint
  • no-basis-Endpoint.StructureDefinition-profile.xml Wrong slice definition on non repeating element (1..1) Endpoint.connectionType|
  • no-basis-HealthcareService.StructureDefinition-profile.xml Wrong slice definition on non repeating element (1..1)

@olemartinwinnem @daghammer Har dere mulighet til å fikse AllergyIntolerance slicen, så kan jeg lage en pull request. Bare fortsett i denne branchen:
https://github.com/HL7Norway/basisprofiler-r4/tree/Bugfix-validering

Bør oppdatere constraint i HealthcareService.providedBy til å teste:

  • finnes det et providedBy element, bør det finnes en identifikator
  • identifikatoren bør ha verdi i system og value
  • constraint på system tar seg av verdiene på system (oid for enh eller resh)
    • Oppdatere teksten til å bruke oid verdiene istedenfor enh og resh i advarselen fra validatoren
  • no-basis-HealthcareService.StructureDefinition-profile.xml Updated constraint to also check for existing identifier, if providedBy exists
  • no-basis-HealthcareService-example.xml Added working example of no-basis-HealthcareService resource instance (JAVA validated)

no-basis-AllergyIntolerance Fixed wrong slice definition on non repeating element (1..1), slicing on code.coding element instead

Publisert som versjon 2.0.17