The Clinical Document SHALL contain at least one [1..1] realmCode where @code='SA' [CDAH-050]
OCL
self.realmCode->select(ii : CS |
(not ii.code.oclIsUndefined()) and ii.code='SA'
)->size()>0
The Clinical Document SHALL contain exactly one [1..1] Document Identifier that SHALL NOT be null flavor [CDAH-001]
OCL
(not self.id.oclIsUndefined()) and self.id.nullFlavor.oclIsUndefined()
The Clinical Document SHALL contain exactly one [1..1] Code that SHALL NOT be null flavor [CDAH-002]
OCL
(not self.code.oclIsUndefined()) and self.code.nullFlavor.oclIsUndefined()
The Clinical Document SHALL contain exactly one [1..1] Title that SHALL NOT be null flavor [CDAH-003]
OCL
(not self.title.oclIsUndefined()) and self.title.nullFlavor.oclIsUndefined()
The Clinical Document SHALL contain exactly one [1..1] Effective Time [CDAH-004]
OCL
(not self.effectiveTime.oclIsUndefined())
The Clinical Document SHALL contain exactly one [1..1] Confidentiality Code and SHALL NOT be null flavor [CDAH-005]
OCL
(not self.confidentialityCode.oclIsUndefined()) and self.confidentialityCode.nullFlavor.oclIsUndefined()
The Clinical Document Confidentiality Code SHALL be set to values defined by the Saudi eHeath Security and Privacy Interoperability Specification. [CDAH-034]
OCL
(not self.confidentialityCode.oclIsUndefined()) and
self.confidentialityCode.matchesValueSet('2.16.840.1.113883.3.3731.1.203.11.1', self.confidentialityCode.code, self.confidentialityCode.codeSystem, self.confidentialityCode.codeSystemName, null)
The ClinicalDocument SHALL contain exactly one [1..1] Patient Information that SHALL NOT be null flavor [CDAH-007]
OCL
self.recordTarget->exists(rt : POCDMT000040RecordTarget |
(not rt.patientRole.oclIsUndefined()) and
(not rt.patientRole.patient.oclIsUndefined()) and
rt.patientRole.patient.nullFlavor.oclIsUndefined()
)
The Patient Information SHALL contain exactly one [1..1] Patient Identifier that SHALL NOT be null flavor [CDAH-008]
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
rt.patientRole.oclIsUndefined() or
(not rt.patientRole.nullFlavor.oclIsUndefined()) or
rt.patientRole.patient.oclIsUndefined() or
(not rt.patientRole.patient.nullFlavor.oclIsUndefined()) or
(
(not rt.patientRole.patient.id.oclIsUndefined()) and
rt.patientRole.patient.id.nullFlavor.oclIsUndefined()
)
)
The Patient Information SHALL contain one or more [1..*] Name that SHALL NOT be null flavor [CDAH-009]
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
rt.patientRole.oclIsUndefined() or
(
(not rt.patientRole.patient.oclIsUndefined()) and
rt.patientRole.patient.name->exists(pn : PN |
pn.nullFlavor.oclIsUndefined()
)
)
)
The Patient Information SHALL contain exactly one [1..1] Gender [CDAH-011]
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
rt.patientRole.oclIsUndefined() or
(
(not rt.patientRole.patient.oclIsUndefined()) and
(not rt.patientRole.patient.administrativeGenderCode.oclIsUndefined()) and
rt.patientRole.patient.administrativeGenderCode.nullFlavor.oclIsUndefined()
)
)
The Gender shall contain exactly one code/@code from the KSA Gender Value Set [CDAH-032]
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
rt.patientRole.oclIsUndefined() or
rt.patientRole.patient.oclIsUndefined() or
rt.patientRole.patient.administrativeGenderCode.oclIsUndefined() or
(
(not rt.patientRole.patient.administrativeGenderCode.code.oclIsUndefined()) and
rt.patientRole.patient.administrativeGenderCode.matchesCodeToValueSet('2.16.840.1.113883.3.3731.1.201.8', rt.patientRole.patient.administrativeGenderCode.code)
)
)
The Patient Information SHALL contain exactly one [1..1] Birth Time that SHALL NOT be null flavor [CDAH-012]
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
rt.patientRole.oclIsUndefined() or
(
(not rt.patientRole.patient.oclIsUndefined()) and
(not rt.patientRole.patient.birthTime.oclIsUndefined()) and
rt.patientRole.patient.birthTime.nullFlavor.oclIsUndefined()
)
)
The Previous Version SHALL contain exactly one [1..1] Document Identifier and SHALL NOT be null flavor [CDAH-032]
OCL
self.relatedDocument->select(rd : POCDMT000040RelatedDocument |
(not rd.typeCode.oclIsUndefined()) and
rd.typeCode=XActRelationshipDocument::RPLC
)->forAll(rd : POCDMT000040RelatedDocument |
(not rd.parentDocument.oclIsUndefined()) and
rd.parentDocument.id->size()=1 and
rd.parentDocument.id->first().nullFlavor.oclIsUndefined()
)
The Patient Information SHALL contain exactly one [1..1] Patient Nationality which SHALL contain code/@code from the Nationality value set in IS0201 Saudi eHealth Laboratory Terminology Interoperability Specification. [CDAH-051]
OCL
self.participant->select(par : POCDMT000040Participant1 |
(not par.typeCode.oclIsUndefined()) and
par.typeCode=ParticipationType::SBJ and
(not par.associatedEntity.oclIsUndefined()) and
(not par.associatedEntity.classCode.oclIsUndefined()) and
par.associatedEntity.classCode=RoleClassAssociative::CIT
)->forAll(par : POCDMT000040Participant1 |
(not par.associatedEntity.code.oclIsUndefined()) and
par.associatedEntity.code.matchesValueSet('2.16.840.1.113883.3.3731.1.201.9', par.associatedEntity.code.code, par.associatedEntity.code.codeSystem, null, null)
)
A Time Stamp Value , Start Date or End Date SHALL contain the Century and Year [CDAH-056]
OCL
self.value.oclIsUndefined() or self.matches(self.value, '^[0-9]{4}.*')
A Time Stamp Value , Start Date or End Date SHALL contain the Month if known [CDAH-057]
OCL
self.value.oclIsUndefined() or self.matches(self.value, '^[0-9]{6}.*')
A Time Stamp Value , Start Date or End Date SHALL contain the Date if known. [CDAH-058]
OCL
self.value.oclIsUndefined() or self.matches(self.value, '^[0-9]{8}.*')
A Time Stamp Value , Start Date or End Date SHALL contain the Time Zone if Hours are included. [CDAH-060]
OCL
self.value.oclIsUndefined() or (not (self.matches(self.value, '^[0-9]{10}.*'))) or
self.matches(self.value, '.*(\\+|\\-)[0-9]{4}$')
The Name SHOULD have at least one and no more than two values [1..2] for Name Type. [CDAH-061]
OCL
self.use ->size()=1 or
self.use ->size()=2
The Name SHALL have at most one [0..1] Name Prefix [CDAH-062]
OCL
self.prefix->size()<2
The Name SHALL have exactly one [1..1] Family Name IF KNOWN [CDAH-063]
OCL
not (self.family->isEmpty()) and self.family->size()=1
The Name SHALL have no more than 2 [0..2] given elements [CDAH-64]
OCL
self.given->size()<3
The Name SHALL have exactly one [1..1] First Name stored in the given[1] element IF KNOWN [CDAH-65]
OCL
not (self.given->isEmpty()) and self.given->size()>0
The Name SHALL have exactly one [1..1] Middle Name stored in the given[2] element IF KNOWN.
OCL
not (self.given->isEmpty()) and self.given->size()>1
The Name Type for the Name SHALL be contain the value ‘L’ when the name specified is the legal name. This value may be combined with other name type values described below [CDAH-68]
OCL
self.use->select(st : String | st='L')->size()>0
The Name Type SHALL have the value ‘SYL’ or 'ABC' or IDE' [CDAH-44] [CDAH-41] [CDAH-42]
OCL
self.use->select(st : String | st='SYL' or st='ABC' or st='IDE')->size()>0
The Assigning Authority for the patient identifier SHALL be valued with ‘2.16.840.1.113883.3.3731.1.1.100.1’ [CDAH-039]
OCL
self.id->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='2.16.840.1.113883.3.3731.1.1.100.1')
religiousAffiliationCode/@code SHALL be from the KSA Religious Affiliation value set in IS0202 [CDAH-054]
OCL
self.patient.oclIsUndefined() or self.patient.religiousAffiliationCode.oclIsUndefined() or
(not self.patient.religiousAffiliationCode.nullFlavor.oclIsUndefined()) or
self.patient.religiousAffiliationCode.matchesValueSet('2.16.840.1.113883.3.3731.1.202.10', self.patient.religiousAffiliationCode.code,
self.patient.religiousAffiliationCode.codeSystem, null, null)
The Assigning Authority for an organization identifier SHALL be valued with ‘2.16.840.1.113883.3.3731.1.2.2’ [CDAH-036]
OCL
self.id->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='2.16.840.1.113883.3.3731.1.2.2')
The Assigning Authority for an organization identifier SHALL be valued with ‘2.16.840.1.113883.3.3731.1.2.2’ [CDAH-036]
OCL
self.id->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='2.16.840.1.113883.3.3731.1.2.2')
The Author SHALL contain exactly one [1..1] Time and SHALL NOT be null flavor [CDAH-013]
OCL
(not self.time.oclIsUndefined()) and self.time.nullFlavor.oclIsUndefined()
The Author SHALL contain exactly one [1..1] Author Identifier n that reflects the value of the Unique Entry Identifier of the provider as maintained by the provider [CDAH-014]
OCL
self.assignedAuthor.id->size()>0
The Author SHALL contain at least one [1..*] Author Name and SHALL NOT be null flavor. [CDAH-016]
OCL
(not self.assignedAuthor.oclIsUndefined()) and
(not self.assignedAuthor.assignedPerson.oclIsUndefined()) and
self.assignedAuthor.assignedPerson.name->size()>0 and
self.assignedAuthor.assignedPerson.name->forAll(pn : PN |
pn.nullFlavor.oclIsUndefined()
)
The Author SHALL contain exactly one [1..1] Organization Identifier that reflects the value of the Unique Entry Identifier of the organization as maintained by the provider directory. [CDAH-018]
OCL
(not self.assignedAuthor.oclIsUndefined()) and
(not self.assignedAuthor.representedOrganization.oclIsUndefined()) and
self.assignedAuthor.representedOrganization.id->size()=1
The Author SHALL contain exactly one [1..1] Organization Name and SHALL NOT be null flavor [CDAH-019]
OCL
(not self.assignedAuthor.oclIsUndefined()) and
(not self.assignedAuthor.representedOrganization.oclIsUndefined()) and
self.assignedAuthor.representedOrganization.name->size()=1 and
self.assignedAuthor.representedOrganization.name->first().nullFlavor.oclIsUndefined()
The Legal Authenticator SHALL contain exactly one [1..1] Legal Authenticator Identifier that reflects the value of the Unique Entry Identifier of the Legal Authenticator as maintained by the provider directory. [CDAH-023]
OCL
(not self.assignedEntity.oclIsUndefined()) and self.assignedEntity.id->size()=1
Exactly one Authenticator SHALL contain at least one [1..*] Name and SHALL NOT be null flavor [CDAH-024]
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.oclIsUndefined()) and
self.assignedEntity.assignedPerson.name->size()>0 and
self.assignedEntity.assignedPerson.name->forAll(pn : PN |
pn.nullFlavor.oclIsUndefined()
)
Exactly one Name in the Legal Authenticator SHALL be marked as the legal name of the Legal Authenticator. [CDAH-052]
OCL
self.assignedEntity.oclIsUndefined() or
self.assignedEntity.assignedPerson.oclIsUndefined() or
self.assignedEntity.assignedPerson.name->forAll(pn : PN |
pn.use->exists(st : String | st = 'L')
)
The Authenticator SHALL contain exactly one [1..1] Author Identifier that reflects the value of the Unique Entry Identifier of the Author as maintained by the provider directory. [CDAH-027]
OCL
(not self.assignedEntity.oclIsUndefined()) and self.assignedEntity.id->size()=1
The Authenticator SHALL contain at least one [1..*] Name that SHALL NOT be null flavor [CDAH-029]
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.oclIsUndefined()) and
self.assignedEntity.assignedPerson.name->size()>0 and
self.assignedEntity.assignedPerson.name->forAll(pn : PN |
pn.nullFlavor.oclIsUndefined()
)
The Name in the Authenticator SHALL be marked as the legal name of the Authenticator [CDAH-053]
OCL
self.assignedEntity.oclIsUndefined() or
self.assignedEntity.assignedPerson.oclIsUndefined() or
self.assignedEntity.assignedPerson.name->forAll(pn : PN |
pn.use->exists(st : String | st = 'L')
)