Momentan geben die öffentlich aufrufbaren Funktionen des Referenzvalidators als Ergebnis (Map<ResultSeverityEnum, List<SingleValidationMessage>>) zurück.
Dieser Datentyp ist als Austauschformat denkbar ungeeignet. Wenn man z.B. die einzelnen Meldungen verarbeiten möchte, dann muß man erst mit flatMap() die Gruppierung rückgängig machen. Das ist aber gar nicht korrekt möglich - die ursprüngliche Reihenfolge der Meldungen ist unwiderruflich zerstört, und damit geht uns ein wichtiges Diagnosehilfsmittel verloren.
Eine einfache flache Liste (List<SingleValidationMessage>) wäre da wesentlich besser. Diese wäre auch auf einfachste Weise in in OperationOutcome umwandelbar, was die Standard-Ergebnisform für alle FHIR-Validatoren (außer unserem) ist.
Als OperationOutcome wäre die Ausgabe des Validators - auch die der Kommandozeilenversion - leicht maschinell verarbeitbar. Bei der jetzigen Freitextausgabe geht das nicht so leicht.
Um mit dem OperationOutcome weiterzuarbeiten, muß es erst von seiner 'opaquen', versionsunabhängigen Form in die R4-Modellform überführt werden. Dann kann man zum Beispiel das Gesamturteil des Validators in einer dafür geschaffenen Extension ablegen:
/** post-process the validation result (destructively, i.e. modifying the passed outcome structure) */
public static void nachbearbeite_Validierungsergebnis (IBaseOperationOutcome operationOutcome)
{
OperationOutcome oo_r4 = (OperationOutcome) operationOutcome;
String bewertung = enthaelt_Fehler(oo_r4) ? ERGEBNIS_FEHLERHAFT : ERGEBNIS_AKZEPTIERT;
oo_r4.addExtension(RV_EX_Gesamtbewertung, new StringType(bewertung));
}
public static boolean enthaelt_Fehler (OperationOutcome operationOutcome)
{
for (OperationOutcome.OperationOutcomeIssueComponent issue : operationOutcome.getIssue())
{
switch (issue.getSeverity())
{
case ERROR:
case FATAL: return true;
}
}
return false;
}
Momentan geben die öffentlich aufrufbaren Funktionen des Referenzvalidators als Ergebnis (
Map<ResultSeverityEnum, List<SingleValidationMessage>>
) zurück.Dieser Datentyp ist als Austauschformat denkbar ungeeignet. Wenn man z.B. die einzelnen Meldungen verarbeiten möchte, dann muß man erst mit
flatMap()
die Gruppierung rückgängig machen. Das ist aber gar nicht korrekt möglich - die ursprüngliche Reihenfolge der Meldungen ist unwiderruflich zerstört, und damit geht uns ein wichtiges Diagnosehilfsmittel verloren.Eine einfache flache Liste (
List<SingleValidationMessage>
) wäre da wesentlich besser. Diese wäre auch auf einfachste Weise in inOperationOutcome
umwandelbar, was die Standard-Ergebnisform für alle FHIR-Validatoren (außer unserem) ist.Als
OperationOutcome
wäre die Ausgabe des Validators - auch die der Kommandozeilenversion - leicht maschinell verarbeitbar. Bei der jetzigen Freitextausgabe geht das nicht so leicht.Um mit dem OperationOutcome weiterzuarbeiten, muß es erst von seiner 'opaquen', versionsunabhängigen Form in die R4-Modellform überführt werden. Dann kann man zum Beispiel das Gesamturteil des Validators in einer dafür geschaffenen Extension ablegen: