Open SebStaeubert opened 2 years ago
Ich bekomme mit dem Java Validator Version 6.3.0 momentan Errors, wenn ich versuche MII Consent Ressourcen zu erstellen und gegen v1.0.6 von Modul Consent zu validieren. Konkret scheint das Problem in den rekursiven Elementen wie Consent.provision.provision zu sein. Bei diesen werden die Constraints aus der Ebene darüber Consent.provision geprüft. Validiere ich bspw. Beispiel für eine operationalisierte MII-Einwilligung, bekomme ich:
Error @ Consent.provision.provision[0].type (line 77, col26): Value is 'permit' but must be 'deny'
oder auch
Error @ Consent.provision.provision[0] (line 75, col14): Consent.provision.code: max allowed = 0, but found 1 (from https://www.medizininformatik-initiative.de/fhir/modul-consent/StructureDefinition/mii-pr-consent-einwilligung|1.0.3)
Hattet Ihr euch das schon angeschaut, oder soll ich mal bei #conformance nachfragen? @SebStaeubert @lhitc
Hi Julian, in der Meldung steht aber dass die Resource gegen https://www.medizininformatik-initiative.de/fhir/modul-consent/StructureDefinition/mii-pr-consent-einwilligung|1.0.3) validiert wird. Ist das korrekt?
LG Martin
Hi @ths-community, das ist korrekt, weil das Consent-Profil innerhalb vom v1.0.6 Package noch die Version auf 1.0.3 gesetzt hat. https://github.com/medizininformatik-initiative/kerndatensatzmodul-consent/blob/9a826b43ab45b979d578156a28ba502c963dfdbf/ressourcen-profile/Profile_MII_Consent_Einwilligung.xml#L5
@SebStaeubert das kann doch sicherlich fix angepasst werden, dann re-release v1.0.6 package oder einheitlich überall auf v1.0.7 erhöhen?
Es ist sicher gut, wenn die Version der Conformance-Ressourcen mit der Package-Version übereinstimmt. Es muss aber nicht der Fall sein.
@julsas @ths-community Ich habe die Version (hoffentlich bei allen Dateien, https://github.com/medizininformatik-initiative/kerndatensatzmodul-consent/commit/8f2c43b1a8da4b95ce810521dd45d84b78a415a4) auf Version 1.0.7 gesetzt und ein neues Packages 1.0.7 erzeugt.
Kann jemand prüfen, ob mit diesem Package noch Validierungsfehler auf den FHIR Server(n), z.B. HAPI, kommen?
Package in HAPI FHIR JPA server laden und dann Consent-Ressource gegen Consent/$validate validieren funktioniert. Die Errors bekomme ich nur, wenn ich die Validator jar lokal benutze. Habe jetzt auch rausgefunden, dass es vermutlich an den von Simplifier generierten Snapshots liegt. Und zwar hier:
{
"id": "Consent.provision.provision",
"path": "Consent.provision.provision",
"short": "Nested Exception Rules",
"definition": "Rules which provide exceptions to the base rule or subrules.",
"min": 0,
"max": "*",
"base": {
"path": "Consent.provision.provision",
"min": 0,
"max": "*"
},
"contentReference": "http://hl7.org/fhir/StructureDefinition/Consent#Consent.provision",
"mustSupport": true
},
"contentReference": "http://hl7.org/fhir/StructureDefinition/Consent#Consent.provision"
ist meiner Ansicht nach hier falsch und verursacht die Fehler. Also kein Problem des Profils.
Danke @julsas :)
Ich hatte nochmal nachgefragt hier: https://chat.fhir.org/#narrow/stream/179252-IG-creation/topic/Clarification.20on.20contentReference/near/426098325
Da ist man teilweise der Meinung, dass der Java Validator hier richtig liegt und Consent.provision.type
mit einer Invariante profiliert werden müsste.
@SebStaeubert @ths-community
Siehe Validierungsergebnis: examplemiiconsenteinwilligung/$validate
Validierungsergbnis auf FHIR Server (Hapi) 20220930_Consent_Example_Validation.json.txt mit weiteren Fehlern.
Behebt sich das noch von selbst (z.B. durch die heute besprochenen Anpassungen), sind es Fehler des Validators oder muss noch etwas am Beispiel oder der Profilierung geändert werden?
Ich kann ähnliche Fehler bestätigen. Ich habe mit hapi fhir und meiner Test-Implementierung in Java die folgenden Fehler:
Can't find Extension definition for http://fhir.de/ConsentManagement/StructureDefinition/DomainReference but trying to go on
Can't find Extension definition for http://fhir.de/ConsentManagement/StructureDefinition/Xacml but trying to go on
ERROR: Consent.extension[0] - Slicing kann nicht ausgewertet werden: Profil CanonicalType[http://fhir.de/ConsentManagement/StructureDefinition/DomainReference] kann nicht gefunden werden
INFORMATION: Consent.extension[0] - Unbekannte extension http://fhir.de/ConsentManagement/StructureDefinition/DomainReference
WARNING: Consent.category[1] - Keiner der angegebenen Codes ist im Valueset 'Consent Category Codes' (http://hl7.org/fhir/ValueSet/consent-category|4.0.1), und ein Code sollte aus diesem Valueset stammen, es sei denn, er enthält keinen geeigneten Code) (Codes = https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category#2.16.840.1.113883.3.1937.777.24.2.184)
WARNING: Consent.policyRule - Kein Code gesetzt, und es sollte ein Code aus ValueSet'Consent PolicyRule Codes' (http://hl7.org/fhir/ValueSet/consent-policy|4.0.1) ({1}) gesetzt werden
INFORMATION: Consent.policyRule.extension[0] - Unbekannte extension http://fhir.de/ConsentManagement/StructureDefinition/Xacml
ERROR: Consent.policyRule.extension[0] - Slicing kann nicht ausgewertet werden: Problem bei der Verwendung von resolve() - Profil [CanonicalType[http://fhir.de/ConsentManagement/StructureDefinition/Xacml]] auf Consent.policyRule.extension:xacml konnte nicht aufgelöst werden (@char 1)
Meine Testimplementierung in Java
FhirContext ctx = FhirContext.forR4();
String content = new String(Files.readAllBytes(Paths.get("src/test/resources/package/examples/Example_MII_Consent_Einwilligung.json")));
IParser jsonParser = ctx.newJsonParser();
Consent consent = jsonParser.parseResource(Consent.class, content);
NpmPackageValidationSupport npmPackageSupport = new NpmPackageValidationSupport(ctx);
npmPackageSupport.loadPackageFromClasspath("classpath:de.medizininformatikinitiative.kerndatensatz.consent-1.0.7.tgz");
ValidationSupportChain validationSupportChain = new ValidationSupportChain(
npmPackageSupport,
new DefaultProfileValidationSupport(ctx),
new CommonCodeSystemsTerminologyService(ctx),
new InMemoryTerminologyServerValidationSupport(ctx),
new SnapshotGeneratingValidationSupport(ctx));
CachingValidationSupport validationSupport = new CachingValidationSupport(validationSupportChain);
FhirInstanceValidator validatorModule = new FhirInstanceValidator(validationSupport);
FhirValidator validator = ctx.newValidator().registerValidatorModule(validatorModule);
ValidationResult result = validator.validateWithResult(consent);
result.getMessages().forEach(message -> {
System.out.println(message.getSeverity() + ": " + message.getLocationString() + " - " + message.getMessage());
});
assertTrue(result.isSuccessful());
Ich habe dieses Package verwendet: https://simplifier.net/packages/de.medizininformatikinitiative.kerndatensatz.consent/1.0.7/
Ich verwende zur Validation das Example im Test und habe mich an diesem Beispiel orientiert: https://hapifhir.io/hapi-fhir/docs/validation/instance_validator.html#packages
Für mein Verständnis erwarte ich als Ergebnis true
und maximal Hinweise aber keine "Error".
@SebStaeubert @ths-community
Habe ich einen Denkfehler oder etwas vergessen?
@eriCCsan das Package de.medizininformatikinitiative.kerndatensatz.consent-1.0.7 hat eine Dependency auf de.einwilligungsmanagement-1.0.1, die hier anscheinend von hapi nicht aufgelöst wird. Die Errors der fehlenden StructureDefinitions sollten verschwinden, wenn zusätzlich das Einwilligungsmanagement-Package geladen wird mit:
npmPackageSupport.loadPackageFromClasspath("classpath:de.einwilligungsmanagement-1.0.1.tgz");
@julsas Ich habe die Änderungen durchgeführt mit diesem Ergebnis:
WARNING: Consent.category[1] - Keiner der angegebenen Codes ist im Valueset 'Consent Category Codes' (http://hl7.org/fhir/ValueSet/consent-category|4.0.1), und ein Code sollte aus diesem Valueset stammen, es sei denn, er enthält keinen geeigneten Code) (Codes = https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category#2.16.840.1.113883.3.1937.777.24.2.184)
WARNING: Consent.policyRule - Kein Code gesetzt, und es sollte ein Code aus ValueSet'Consent PolicyRule Codes' (http://hl7.org/fhir/ValueSet/consent-policy|4.0.1) ({1}) gesetzt werden
WARNING: Consent - Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)
Ich nehme an das kann so sein?
@julsas Ich habe die Änderungen durchgeführt mit diesem Ergebnis:
WARNING: Consent.category[1] - Keiner der angegebenen Codes ist im Valueset 'Consent Category Codes' (http://hl7.org/fhir/ValueSet/consent-category|4.0.1), und ein Code sollte aus diesem Valueset stammen, es sei denn, er enthält keinen geeigneten Code) (Codes = https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category#2.16.840.1.113883.3.1937.777.24.2.184) WARNING: Consent.policyRule - Kein Code gesetzt, und es sollte ein Code aus ValueSet'Consent PolicyRule Codes' (http://hl7.org/fhir/ValueSet/consent-policy|4.0.1) ({1}) gesetzt werden WARNING: Consent - Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)
Ich nehme an das kann so sein?
Ja, das ist ok. Consent.category und Consent.policyRule haben schon in der Core FHIR Spec Extensible ValueSet Bindings. Davon weicht bspw. der Code der mii-category ab, daher die Warning. Das kannst du nicht beheben. Für dom-6 müsstest du narrative generieren. Ist aber nur best practice und würde ich ignorieren oder niedrig priorisieren.
Siehe Validierungsergebnis: examplemiiconsenteinwilligung/$validate
Validierungsergbnis auf FHIR Server (Hapi) 20220930_Consent_Example_Validation.json.txt mit weiteren Fehlern.
Behebt sich das noch von selbst (z.B. durch die heute besprochenen Anpassungen), sind es Fehler des Validators oder muss noch etwas am Beispiel oder der Profilierung geändert werden?