Page History
Tjek relevant overordnede dele er til stede i input (så validatorer ikke behøver blive negative, hvis de ikke er)
Indhold:
Table of Contents |
---|
...
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 typernefølgende:
- Appointment Document (APD) til aftaler
- Careplan (CPD)
- Personal Data Card/Stamkort (PDC)
- Personal Health Monitoring Report (PHMR) til hjemmemonitorering
- Questionnaire Form Definition Document (QFDD) og Questionnaire Response Document (QRD) til patientrapporterede oplysninger (PRO)
...
Yderligere detaljer og introduktion til dokumentdeling kan læses i Dokumentdeling på NSP.
For at lette arbejdet med at overholde/validerere for standarderne, findes XdsValidation biblioteket. DROS komponenten kan gøre brug af denne validering, for at sikre, at der ikke komme ugyldige data ind i XDS infrastrukturen. Anvendere af DROS kan selv implementere validering vha. af XdsValidation biblioteket, hvis man ønsker at finde fejl, inden det faktiske kald udføres. Alle, der er koblet på NSP XDS infrastrukturen med enten registry eller repository eller som har sit eget affinitetsdomæne, kan med fordel anvende XdsValiderings biblioteket. Også som supplement til eventuel egen validering.
...
- Udvikling af egen udvidede validering i klassen Apd2StartStopTimeSpecifikValueValidator (en almindelig validator vil her være passende som som skabelon)
- Lave en kopi af klassen Iti41ValidationFactory som Iti41ValidationFactoryExtended
- Tilføj egen validering (se eksemplet ovenfor i afsnit 2.1 for "fremtidigt eksempel med yderligere validering"
- Der, hvor man normalt ville bruge Iti41ValidationFactory.createIti41Validator anvender man istedet Iti41ValidationFactoryExtended.createIti41Validator.
Eksempel fra DROS
For at gøre brug af xdsValidation skal følgende dependencies tilføjes til maven pom fil:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>dk.nsp</groupId>
<artifactId>validation-xds</artifactId>
</dependency> |
Hvis man ikke allerede anvender IPF Open eHealth Integration Platform skal følgende dependency tilføjes
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<version>${openehealth.version}</version>
</dependency>
<!-- openehealth.version bør være samme version som XDSValidation anvender --> |
Følgende kode er taget fra DROS's validerings logik for ITI 41 kald.
Har man brug for at kunne lave sin egen enricher, og tilhørende opbevaring til en validator senere i flowet kan man gøre følgende
- 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) { if (input == null || input.getEnrichment(ENRICHMENT_MY_TEST_DOCUMENT) == null) { return null; } ValidationResultSet validationResultSet = new 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:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>dk.nsp</groupId>
<artifactId>validation-xds</artifactId>
</dependency> |
Hvis man ikke allerede anvender IPF Open eHealth Integration Platform skal følgende dependency tilføjes
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<version>${openehealth.version}</version>
</dependency>
<!-- openehealth.version bør være samme version som XDSValidation anvender --> |
Følgende kode er taget fra DROS's validerings logik for ITI 41 kald.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(provideAndRegisterDocumentSet, xdsValidatorFactory.buildIti41Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(ProvideAndRegisterDocumentSet request, ProvideAndRegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel);
}
private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) {
if(xdsValidationLevel == XdsValidationLevel.OFF) {
return new ArrayList<>(); | ||||||
Code Block | ||||||
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(provideAndRegisterDocumentSet, xdsValidatorFactory.buildIti41Validator(), xdsValidationLevel); // Fra klassen RegistryItiValidationImpl protected List<ErrorInfo> getXdsValidationErrors(ProvideAndRegisterDocumentSet request, ProvideAndRegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) { return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); } private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) { if(xdsValidationLevel == XdsValidationLevel.OFF) { return new ArrayList<>(); } List<ErrorInfo> errors = new ArrayList<>(); // Perform the validation ValidationResultSet resultSet = validator.get(); // Construct the result if(resultSet.hasErrors()) { // Based on the validation level, either return a warning or an error. Severity severity = getSeverity(xdsValidationLevel); for(ValidationError ve : resultSet.getErrors()) { ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(), severity, "", ""); errors.add(errorInfo); } } returnList<ErrorInfo> errors; } //Klassen XdsValidatorFactory public class XdsValidatorFactory { = new ArrayList<>(); public// ProvideAndRegisterDocumentSetStarterPerform buildIti41Validator()the {validation ValidationResultSet resultSet = return Iti41ValidationFactoryvalidator.createIti41Validatorget(); // Construct }the result public RegisterDocumentSetStarter buildIti42Validator if(resultSet.hasErrors()) { return Iti42ValidationFactory.createIti42Validator(); } public RegisterDocumentSetStarter buildIti57Validator() { // Based on the validation level, either return a warning or an error. Severity severity return= Iti57ValidationFactory.createIti57ValidatorgetSeverity(xdsValidationLevel); } public RegisterDocumentSetStarter buildIti61Validator(for(ValidationError ve : resultSet.getErrors()) { return Iti61ValidationFactory.createIti61Validator(); } } |
Dvs ønsker man benytte default valideringen for ITI 41 kaldet gøres det ved at:
- Oprette en instans af ProvideAndRegisterDocumentSetStarter (linie 2)
- Kalde metoden validate på denne med ITI 41 requested (ProvideAndRegisterDocumentSet) (linie 6)
- Retur får man en liste over de fejl XdsValidation fandt (linie 15)
På samme måde kan man få valideret de øvrige kald, ved at vælge den rette Starter og sende requsted ind til den.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti42ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti42Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti57ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti61Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti57Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
} |
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 Medcoms standarder og IHE XDS specifikationen.
Disse standarder refereres som følger:
...
ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(), severity, "", "");
errors.add(errorInfo);
}
}
return errors;
}
//Klassen XdsValidatorFactory
public class XdsValidatorFactory {
public ProvideAndRegisterDocumentSetStarter buildIti41Validator() {
return Iti41ValidationFactory.createIti41Validator();
}
public RegisterDocumentSetStarter buildIti42Validator() {
return Iti42ValidationFactory.createIti42Validator();
}
public RegisterDocumentSetStarter buildIti57Validator() {
return Iti57ValidationFactory.createIti57Validator();
}
public RegisterDocumentSetStarter buildIti61Validator() {
return Iti61ValidationFactory.createIti61Validator();
}
} |
Dvs ønsker man benytte default valideringen for ITI 41 kaldet gøres det ved at:
- Oprette en instans af ProvideAndRegisterDocumentSetStarter (linie 2)
- Kalde metoden validate på denne med ITI 41 requested (ProvideAndRegisterDocumentSet) (linie 6)
- Retur får man en liste over de fejl XdsValidation fandt (linie 15)
På samme måde kan man få valideret de øvrige kald, ved at vælge den rette Starter og sende requsted ind til den.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti42ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti42Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti57ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti61Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti57Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
} |
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.
Disse regler/standarder refereres på følgende måde::
- IHE Vol3 4.2.3.1.2 Creating Coded Attributes: Henviser til IHE XDS specifikationen volume 3, afsnit 4.2.3.1.2
- DK_IHE_ClassCode_DE: Henviser til til Medcoms fælles liste over tilladet værdisæt faneblad ClassCode_DE
- Metadata-v096 2.2.3 classCode: Henviser til den danske CDA profil afsnit 2.2.3
- DK-APD-v2.0.1: 2.1.10.1 Appointment Date and Time: Henviser til Appointment Document (APD) til aftaler afsnit 2.1.10.1
- DK-QRD-v1.3: 2.2.5 Custodian: Henviser til Questionnaire Response Document (QRD) afsnit 2.2.5
- PHMR-DK-v1.3 2.13.3 Custodian: Henviser til Personal Healthcare Monitoring Report (PHMR) afsnit 2.13.3
Begreber (entiteter/atributer mm) anvendt i valideringen stammer fra IHE frameworket (documentEntry og SubmissionSet) samt Medcoms Cda builder/parser (anvendes til at parse CDA header og de konkrete danske profileringer).
For nu er følgende valideringer implementeret. Beskrivelserne i tabelkolonnerne "Validering" stammer fra XdsValidationprojektets javadoc og skal vedligeholdes der.
Bemærk det er muligt sortere og filtrere i tabellerne med confluence indbyggede tabelhåndtering.
(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.
Klasse |
---|
CdaDocumentValidatorFactory |
Iti41ValidationFactory |
Iti42ValidationFactory |
Iti61ValidationFactory |
Iti57ValidationFactory |
De forskellige factories anvender en TerminologyDictionary. I TerminologyDictionary findes en række "LegalCodeChecker"s som anvendes af typevalideringerne (se afsnit nedenfor) til at validere gyldige koder med. Default opsætningen er specificeret i TerminologyDictionary og er følgende:
- ClassCode: Default gyldigt codeSystem er OID "1.2.208.184.100.9" (DK_IHE_ClassCode_DE).
- ConfidentialityCode: Default gyldigt codeSystem er OID "2.16.840.1.113883.5.25". Gyldig kode er "N". (DK_IHE_ConfidentialityCode_DE)
- OrganisationCode: Default gyldige codeSystemer er "1.2.208.176.1.1" (SOR) og "1.2.208.176.1.4" (YDERNUMMER).
- PatientIdCode: Default gyldigt codeSystem er "1.2.208.176.1.2" (CPR).
Ønskes validering af hele kodersæt, kan disse sendes med ind istedet for anvendelse af default valideringen. Benyt LegalCodeCheckerAsList til dette. Og ønkes en helt anden anden kodevalidering end mod en liste kan man lave sin egen implementation af LegalCodeChecker.
Validering af struktur
Dette er validering, som har med struktur at gøre. F.eks. udpakning af information og forventninger til del-elementer.
Afkrydningen i tabellens 5 sidste søjler indikerer, om en given validering er inkluderet i default valideringer, som er konfigureret i XdsValidation biblioteket.
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 | ||||
XDSDocumentValidator |
| x | ||||
CdaDocumentValidator |
| x | ||||
CdaDocumentTypeValidator |
| x | 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 |
---|---|
AbstractElementCompare |
|
CodedModelCompare |
|
DateTimeCompare |
|
DateCompare |
|
StringCompare |
|
CodedValueValidation |
|
StringValidation |
|
ClassCodeValidation |
|
ConfidentialityCodeValidation |
|
EventCodeValidation |
|
FormatCodeValidation |
|
HealthcareFacilityTypeCodeValidation |
|
LanguageCodeValidation |
|
OrganisationCodeValidation |
|
PatientIdCodeValidation |
|
PracticeSettingCodeValidation |
|
...
| |
TitleValidation |
|
...
| |
TypeCodeValidation |
|
...
|
...
For nu er følgende valideringer implementeret. Beskrivelserne i tabelkolonnerne "Validering" stammer fra XdsValidationprojektets javadoc og skal vedligeholdes der.
Bemærk det er muligt sortere og filtrere i tabellerne med confluence indbyggede tabelhåndtering. S
(Anvend "mvn javadoc:javadoc -pl \!validation-cda-dependencies" 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 følgende afsnit.
...
Model
Klasse | Anvendelse |
---|---|
XDSDocument | Anvendes til at gemme dokumentets indhold i. Alt efter hvordan validatorne er konfigureret vil indhold variere. Følgende sker default
|
TransformData | Anvendes til at gemme dokumentets berigede indhold i. Alt efter hvordan validatorne er konfigureret vil indhold variere. Følgende sker default
|
Validering af struktur
Dette er validering, som har med struktur at gøre. F.eks. udpakning af information og forventninger til del-elementer.
Afkrydningen i tabellens 5 sidste søjler indikerer, om en given validering er inkluderet i default valideringer, som er konfigureret i XdsValidation biblioteket.
...
- submissionSet pakkes ud
- dokumenter pakkes ud
- der skal som minimum være eet dokument
...
- submissionSet pakkes ud
- dokumentEntries pakkes ud
...
- der findes et doucmentEntry
- der findes et fysisk dokument
- der findes et submissionSet
...
- der findes et doucmentEntry
- der findes et submissionSet
...
- der findes et doucmentEntry
- der findes et submissionSet
...
- der findes et submissionSet
...
- under-validatorne tjekker for dokument type. Default vil det være:
- CdaDocumentHeaderModelEnricher
...
- under-validatorne tjekker for dokument type. Default vil det være:
- CdaDocumentApdV2ModelEnricher
- CdaDocumentPhmrModelEnricher
- CdaDocumentQrdModelEnricher
...
- under-validatorne tjekker for dokument type. Default vil det være:
- CdaDocumentHeaderModelEnricher
...
- indhold læses som bytes (UTF8)
...
- bytes parses som en CDA header
...
- tjek det er et aftale dokument: CodeCodedValue har Codesystem "2.16.840.1.113883.6.1" og code "39289-4"
- tjek det er Cda Header Version 2: FormatCode har Codesystem "1.2.208.184.100.10" og code "urn:ad:dk:medcom:apd-v2.0.1:full"
- CDA dokumentet parses som et APD dokument
...
- tjek det er et PHMR dokument: CodeCodedValue har Codesystem "2.16.840.1.113883.6.1" og code "53576-5"
- tjek det er Cda Header Version 1: FormatCode er null (anvendt parser finder ikke formatCode for v1)
- CDA dokumentet parses som et PHMR dokument
...
- tjek det er et QRD dokument: CodeCodedValue har Codesystem "2.16.840.1.113883.6.1" og code "74465-6"
- tjek det er Cda Header Version 1: FormatCode er null (anvendt parser finder ikke formatCode for v1)
- CDA dokumentet parses som et QRD dokument
...
Typevalideringer
Dette er hjælpevalideringer, som feltvalideringer gør brug af.
...
AbstractElementCompare
...
- sammenligning af 2 lister (hver med en eller flere objekter)
- antal af objekter skal være ens
- de enkelte objekter skal være ens på de samme pladser i listen
...
CodedModelCompare
...
- validering for AbstractElementCompare med typen CodeModel, hvor følgende opfylder "objekterne er ens"
- value skal være ens
- codeSystem skal være ens
- displayName skal være ens
...
DateTimeCompare
...
- validering for AbstractElementCompare med typen DateTime, hvor følgende opfylder "objekter er ens"
- dateTime skal være ens
...
StringCompare
...
- validering for AbstractElementCompare med typen String, hvor følgende opfylder "objekter er ens"
- de to strenge skal være ens
...
CodedValueValidation
...
- (IHE Vol3 4.2.3.1.2 Creating Coded Attributes)
- udfyldt codeSystem
- gyldigt codeSystem (DK_IHE_ClassCode_DE)
- udfyldt code
...
ClassCodeValidation
...
- (IHE Vol3 4.2.3.1.2 Creating Coded Attributes)
- længden på code må ikke være større end 3 (DK_IHE_ClassCode_DE)
- displayName skal være udfyld
- validering for CodedValueValidation. Default gyldigt codeSystem er OID "1.2.208.184.100.9" (DK_IHE_ClassCode_DE)
...
- (IHE 4.2.3.1.2 Creating Coded Attributes)
- code skal indholde "N" (DK_IHE_ConfidentialityCode_DE)
- validering for CodedValueValidation. Default gyldigt codeSystem er OID "2.16.840.1.113883.5.25" (DK_IHE_ConfidentialityCode_DE)
...
- hvis codeSystem er Yder så skal længden på code være 6
- hvis codeSystem er Yder så skal code være numerisk
- validering for CodedValueValidation. Default gyldige codeSystemer er "1.2.208.176.1.1" (SOR) og "1.2.208.176.1.4" (YDERNUMMER)
...
- validering for CodedValueValidation. Default gyldigt codeSystem er "1.2.208.176.1.2" (CPR)
...
- udfyldt baseret på isRequired
- maksimum længde baseret på maxLength
- tilladte værdier baseret på legalValues
...
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å.
Afkrydningen i tabellens 5 sidste søjler indikerer, om en given validering er inkluderet i default valideringer, som er konfigureret i XdsValidation biblioteket.
...
- der skal være lige mange authors på CDA header og documentEntry
- der skal være lige mange AuthorInstitutions på author på CDA header og documentEntry
- validering for CodedModelCompare af CDA header værdi og documentEntry liste
...
|
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å.
Afkrydningen i tabellens 5 sidste søjler indikerer, hvilke default valideringer, den enkelte validator er inkludret i.
Klasse | Validering mellem de 2 entiter nævnt i klassens navn | ITI 41 | ITI 42 | ITI 61 | ITI 57 | Cda dokument |
---|---|---|---|---|---|---|
CdaCrossDocumentEntryAuthorInstitutionValidator |
| x | ||||
CdaCrossDocumentEntryAuthorPersonValidator |
| x | ||||
CdaCrossDocumentEntryConfidentialityCodeValidator |
| x | ||||
CdaCrossDocumentEntryCreationTimeValidator |
| x | ||||
CdaCrossDocumentEntryEventCodeValidator |
| x | ||||
CdaCrossDocumentEntryLanguageCodeValidator |
| x | ||||
CdaCrossDocumentEntryLegalAuthenticatorValidator |
| x | ||||
CdaCrossDocumentEntryPatientIdValidator |
| x | ||||
CdaCrossDocumentEntryServiceStartTimeValidator |
| x | ||||
CdaCrossDocumentEntryServiceStopTimeValidator |
| x | ||||
CdaCrossDocumentEntrySourcePatientIdValidator |
| x | ||||
CdaCrossDocumentEntrySourcePatientInfoValidator |
| x | ||||
CdaCrossDocumentEntryTitleValidator |
| x | ||||
CdaCrossDocumentEntryTypeCodeValidator |
| 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.
Afkrydningen i tabellens 5 sidste søjler indikerer, hvilke default valideringer, den enkelte validator er inkludret i.
Søjlen "felt" kan anvendes til sortering, hvis man ønsker at se valideringen for et specifik felt på tværs af entitet.
Klasse | Felt | Validering | ITI 41 | ITI 42 | ITI 61 | ITI 57 | Cda dokument |
---|---|---|---|---|---|---|---|
CdaHeaderAuthorInstitutionValidator | AuthorInstitution |
| x | x | |||
CdaHeaderAuthorPersonValidator | AuthorPerson |
| x | x | |||
CdaHeaderConfidentialityCodeValidator | ConfidentialityCode |
| x | x | |||
CdaHeaderEventCodeValidator | EventCode |
| x | x | |||
CdaHeaderFormatCodeValidator | FormatCode |
| x | x | |||
CdaHeaderLanguageCodeValidator | LanguageCode |
| x | x | |||
CdaHeaderPatientIdValidator | PatientId |
| x | x | |||
CdaHeaderSourcePatientIdValidator | SourcePatientId |
| x | x | |||
CdaHeaderSourcePatientInfoValidator | SourcePatientInfo |
| x | x | |||
CdaHeaderTitleValidator | Title |
| x | x | |||
CdaHeaderTypeCodeValidator | TypeCode |
| x | x | |||
DocumentEntryClassCodeValidator | ClassCode |
| x | x | x | x | |
DocumentEntryAuthorInstitutionValidator | AuthorInstitution |
| x | x | x | x | |
DocumentEntryAuthorPersonValidator | AuthorPerson |
| x | x | x | x | |
DocumentEntryAvailabilityStatusValidator | AvailabilityStatus |
| x | x | x | x | |
DocumentEntryClassCodeValidator | ClassCode |
| x | x | x | x | |
DocumentEntryConfidentialityCodeValidator | ConfidentialityCode |
| x | x | x | x | |
DocumentEntryCreationTimeValidator | CreationTime |
| x | x | x | x | |
DocumentEntryEntryUUIDValidator | EntryUUID |
| x | x | x | x | |
DocumentEntryEventCodeValidator | EventCode |
| x | x | x | x | |
DocumentEntryFormatCodeValidator | FormatCode |
| x | x | x | x | |
DocumentEntryHashValidator | Hash |
| x | x | x | ||
DocumentEntryHealthcareFacilityTypeCodeValidator | HealthcareFacilityTypeCode |
| x | x | x | x | |
DocumentEntryLanguageCodeValidator | LanguageCode |
| x | x | x | x | |
DocumentEntryLegalAuthenticatorValidator | LegalAuthenticator |
| x | x | x | x | |
DocumentEntryMimeTypeValidator | MimeType |
| x | x | x | x | |
DocumentEntryPatientIdValidator | PatientId |
| x | x | x | x | |
DocumentEntryPracticeSettingCodeValidator | PracticeSettingCode |
| x | x | x | x | |
DocumentEntryReferenceidListValidator | ReferenceidList |
| x | x | x | x | |
DocumentEntryRepositoryUniqueIdValidator | RepositoryUniqueId |
| x | x | x | x | |
DocumentEntrySizeValidator | Size |
| x | x | x | ||
DocumentEntrySourcePatientIdValidator | SourcePatientId |
| x | x | x | x | |
DocumentEntrySourcePatientInfoValidator | SourcePatientInfo |
| x | x | x | x | |
DocumentEntryTitleValidator | Title |
| x | x | x | x | |
DocumentEntryTypeCodeValidator | TypeCode |
| x | x | x | x | |
DocumentEntryTypeValidator | Type |
| x | x | x | x | |
DocumentEntryUniqueIdValidator | UniqueId |
| x | x | x | x | |
DocumentEntryURIValidator | URI |
| x | x | x | x | |
SubmissionSetAuthorInstitutionValidator | AuthorInstitution |
| x | x | x | x | |
SubmissionSetEntryUUIDValidator | EntryUUID |
| x | x | x | x | |
SubmissionSetPatientIdValidator | PatientId |
|
...
- der skal være lige mange authors på documentEntry og CDA header
- validering for StringCompare af CDA header liste og documentEntry liste (listerne består af personens titel og navne)
...
- der skal være lige mange ConfidentialityCodes på CDA header og documentEntry
- validering for CodedModelCompare af CDA header værdi og documentEntry liste
...
- validering for DateTimeCompare af datoerne
...
- validering for CodedModelCompare af CDA header liste og documenEntry liste (listerne består af EventCodes)
...
- validering for StringCompare af streng og streng (strengene indeholder languageCode)
...
- validering for StringCompare af CDA header liste og documentEntry liste (listerne består af legalAuthenticators titel og navne)
...
- validering for CodedModelCompare af CDA header værdi og documentEntry værdi (værdierne er PatientId'er)
...
- validering for DateTimeCompare af datoer
...
- validering for DateTimeCompare af datoer
...
- validering for CodedModelCompare af CDA header værdi og documentEntry værdi (værdierne er SourcePatientId'er)
...
- validering for StringCompare af CDA header liste og documentEntry liste (listerne består af personens titel og navne)
- validering for DateTimeCompare af datoer, hvor datoer er fødselsdato
- validering for StringCompare af streng og streng (strengene indeholder køn)
...
- validering for StringCompare af streng og streng (strengene indeholder titel)
...
- validering for CodedModelCompare af CDA header værdi og documentEntry værdi (værdierne er TypeCodes)
...
- der valideres kun, hvis submissionSet har authors
- der skal være lige mange authors på submissionSet og documentEntry
- der skal være lige mange AuthorInstitutions på author på submissionSet og documentEntry
- validering for CodedModelCompare af submissionSet liste og documentEntry liste
...
- validering for StringCompare af SubmissionSet liste og documentEntry liste (listerne består af en eller flere personers titel og navne)
...
- value og codeSystem skal være ens for submissionSet og documentEntry
...
Feltvalideringer
Hver validering beskæftiger sig med et specifikt felt i enten ITI kald og/eller CDA dokumentet.
Afkrydningen i tabellens 5 sidste søjler indikerer, om en given validering er inkluderet i default valideringer, som er konfigureret i XdsValidation biblioteket.
Søjlen "felt" kan anvendes til sortering, hvis man ønsker at se valideringen for et specifik felt på tværs af entitet.
Klasse | Felt | Validering | ITI 41 | ITI 42 | ITI 61 | ITI 57 | Cda dokument | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CdaHeaderAuthorInstitutionValidator | AuthorInstitution |
| x | x | CdaHeaderAuthorPersonValidator | AuthorPerson |
| x | x | CdaHeaderConfidentialityCodeValidator | ConfidentialityCode |
| x | x | CdaHeaderEventCodeValidator | EventCode | CdaHeaderFormatCodeValidator | FormatCode | CdaHeaderLanguageCodeValidator | LanguageCode | CdaHeaderPatientIdValidator | PatientId |
| CdaHeaderSourcePatientIdValidator | SourcePatientId |
| x | x | CdaHeaderSourcePatientInfoValidator | SourcePatientInfo |
| x | x | CdaHeaderTitleValidator | Title | CdaHeaderTypeCodeValidator | TypeCode | DocumentEntryClassCodeValidator | ClassCode |
| x | x | x | x | DocumentEntryAuthorInstitutionValidator | AuthorInstitution |
| x | x | x | x | DocumentEntryAuthorPersonValidator | AuthorPerson |
| x | x | x | x | DocumentEntryAvailabilityStatusValidator | AvailabilityStatus | DocumentEntryClassCodeValidator | ClassCode | DocumentEntryConfidentialityCodeValidator | ConfidentialityCode |
| x | x | x | x | DocumentEntryCreationTimeValidator | CreationTime | DocumentEntryEntryUUIDValidator | EntryUUID | DocumentEntryEventCodeValidator | EventCode | DocumentEntryFormatCodeValidator | FormatCode | DocumentEntryHashValidator | FormatCode | DocumentEntryHealthcareFacilityTypeCodeValidator | HealthcareFacilityTypeCode | DocumentEntryLanguageCodeValidator | LanguageCode | DocumentEntryLegalAuthenticatorValidator | LegalAuthenticator |
| x | x | x | x | DocumentEntryMimeTypeValidator | MimeType | DocumentEntryPatientIdValidator | PatientId |
| DocumentEntryPracticeSettingCodeValidator | PracticeSettingCode | DocumentEntryReferenceidListValidator | ReferenceidList | DocumentEntryRepositoryUniqueIdValidator | RepositoryUniqueId | DocumentEntrySizeValidator | Size | DocumentEntrySourcePatientIdValidator | SourcePatientId |
| x | x | x | x | |
DocumentEntrySourcePatientInfoValidatorSubmissionSetUniqueIdValidator | SourcePatientInfoUniqueId |
| x | x | x | x | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DocumentEntryTitleValidatorApd2AppointmentIdValidator | Title | DocumentEntryTypeCodeValidator | TypeCode | DocumentEntryTypeValidator | Type | AppointmentId |
| x | x | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Apd2CustodianIdValidator | Custodian |
| DocumentEntryUniqueIdValidator | UniqueId | DocumentEntryURIValidator | URI | SubmissionSetAuthorInstitutionValidator | AuthorInstitution |
| x | x | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Apd2StartStopTimeValidator | StartStopTime |
| x | x | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SubmissionSetPatientIdValidator PhmrCustodianIdValidator | PatientId |
| Custodian |
x | x | x x | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
QrdCustodianIdValidator | Apd2AppointmentIdValidator | Custodian |
| Apd2CustodianIdValidator | Apd2StartStopTimeValidator |
| x | x | PhmrCustodianIdValidator | QrdCustodianIdValidator |
.