Open DarthGizka opened 2 years ago
Ich habe obigen Text noch einmal durchgesehen und angepaßt, um klarzustellen, daß die Empfehlung auf mindestens zweiteilige Versionsangaben in Profil-URLs abstellt, nicht dreiteilige wie in den Beispieldaten.
Wie auch immer die Empfehlung der uAG ausfällt - der Referenzvalidator muß immer mit der kürzesten garantierten Versionsangabe aus allen Profilen aller Pakete umgehen können (derzeit '', da einige Profile keine Versionsangabe erzwingen).
Wenn ein Profil den Wert von
meta.profile
nicht festnagelt oder einschränkt (Normalfall!), dann ist gemäß FHIR-Regeln die Validierung gegen Profilversion 1.2.3 erfolgreich für folgende Werte inmeta.profile
der zu validierenden Ressource:(
{url}
ist der Wert vonStructureDefinition.url
aus dem Profil)Das klaglose Akzeptieren von Versionen mit höherem Patchlevel mag zwar auf den ersten Blick etwas überraschen, folgt aber aus den Regeln für FHIR (bei Gleichheit von major.minor validieren alte Ressourcen gegen neue Profile und umgekehrt).
Folgende Angaben führen zu Warnungen bzgl. nicht auffindbarer (i.e. nicht resolvierbarer) Profil-URLs:
Die für alle Beteiligten beste Situation ergibt sich, wenn
(1) das Profil die URL nicht festnagelt (weil sonst ausschließlich
{url}|1.2.3
akzeptiert würde), und (2) die Erzeuger von Datensätzen die tatsächlich verwendete Version mit allen drei Komponenten in meta.profile angebenLetzteres ließe sich zwar durch Festnageln von meta.profile in der Profildefinition erzwingen, aber dadurch wird die Flexibilität der FHIR-Mechanismen komplett ausgehebelt und URLs würden nur bei exakt gleichem Inhalt (einschl. Patch-Level, Prerelease-Suffix usw.) akzeptiert werden, also
{url}|1.2.3
, so wie das z.B. bei den GKV-Profilen leider der Fall ist.Wesentlich besser wäre ein Einschränken von meta.profile über einen regulären Ausdruck, der Profil-URLs nur mit wenigstens zweiteiligem Versionssuffix akzeptiert, à la
matches('[^\\|]+\\|\\d+\\.\\d.*')
.Ich habe für die alle drei Fälle Profile und entsprechende Testdateien erzeugt, damit diese Mechanismen bequem experimentell ausgelotet werden können. Allerdings erfordert das Testprofil mit dem regex-basierten Versions-Constraint 3+ Teile in der Versionsangabe, nicht 2+ Teile wie in obiger Empfehlung.
XP_PR_Patient_fixed.json
: Profil-URL festgenagelt auf{url}|1.2.3
, à la GKVSVXP_PR_Patient_plain.json
: Normalfall, keine Einschränkung von meta.profileXP_PR_Patient_regex.json
: Profil-URL eingeschränkt auf solche mit mindestens dreiteiliger Versionsangabe (major.minor.patch*)Als zu profilierende Ressource wurde
Patient
gewählt, weil diese Ressource keinerlei Pflichtfelder hat und die Testfälle dadurch kurz und würzig ausfallen (frei von Ballast/Rauschen, ganz im Gegensatz zu e.g. TA7_Sammelrechnung_Bundle). Das Profil ist eine ausgefeilte, hochwissenschaftliche Geschichte, welche die zulässigen Werte einer profilierten Extension einschränkt von "42" oder "08/15" auf nur "42" (um in den Tests feststellen zu können, ob das Profil tatsächlich greift).In der angehängten ZIP-Datei finden sich die Profile (JSON), die Testdateien (XML) sowie Batch-Dateien namens
$validate.cmd
.Letztere erlauben (unter Windows) alle Dateien mit einem Rutsch dem HAPI-Validator vorzulegen, so daß die Ladezeit von 5 Sekunden nicht mehr ganz so tragisch ist wie bei Validieren einer einzigen Datei je Programmstart. Gleichzeitig werden auch die entsprechenden
-ig
-Schalter gesetzt, um dem Validator die notwendigen Profile unterzuschieben. Dadurch ist es nicht notwendig, erst ein Profilpaket in den lokalen FHIR-Paket-Cache zu laden. Wer das trotzdem tun möchte, findet die entsprechende tgz-Datei ebenfalls hier im Anhang.Die beiden Batch-Dateien gehen davon aus, daß eine Batch-Datei namens
$validator_cli.cmd
im Suchpfad verfügbar ist, welche den HAPI-Validator (validator_cli.jar
) mit den übergebenen Parametern startet und Standardschalter wie-version 4.0.1
usw. setzt. Eine Kopie dieser Batch-Datei findet sich im Wurzelverzeichnis des ZIPs; dort muß der Pfad zuvalidator_cli.jar
angepaßt werden.Die Namen einiger Testdateien haben vor der Endung .xml noch einen Einschub wie "WARNING" oder "ERROR". Dabei handelt es sich um die 'tragischste' erwartete Meldestufe des Validators. Das macht es einfach, beim Durchsehen des Validatorergebnisses Soll- und Iststand zu vergleichen. Die Ausgabe Validatorlaufs für die Testdateien ist in der angehängten Datei
result.txt
abgelegt.Für besonders eilige hier der (leicht verdichtete) Auschnitt des Validierungsergebnisses für die Tests des Profils mit regulärem Ausdruck für meta.profile:
Anmerkung zu den Testfällen mit Versionsangaben '1', '1.1' und '1.3'. HAPI stellt hier korrekt fest, daß nicht gegen die vorliegende Profilversion 1.2.3 validiert werden kann. Allerdings werden nur Warnungen über nicht gefundene Profile ausgegeben, keine Fehler. Im E-Rezept-Umfeld müßten diese Warnungen eigentlich zu Fehlern hochgestuft werden - unabhängig davon, ob sie auf unpassende Versionen zurückgehen oder auf Schreibfehler in den Profil-URLs (e.g. 'Abgabadaten' oder kreative Änderungen bzgl. Groß-/Kleinschreibung, so wie bei Noventi).
Der Referenzvalidator wählt zwar das zu verwendende Profilpaket anhand von meta.profile der Ressource aus (so daß hier kein Widerspruch entstehen kann), aber manche Ressourcen können eine Reihe untergeordneter Profilreferenzen mit Versionangaben enthalten.
P.S.: ich mußte eu.zrbj.xp-1.2.3.tgz umbenennen in *.tar.gz, weil sich die Datei sonst hier nicht anhängen ließ.
result.txt eu.zrbj.xp-1.2.3.zip eu.zrbj.xp-1.2.3.tar.gz