Page History
...
For at gemme eller hente et dokument, anvendet et ITI kald. ITI kald er standardiserede SOAP services, der overholder IHE XDS specifikationen. Et ITI kald opererer med begreberne SubmissionSet, DocumentEntry og Association, hvis indhold lægger sig op af dokumentets metadata. Disse skal derfor også overholde standarderne.
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. Flere komponenter, bl.a. DROS, gør brug af denne validering, for at sikre, at der ikke komme ugyldige data ind i XDS infrastrukturen. Anvendere 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.
XdsValiderings biblioteket er under fortsat udvikling. Se afsnittet "Understøttede valideringsregler" for den nuværende implementering.
For at anvende XdsValidation biblioteket, skal man gøre brug af tredjepartsproduktet IPF Open eHealth Integration Platform, da interaktionen foregår vha. dette.
Yderligere inspiration for implementering af validering kan findes i DROS projektet, da dette projekt allerede gør brug af XdsValidation.
Dette dokument beskriver overordnet funktionalitet af biblioteket.
CDA
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:
- 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)
...
Et audio dokument er et struktureret XML dokument, som følger HIMSA’s Noah datastandarder. Der findes forskellige typer af audio dokumenter (Udgivelser), hvor følgende dækkes:
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(provideAndRegisterDocumentSet, xdsValidatorFactory.buildIti41Validator(), xdsValidationLevel); // Fra klassen RegistryItiValidationImpl protected List<ErrorInfo> getXdsValidationErrors(ProvideAndRegisterDocumentSet request, ProvideAndRegisterDocumentSetStarterList<ProvideAndRegisterDocumentSetStarter> starterstarterList, XdsValidationLevel xdsValidationLevel) { List<ErrorInfo> return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); } private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) { if(xdsValidationLevel == XdsValidationLevel.OFFerrors = new ArrayList<>(); for (ProvideAndRegisterDocumentSetStarter starter : starterList) { List<ErrorInfo> returnvalidationErrors new= ArrayList<>(getXdsValidationErrors(request, starter, xdsValidationLevel); } List<ErrorInfo> errors = new ArrayList<>( errors.addAll(validationErrors); // Perform the validation if (errors.size() > 0) { ValidationResultSet resultSet = validator.get() return errors; // Construct the result } if(resultSet.hasErrors()) {} return errors; } private List<ErrorInfo> // Based on the validation level, either return a warning or an error. Severity severity = getSeverity(xdsValidationLevel); 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) { for(ValidationErrorreturn ve : resultSet.getErrorsnew ArrayList<>()) {; } List<ErrorInfo> ErrorInfo errorInfoerrors = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(), severity, "", ""); errors.add(errorInfo); }ArrayList<>(); // Based on the validation level, either return a warning or an error. Severity severity = getSeverity(xdsValidationLevel); try }{ return errors; } //Klassen XdsValidatorFactory public class XdsValidatorFactory { Perform the validation ValidationResultSet publicresultSet ProvideAndRegisterDocumentSetStarter= buildIti41Validatorvalidator.get() {; return Iti41ValidationFactory.createIti41Validator();// Construct the result } public RegisterDocumentSetStarter buildIti42Validator(if(resultSet.getValidationResults().size() > 0) { return Iti42ValidationFactory.createIti42Validator(); // } Based on the validation publiclevel, RegisterDocumentSetStartereither buildIti57Validator() { return a warning or an error. return Iti57ValidationFactory.createIti57Validator(); } for(ValidationResult publicvr RegisterDocumentSetStarter: buildIti61ValidatorresultSet.getValidationResults()) { return Iti61ValidationFactory.createIti61Validator(); ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, vr.getValidationError().getErrorMessage(), severity, "", ""); errors.add(errorInfo); } } } |
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
}
|
...
| language | java |
|---|---|
| title | Iti57ValidationImpl - anvendels af XdsValidation |
| linenumbers | true |
...
} catch (Exception e) {
// Because validation depends on validation library and builder parsers handling of exceptions we need to make sure any unstable exception handling there will not get to the caller.
String errorMessage = "Unhandled exception in validation library or its sub dependencies.";
LOGGER.error(errorMessage, e);
ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, errorMessage, getSeverity(xdsValidationLevel), "", "");
errors.add(errorInfo);
}
return errors;
}
//Klassen XdsValidatorFactory
public class XdsValidatorFactory {
...
public List<ProvideAndRegisterDocumentSetStarter> buildIti41Validator() {
return Arrays.asList(
Iti41ValidationFactory.createIti41Validator(xdsConfigurationFactory.buildXDSConfiguration()),
createItiProvideAndRegisterDocumentSetStarterDrosValidator());
}
...
} |
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 18)
- Retur får man en liste over de fejl XdsValidation fandt (linie 31)
På samme måde kan man få valideret de øvrige kald, ved at vælge den rette Starter og sende requsted ind til den.
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.
...
| 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 | |||||||||||||||||
| CdaDocumentQrdModelEnricherCdaDocumentPhmrModelEnricher |
| x | x | |||||||||||||||||||||
| CdaDocumentPhadModelEnricher |
| x | x | AudioDocumentModelEnricherCdaDocumentQrdModelEnricher |
| x | x | x | x | AudioDocumentAudiogramModelEnricher |
| x | AudioDocumentImpedanceModelEnricher |
| x | AudioDocumentHearingInstrumentSelectionModelEnricher |
| x |
| x | x | |||
| CdaDocumentPhadModelEnricher |
| x | x | |||||||||||||||||||||
| AudioDocumentModelEnricher |
| x | x | x | x | |||||||||||||||||||
| AudioDocumentAudiogramModelEnricher |
| x | ||||||||||||||||||||||
| AudioDocumentImpedanceModelEnricher |
| x | ||||||||||||||||||||||
| AudioDocumentHearingInstrumentSelectionModelEnricher |
| x | ||||||||||||||||||||||
| AudioDocumentAudiogramModelValidator | AudioDocumentAudiogramModelValidator |
| x | AudioDocumentImpedanceModelValidator |
| x | ||||||||||||||||||
| AudioDocumentImpedanceModelValidator |
| AudioDocumentHearingInstrumentSelectionModelValidator |
| x |
Typevalideringer
Dette er hjælpevalideringer, som feltvalideringer gør brug af.
| x | |||||
| AudioDocumentHearingInstrumentSelectionModelValidator |
| x |
Typevalideringer
Dette er hjælpevalideringer, som feltvalideringer gør brug af.
| Klasse | Validering | ||
|---|---|---|---|
ConfigCodeModelChecker |
| ||
AbstractElementCompare |
| ||
CodedModelCompare |
| ||
DateTimeCompare |
| ||
DateCompare |
| ||
StringCompare |
| ||
ConfigValuesChecker |
| ||
CodedValueValidator |
| ||
| Klasse | Validering | ||
ConfigCodeModelChecker |
| ||
AbstractElementCompare |
| ||
CodedModelCompare |
| ||
DateTimeCompare |
| ||
DateCompare |
| ||
StringCompare |
| ||
ConfigValuesChecker |
| ||
CodedValueValidator |
| ||
StringValidation |
| ||
ClassCodeValidation |
| ||
| ConfidentialityCodeValidation |
| ||
| EventCodeValidation |
| ||
| FormatCodeValidation |
| ||
StringValidation |
| ||
ClassCodeValidation HealthcareFacilityTypeCodeValidation |
| ||
| LanguageCodeValidation |
| ||
| ConfidentialityCodeValidation |
| OrganisationCodeValidation |
|
| EventCodeValidation |
| ||
| PracticeSettingCodeValidationFormatCodeValidation |
| ||
| TitleValidation |
| ||
| TypeCodeValidationHealthcareFacilityTypeCodeValidation |
| ||
| ConfigValuesValidator |
| ||
| HomeCommunityIdValidation |
| ||
| MimeTypeValidation |
|
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.
| LanguageCodeValidation |
|
| OrganisationCodeValidation |
|
| PatientIdCodeValidation |
|
| PracticeSettingCodeValidation |
|
| TitleValidation |
|
| TypeCodeValidation |
|
| ConfigValuesValidator |
|
| HomeCommunityIdValidation |
|
| MimeTypeValidation |
|
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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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 | AudioDocumentEntryFormatCodeCrossEventCodeValidator |
| x | x | x | x | AudioDocumentEntrySourcePatientIdCrossPatientIdValidator | x | x | x | x | ||
| AudioDocumentEntryServiceStopTimeCrossServiceStartTimeValidatorSubmissionSetCrossDocumentEntryAuthorPersonValidator |
| 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.
...
| 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 | ||||||||||
| DocumentEntryHomeCommunityIdValidator | HomeCommunityId |
| x | x | x | x | ||||||||||
| SubmissionSetAuthorInstitutionValidator | AuthorInstitution |
| x | x | x | x | ||||||||||
| SubmissionSetEntryUUIDValidator | EntryUUID |
| x | x | x | x | ||||||||||
| SubmissionSetPatientIdValidator | PatientId |
| x | x | x | x | ||||||||||
| SubmissionSetUniqueIdValidator | UniqueId |
| x | x | x | x | ||||||||||
| SubmissionSetHomeCommunityIdValidator | HomeCommunityId |
| x | x | x | x | ||||||||||
| Apd2AppointmentIdValidator | AppointmentId |
| x | x | ||||||||||||
| Apd2CustodianIdValidator | Custodian |
| x | x | x | x | ||||||||||
| Apd2StartStopTimeValidator | StartStopTime | Apd2AppointmentIdValidator | AppointmentId |
| x | x | ||||||||||
PhmrCustodianIdValidator | Custodian |
| x | x | ||||||||||||
| Apd2CustodianIdValidatorQrdCustodianIdValidator | Custodian |
| x | x | ||||||||||||
| Apd2StartStopTimeValidatorAudioDocumentEntryEventCodeValidator | StartStopTime | EventCodeList |
| x | x | x | x | |||||||||
| PhmrCustodianIdValidatorAudioDocumentEntryReferenceidListValidator | Custodian |
| x | x | QrdCustodianIdValidator | Custodian |
| x | x | ReferenceidList |
| x | x | x | x | |
| AudioDocumentEntryServiceStartTimeValidator | ServiceStartTime | AudioDocumentEntryEventCodeValidator | EventCodeList |
| x | x | x | x | ||||||||
| AudioDocumentEntryReferenceidListValidatorAudioDocumentEntryServiceStopTimeValidator | ReferenceidListServiceStopStime |
| x | x | x | x | ||||||||||
| AudioDocumentEntryFormatCodeAndEventCodeValidator | FormatCode EventCodeList |
| x | x | x | x | ||||||||||
| AudioDocumentEntrySourcePatientIdAndPatientIdValidatorAudioDocumentEntryServiceStartTimeValidator | SourcePatientId ServiceStartTimePatientId |
| x | x | x | x | ||||||||||
| AudioDocumentEntryServiceStopTimeAndServiceStartTimeValidatorAudioDocumentEntryServiceStopTimeValidator | ServiceStopTime ServiceStopStimeServiceStartTime |
| x | x | x | x |
.