Page History
...
Indhold:
| Table of Contents |
|---|
Indledning
På NSP deles i dag CDA dokumenter vha. en XDS infrastruktur. Et CDA dokument er et struktureret XML dokument, som følger en bestemt standard for kliniske dokumenter. Der findes forskellige typer af CDA dokumenter, hvor der er lavet danske profileringer (Udgivelser), som dækker følgende:
...
Da DROS, som nævnt gør brug af XdsValidation, kan man her finde yderligere inspiration for implementering der. Dette dokument beskriver overordnet funktionalitet af biblioteket.
API Beskrivelse og anvendelse
XdsValidation biblioteket kan overordnet validere følgende:
...
En valideringsregel returnerer et object ValidationResultSet. ValidationResultSet kan indholde en række fejl, hvis sådanne er fundet under valideringen.
Validator
En almindelig validering. Den består af en validering samt kald af dens under validatorer.
...
Det som kendetegner en almindelig validator er extension af klassen AbstractValidatorImpl.
ModelEnricher
Dette er ikke en egentlig validator. "Valideringen" består af udpakning af input.
...
Det som kendetegner en ModelEnricher er extension af klassen AbstractModelEnricherImpl.
Starter
Denne minder om en ModelEnricher, men adskiller sig ved, at den ikke modtager det fælles objekt XDSDocument, som de andre validatorer arbejder med. Den modtager en request type, som pakkes ud i et eller flere XDSDocument objekter, og Starter kører så sine under-validatorer på hver af disse objekter.
...
Det som kendetegner en Starter er extension af klassen AbstractStarterImpl.
Den gode kombination
Principperne for oprettelse af valideringsregler og sammensætning af disse i struktur, kan skitseres ved:
...
Der er lavet en hjælpe "abstraktion" i source koden, til at lave validerings strukturen, så man kan opbygge den vha. en builder pattern. Se factory metoderne for sådan anvendelse.
Hvordan ændrer man default valideringen
Hvis man ønsker, at ændre i den måde, default valideringen er sat op i XdsValidation biblioteket, enten ved at fjerne valideringsregler eller udvide med sine egne, kan det gøres ved at kopiere den default validering, man ønsker ændret og lave sine justeringer (fjerne eller tilføje regler). Alternativt, hvis man ønsker at lave "strengere" regler på udvalgte områder, kan man udføre default valideringen, og så yderligere have en validering, som alene består af egne valideringsregler (med relevante Starter og ModelEnricher).
...
- Opret en klasse, som beskriver det objekt man gerne vil have enricheren til at enriche til
- Opret en enricher i stil med f.eks. CdaDocumentPhmrModelEnricher
- Dens enrich metode skal modtage XDSDocument som input
- Den skal oprette et beriget objekt (punkt 1) og tilføje det til XDSDocument som en "enrichment".
- Lav de yderligere relevante validatorer, som validererer dette ny enriched object
Kombiner ekisterende og nye enrichere og validatorer i en ValidationFactory som beskrevet i afsnittet tidligere.
Code Block language java title Eksempel på anvendelse af eget format public static final EnrichmentKey<MyTestDocument> ENRICHMENT_MY_TEST_DOCUMENT = EnrichmentKey.create(MyTestDocument.class); public class MyTestDocument { private String somefield1; private String somefield2; } public class MyTestDocumentModelEnricher extends AbstractModelEnricherImpl<XDSDocument> implements Validator<XDSDocument> { @Override protected ValidationResultSet enrich(XDSDocument input) { ValidationResultSet validationResultSet = new ValidationResultSet(); MyTestDocument myTestClass = new MyTestDocument(); // lav logik som tager relevant indhold fra XDSDocument og pakker det om til MyTestDocument // opstår der fejl kan de returneres i validationResultSet xdsDocument.setEnrichment(ENRICHMENT_MY_TEST_DOCUMENT, myTestClass); return validationResultSet; } } public class MyTestDocumentSomeField1Validator extends AbstractValidatorImpl<XDSDocument> { @Override protected ValidationResultSet validateInternal(XDSDocument input) { ValidationResultSet validationResultSet = new ValidationResultSet(); if (input == null || input.getEnrichment(ENRICHMENT_MY_TEST_DOCUMENT) == null) { return validationResultSet; } // lav logik til validering af input.getEnrichment(ENRICHMENT_MY_TEST_DOCUMENT).getSomeField1(); // hvis fejl returneres de i validationResultSet; return validationResultSet; } }
Eksempel fra DROS
For at gøre brug af xdsValidation skal følgende dependencies tilføjes til maven pom fil:
...
Se iøvrigt praktisk anvendelse i bibliotekets egne unit test. F.eks. CdaHeaderValidatorTest der viser CDA dokument validering og ProvideAndRegisterDocumentSetValidatorTest, der viser en række kald for iti-41.
Understøttede valideringsregler
De implementerede valideringsregler er lavet med udgangspunkt i de danske standarder og IHE XDS specifikationen.
...
(Anvend "mvn javadoc:javadoc" for at generere i target/site folderne for mvn modulerne validation-xds og validation-codes)
Default validering konfiguration
Man kan med fordel tage udgangspunkt i disse konfigurerede valideringer, ligesom DROS gør i ovenstående eksempler. Hvad de hver især dækker fremgår af de følgende afsnit.
...
Der findes en række metoder på XDSConfiguration objektet til at sætte de forskellige konfigurationer.
Validering af struktur
Dette er validering, som har med struktur at gøre. F.eks. udpakning af information og forventninger til del-elementer.
...
| Klasse | Validering | ITI 41 | ITI 42 | ITI 61 | ITI 57 | Cda dokument |
|---|---|---|---|---|---|---|
| ProvideAndRegisterDocumentSetStarter |
| x | ||||
| RegisterDocumentSetStarter |
| x | x | x | ||
| XDSDocumentITI41StructureValidator |
| x | ||||
| XDSDocumentITI42StructureValidator |
| x | ||||
| XDSDocumentITI61StructureValidator |
| x | ||||
| XDSDocumentITI57StructureValidator |
| x | ||||
| XDSDocumentContentModelEnricher |
| x | ||||
| CdaDocumentHeaderModelEnricher |
| x | x | |||
| CdaDocumentApdV2ModelEnricher |
| x | x | |||
| CdaDocumentPhmrModelEnricher |
| x | x | |||
| CdaDocumentQrdModelEnricher |
| x | x | |||
| CdaDocumentPhadModelEnricher |
| x | x |
Typevalideringer
Dette er hjælpevalideringer, som feltvalideringer gør brug af.
| Klasse | Validering |
|---|---|
ConfigCodeModelChecker |
|
AbstractElementCompare |
|
CodedModelCompare |
|
DateTimeCompare |
|
DateCompare |
|
StringCompare |
|
CodedValueValidation |
|
StringValidation |
|
ClassCodeValidation |
|
| ConfidentialityCodeValidation |
|
| EventCodeValidation |
|
| FormatCodeValidation |
|
| HealthcareFacilityTypeCodeValidation |
|
| LanguageCodeValidation |
|
| OrganisationCodeValidation |
|
| PatientIdCodeValidation |
|
| PracticeSettingCodeValidation |
|
| TitleValidation |
|
| TypeCodeValidation |
|
Krydsvalideringer
Her sammenlignes to entiteter. Disse valideringer sikrer, at de samme felter i forskellige entiteter (documentEntry, submissionSet og Cda dokument) er ens. Hvis mindst en af entiterne kan indholde flere felter af den samme type, sammenlignes antallet af disse også.
...
| Klasse | Validering mellem de 2 entiter nævnt i klassens navn | ITI 41 | ITI 42 | ITI 61 | ITI 57 | Cda dokument |
|---|---|---|---|---|---|---|
| CdaHeaderCrossDocumentEntryAuthorInstitutionValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryAuthorPersonValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryConfidentialityCodeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryCreationTimeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryEventCodeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryLanguageCodeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryLegalAuthenticatorValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryPatientIdValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryServiceStartTimeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryServiceStopTimeValidator |
| x | ||||
| CdaHeaderCrossDocumentEntrySourcePatientIdValidator |
| x | ||||
| CdaHeaderCrossDocumentEntrySourcePatientInfoValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryTitleValidator |
| x | ||||
| CdaHeaderCrossDocumentEntryTypeCodeValidator |
| x | ||||
| SubmissionSetCrossDocumentEntryAuthorInstitutionValidator |
| x | x | x | x | |
| SubmissionSetCrossDocumentEntryAuthorPersonValidator |
| x | x | x | x | |
| SubmissionSetCrossDocumentEntryPatientIdValidator |
| x | x | x | x |
Feltvalideringer
Hver validering beskæftiger sig med et specifikt felt i enten ITI kald og/eller CDA dokumentet.
...