Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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"for "fremtidigt eksempel med yderligere validering"
  • Der, hvor man normalt ville bruge Iti41ValidationFactory.createIti41Validator anvender man istedet Iti41ValidationFactoryExtended.createIti41Validator.

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
    languagejava
    titleEksempel 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;
    	}
    }
    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:

...

  • 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" .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).

...

KlasseValideringITI 41ITI 42ITI 61ITI 57Cda dokument
ProvideAndRegisterDocumentSetStarter
  • submissionSet pakkes ud
  • dokumenter pakkes ud
  • der er som minimum et dokument
x



RegisterDocumentSetStarter
  • submissionSet pakkes ud
  • dokumentEntries pakkes ud

xxx







XDSDocumentITI41StructureValidator
  • der findes et documentEntry
  • der findes et fysisk dokument
  • der findes et submissionSet
x



XDSDocumentITI42StructureValidator
  • der findes et documentEntry
  • der findes et submissionSet

x


XDSDocumentITI61StructureValidator
  • der findes et documentEntry
  • der findes et submissionSet


x

XDSDocumentITI57StructureValidator
  • der findes et submissionSet



x







XDSDocumentValidator
  • under-validatorne tjekker for dokument type. Default vil det være:
    • CdaDocumentHeaderModelEnricher
x



CdaDocumentValidator
  • under-validatorne tjekker for dokument type. Default vil det være:
    • CdaDocumentHeaderModelEnricher




x
CdaDocumentTypeValidator
  • under-validatorne tjekker for dokument type/ indholdsprofil. Default vil det være:
    • CdaDocumentApdV2ModelEnricher
    • CdaDocumentPhmrModelEnricher
    • CdaDocumentQrdModelEnricher
x


x







XDSDocumentContentModelEnricher
  • indhold kan læses som bytes (UTF8)
x



CdaDocumentHeaderModelEnricher
  • bytes kan parses som en CDA header
x


x
CdaDocumentApdV2ModelEnricherx


x
CdaDocumentPhmrModelEnricher
  • det er et PHMR dokument: CodeCodedValue har Codesystem "2.16.840.1.113883.6.1" og code "53576-5"
  • det er Cda Header Version 1: FormatCode er null (anvendt parser finder ikke formatCode for v1)
  • CDA dokumentet kan parses som et PHMR dokument
x


x
CdaDocumentQrdModelEnricher
  • det er et QRD dokument: CodeCodedValue har Codesystem "2.16.840.1.113883.6.1" og code "74465-6"
  • det er Cda Header Version 1: FormatCode er null (anvendt parser finder ikke formatCode for v1)
  • CDA dokumentet kan parses som et QRD dokument
x


x
CdaDocumentPhadModelEnricherx


x


Typevalideringer

Dette er hjælpevalideringer, som feltvalideringer gør brug af.

KlasseValidering

AbstractElementCompare

  • sammenligning af 2 lister (hver med nul, en eller flere objekter)
  • antal af objekter i listen er ens
  • de enkelte objekter er ens på de samme pladser i listen

CodedModelCompare

  • overholder validering i AbstractElementCompare hvor følgende opfylder "objekter er ens"
    • value er ens
    • codeSystem er ens
    • displayName er ens

DateTimeCompare

  • overholder validering i AbstractElementCompare hvor følgende opfylder "objekter er ens"
    • dateTime er ens

DateCompare

  • overholder validering i AbstractElementCompare hvor følgende opfylder "objekter er ens"
    • år, måned og dag i Calender er ens

StringCompare

  • overholder validering i AbstractElementCompare hvor følgende opfylder "objekter er ens"
    • de to strenge er ens



CodedValueValidation

  • regel: IHE Vol3 4.2.3.1.2 Creating Coded Attributes
  • codeSystem er udfyldt hvis krævet
  • codeSystem er gyldigt hvis krævet
  • code er udfyldt hvis krævet
  • displayName er udfyldt hvis krævet
  • yderligere kode validering som implementeret i legalCodeChecker (med default værdier i TerminologyDictionary)

StringValidation

  • overholder regler specificeret af anvender:
    • er udfyldt hvis påkrævet sat
    • længden på værdien er ikke  større end maksimum længde angivet
    • værdien er en af de tilladte værdier angivet

ClassCodeValidation

  • regel: IHE Vol3 4.2.3.1.2 Creating Coded Attributes
  • længden på code er ikke  større end 3 (DK_IHE_ClassCode_DE)
  • overholder validering i CodedValueValidation. Default gyldigt codeSystem angivet i TerminologyDictionary. Code, CodeSystem og DisplayName er udfyldt.
ConfidentialityCodeValidation
  • regel: IHE Vol3 4.2.3.1.2 Creating Coded Attributescode indholder "N" (DK_IHE_ConfidentialityCode_DE)
  • overholder validering i CodedValueValidation. Default gyldigt codeSystem angivet i TerminologyDictionary. Code og CodeSystem er udfyldt.
EventCodeValidation
  • regel IHE 4.2.3.1.2 Creating Coded Attributes
  • overholder validering i CodedValueValidation. Ingen default gyldig codeSystem.  Code, CodeSystem og DisplayName er udfyldt.
FormatCodeValidation
  • regel: IHE 4.2.3.1.2 Creating Coded Attributes
  • overholder validering i CodedValueValidation. Ingen default gyldig codeSystem. Code, CodeSystem og DisplayName er udfyldt.
HealthcareFacilityTypeCodeValidation
  • regel: IHE 4.2.3.1.2 Creating Coded Attributes
  • hvis udfyldt er værdien numerisk (DK_HealthcareFacilityType_DE)
  • overholder validering i CodedValueValidation. Ingen default gyldig codeSystem. Code, CodeSystem og DisplayName er udfyldt.
LanguageCodeValidation
  • overholder validering i StringValidation. Påkrævet og default tilladt værdi er "da-DK" (DK_IHE_LanguageCode_DE)
OrganisationCodeValidation
  • hvis codeSystem er Yder så er længden på code 6
  • hvis codeSystem er Yder er code numerisk
  • overholder validering i CodedValueValidation. Default gyldigt codeSystem angivet i TerminologyDictionary. Code og CodeSystem er udfyldt.
PatientIdCodeValidation
  • overholder validering i CodedValueValidation. Default gyldigt codeSystem angivet i TerminologyDictionary. Code og CodeSystem er udfyldt.
PracticeSettingCodeValidation
  • regel: IHE 4.2.3.1.2 Creating Coded Attributes
  • overholder validering i CodedValueValidation. Ingen default gyldig codeSystem. Code, CodeSystem og DisplayName er udfyldt.
TitleValidation
  • validering for StringValidation. Påkrævet og default maksimum længde er 128 (Metadata-v096 2.2.31 title)
TypeCodeValidation
  • regel: IHE 4.2.3.1.2 Creating Coded Attributes
  • validering i CodedValueValidation. Ingen default gyldig codeSystem. Code, CodeSystem og DisplayName er udfyldt.

...

KlasseValidering mellem de 2 entiter nævnt i klassens navnITI 41ITI 42ITI 61ITI 57Cda dokument
CdaCrossDocumentEntryAuthorInstitutionValidator
  • der er lige mange authors (dvs en)
  • der er lige mange AuthorInstitutions på den enkelte author
  • overholder validering i CodedModelCompare
x



CdaCrossDocumentEntryAuthorPersonValidator
  • der er lige mange authors (dvs en)
  • overholder validering i StringCompare indholdende personens titel og navne
x



CdaCrossDocumentEntryConfidentialityCodeValidator
  • der er lige mange ConfidentialityCodes (dvs en)
  • overholder validering i CodedModelCompare
x



CdaCrossDocumentEntryCreationTimeValidator
  • overholder validering i DateTimeCompare
x



CdaCrossDocumentEntryEventCodeValidator
  • overholder validering i CodedModelCompare
x



CdaCrossDocumentEntryLanguageCodeValidator
  • overholder validering i StringCompare indeholdende languageCode værdierne
x



CdaCrossDocumentEntryLegalAuthenticatorValidator
  • overholder validering i StringCompare indeholdende legalAuthenticators titel og navne
x



CdaCrossDocumentEntryPatientIdValidator
  • overholder validering i CodedModelCompare
x



CdaCrossDocumentEntryServiceStartTimeValidator
  • overholder validering i DateTimeCompare
x



CdaCrossDocumentEntryServiceStopTimeValidator
  • overholder validering i DateTimeCompare
x



CdaCrossDocumentEntrySourcePatientIdValidator
  • overholder validering i CodedModelCompare
x



CdaCrossDocumentEntrySourcePatientInfoValidator
  • overholder validering i StringCompare indeholdende personens titel og navne
  • overholder validering i DateTimeCompare DateCompare med datoer, hvor datoer er fødselsdato
  • overholder validering i StringCompare med køn værdierne
x



CdaCrossDocumentEntryTitleValidator
  • overholder validering i StringCompare indeholdende titel værdierne
x



CdaCrossDocumentEntryTypeCodeValidator
  • overholder validering i CodedModelCompare
x



SubmissionSetCrossDocumentEntryAuthorInstitutionValidator
  • ! forudsætning for validering: submissionSet har authors
  • der er lige mange authors
  • der er lige mange AuthorInstitutions på den enkelte author
  • overholder validering i CodedModelCompare
xxxx
SubmissionSetCrossDocumentEntryAuthorPersonValidator
  • ! forudsætning for validering: submissionSet har authors
  • overholder validering i StringCompare indholdende personernes titel og navne
  • (indirekte test af at der er lige mange authors qua listen af titel og navne)
xxxx
SubmissionSetCrossDocumentEntryPatientIdValidator
  • value og codeSystem er ens
xxxx

...

KlasseFeltValideringITI 41ITI 42ITI 61ITI 57Cda dokument

CdaHeaderAuthorInstitutionValidator

AuthorInstitution
  • regel: Metadata-v096 2.2.1.1 authorInstitution
  • author er udfyldt 
  • authorInstitution er udfyldt
  • overholder validering i OrganisationCodeValidation
x


x

CdaHeaderAuthorPersonValidator

AuthorPerson
  • regel: Metadata-v096 2.2.1.2 authorPerson
  • ! forudsætning for validering: authorPerson er udfyldt
  • der er et FamilyName og mindst et givenName
x


x

CdaHeaderConfidentialityCodeValidator

ConfidentialityCode
  • regel: Metadata-v096 2.2.5 confidentialityCode
  • confidentialityCode er udfyldt
  • overholder validering i ConfidentialityCodeValidation
x


x

CdaHeaderEventCodeValidator

EventCode
  • regel: Metadata-v096 2.2.9 eventCodeList
  • ! forudsætning for validering: EventCodeList har elementer
  • EventCode er udfyldt
  • overholder validering i EventCodeValidation
x


x

CdaHeaderFormatCodeValidator

FormatCode
  • regel: Metadata-v096 2.2.10 formatCode
  • ! forudsætning for validering: FormatCode er udfyldt
    (krav om udfyldelse varierer per dokumenttype og håndteres default af CdaDocument*type*ModelEnricher)
  • overholder validering i FormatCodeValidation
x


x

CdaHeaderLanguageCodeValidator

LanguageCode
  • regel: Metadata-v096 2.2.15 languageCode
  • languageCode er udfyldt
  • overholder validering i LanguageCodeValidation
x


x

CdaHeaderPatientIdValidator

PatientId
  • regel: Metadata-v096 2.2.20 patientId
  • der er en Patient med et PatientId
  • overholder validering i PatientIdCodeValidation
x


x

CdaHeaderSourcePatientIdValidator

SourcePatientId
  • regel: Metadata-v096 2.2.28 sourcePatientId
  • der er en sourcePatient med et PatientId
  • overholder validering i PatientIdCodeValidation
x


x

CdaHeaderSourcePatientInfoValidator

SourcePatientInfo
  • regel: Metadata-v096 2.2.29 sourcePatientInfo
  • der er en patient
  • der er et familyName og mindst et givenName
  • der er en fødselsdag
  • der er et køn
x


x

CdaHeaderTitleValidator

Title
  • regel: Metadata-v096 2.2.31 title
  • title er udfyldt
  • overholder validering i TitleValidation
x


x

CdaHeaderTypeCodeValidator

TypeCode
  • regel: Metadata-v096 2.2.32 typeCode
  • TypeCode (CodeCodedValue) er udfyldt
  • overholder validering i TypeCodeValidation
x


x

DocumentEntryClassCodeValidator

ClassCode
  • regel: Metadata-v096 2.2.3 classCode
  • classCode er udfyldt
  • overholder validering i ClassCodeValidation
xxxx
DocumentEntryAuthorInstitutionValidatorAuthorInstitution
  • regel: Metadata-v096 2.2.1.1 authorInstitution
  • der er mindst en author
  • der er en authorInstitution 
  • overholder validering i OrganisationCodeValidation
xxxx
DocumentEntryAuthorPersonValidatorAuthorPerson
  • regel: Metadata-v096 2.2.1.2 authorPerson
  • ! forudsætning for validering: authorPerson er udfyldt
  • der er et familyName og et givenName
xxxx
DocumentEntryAvailabilityStatusValidatorAvailabilityStatus
  • regel: Metadata-v096 2.2.2 availabilityStatus
  • AvailabilityStatus er udfyldt
  • AvailabilityStatus indeholder værdien approved eller deprecated
xxxx
DocumentEntryClassCodeValidatorClassCode
  • regel: Metadata-v096 2.2.3 classCode
  • classCode er udfyldt
  • overholder validering i ClassCodeValidation
xxxx
DocumentEntryConfidentialityCodeValidatorConfidentialityCode
  • regel: Metadata-v096 2.2.5 confidentialityCode
  • der er mindst en confidentialityCode
  • overholder validering i ConfidentialityCodeValidation
xxxx
DocumentEntryCreationTimeValidatorCreationTime
  • regel: Metadata-v096 2.2.7 createTime
  • CreationTime er udfyldt
xxxx
DocumentEntryEntryUUIDValidatorEntryUUID
  • regel: Metadata-v096 2.2.8 entryUUID
  • EntryUUID er udfyldt
xxxx
DocumentEntryEventCodeValidatorEventCode
  • regel: Metadata-v096 2.2.9 eventCodeList
  • ! forudsætning for validering: EventCodeList har elementer
  • EventCode er udfyldt
  • overholder validering i EventCodeValidation
xxxx
DocumentEntryFormatCodeValidatorFormatCode
  • regel: Metadata-v096 2.2.10 formatCode
  • FormatCode er udfyldt
  • overholder validering i FormatCodeValidation
xxxx
DocumentEntryHashValidatorHash
  • regel: Metadata-v096 2.2.11 hash
  • ! forudsætning for validering: type er udfyldt
  • Hash er udfyldt for Stable
  • Hash er ikke udfyldt for onDemand

xxx
DocumentEntryHealthcareFacilityTypeCodeValidatorHealthcareFacilityTypeCode
  • regel: Metadata-v096 2.2.12 healthcareFacilityTypeCode
  • FealthcareFacilityTypeCode er udfyldt
  • overholder validering i HealthcareFacilityTypeCodeValidation
xxxx
DocumentEntryLanguageCodeValidatorLanguageCode
  • regel: Metadata-v096 2.2.15 languageCode
  • languageCode er udfyldt
  • overholder validering i LanguageCodeValidation
xxxx
DocumentEntryLegalAuthenticatorValidatorLegalAuthenticator
  • regel: Metadata-v096 2.2.16 legalAuthenticator
  • ! forudsætning for validering: legelAuthenticator er udfyldt
  • der er et familyName og et givenName 
xxxx
DocumentEntryMimeTypeValidatorMimeType
  • regel: Metadata-v096 2.2.18 mimeType
  • MimeType er udfyldt
xxxx
DocumentEntryPatientIdValidatorPatientId
  • regel: Metadata-v096 2.2.20 PatientId
  • der er en PatientId
  • overholder validering i PatientIdCodeValidation
xxxx
DocumentEntryPracticeSettingCodeValidatorPracticeSettingCode
  • regel: Metadata-v096 2.2.21 practiceSettingCode
  • ! forudsætning for validering: PracticeSettingCode er udfyldt
  • overholder validering i PracticeSettingCodeValidation
xxxx
DocumentEntryReferenceidListValidatorReferenceidList
  • regel: Metadata-v096 2.2.22 referenceIdList
  • ! forudsætning for validering: ReferenceIdList har elementer
  • Id er udfyldt
  • længden af Id overstiger ikke 256
xxxx
DocumentEntryRepositoryUniqueIdValidatorRepositoryUniqueId
  • regel: Metadata-v096 2.2.23 repositoryUniqueId
  • RepositoryUniqueId er udfyldt
xxxx
DocumentEntrySizeValidatorSize
  • regel: Metadata-v096 2.2.26 size
  • ! forudsætning for validering: type er udfyldt
  • Size er udfyldt for Stable
  • Size er ikke udfyldt for onDemand

xxx
DocumentEntrySourcePatientIdValidatorSourcePatientId
  • regel: Metadata-v096 2.2.28 sourcePatientId
  • der er en SourcePatientId
  • overholder validering i PatientIdCodeValidation
xxxx
DocumentEntrySourcePatientInfoValidatorSourcePatientInfo
  • regel: Metadata-v096 2.2.29 sourcePatientInfo
  • der er en SourcePatientInfo
  • der er et navn, herunder et efternavn og mindst et fornavn
  • der er en fødselsdag
  • der er et køn
xxxx
DocumentEntryTitleValidatorTitle
  • regel: Metadata-v096 2.2.31 title
  • title er udfyldt
  • overholder validering i TitleValidation
xxxx
DocumentEntryTypeCodeValidatorTypeCode
  • regel: Metadata-v096 2.2.32 typeCode
  • TypeCode er udfyldt
  • overholder validering i TypeCodeValidation
xxxx
DocumentEntryTypeValidatorType
  • regel: Metadata-v096 2.2.19 objectType
  • Type er udfyldt
  • Type har en forventet værdi (Default for ITI41/ITI-42 er stable og for ITI-61 er on-demand)
xxxx
DocumentEntryUniqueIdValidatorUniqueId
  • regel: Metadata-v096 2.2.33 uniqueId
  • UniqueId er udfyldt
xxxx
DocumentEntryURIValidatorURI
  • regel: Metadata-v096 2.2.35 URI
  • ! forudsætning for validering: URI er udfyldt
  • længden af URI overstiger ikke 256
xxxx
SubmissionSetAuthorInstitutionValidatorAuthorInstitution
  • regel: Metadata-v096 2.2.1.1 authorInstitution
  • ! forudsætning for validering: Author og AuthorInstitution er udfyldt
  • overholder validering i OrganisationCodeValidation
xxxx
SubmissionSetEntryUUIDValidatorEntryUUID
  • regel: Metadata-v096 2.2.8 entryUUID
  • EntryUUID er udfyldt
xxxx
SubmissionSetPatientIdValidatorPatientId
  • regel: Metadata-v096 2.2.28 sourcePatientId
  • der er en Patient
  • overholder validering i PatientIdCodeValidation
xxxx
SubmissionSetUniqueIdValidatorUniqueId
  • regel: Metadata-v096 2.2.33 uniqueId
  • UniqueId er udfyldt
xxxx








Apd2AppointmentIdValidatorAppointmentId
  • regel: DK-APD-v2.0.1: 5.1 Appointment content
  • der er et appointmentId (CONF-DK-APD:7493)
x


x
Apd2CustodianIdValidatorCustodian
  • regel: DK-APD-v2.0.1: 2.1.5 custodian
  • ! forudsætning for validering: custodian er udfyldt
  • overholder validering i OrganisationCodeValidation
x


x
Apd2StartStopTimeValidatorStartStopTime
  • regel: DK-APD-v2.0.1: 2.1.10.1 Appointment Date and Time
  • ServiceStartTime er udfyldt (CONF-DK-APD:592c)
x


x

PhmrCustodianIdValidator

Custodian

  • regel: PHMR-DK-v1.3 2.13.3 Custodian
  • ! forudsætning for validering: custodian er udfyldt
  • overholder validering i OrganisationCodeValidation

 

x




x

QrdCustodianIdValidatorCustodian
  • regel: DK-QRD-v1.3: 2.2.5 Custodian
  • ! forudsætning for validering: custodian er udfyldt
  • overholder validering i OrganisationCodeValidation
x


x

...