realmCode SHALL be present and is valued from the RealmOfUse [2.16.840.1.113883.1.11.11050] subset, within the VocabularyDomainQualifier value set (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.3)
OCL
(not self.realmCode->isEmpty()) and self.realmCode->forAll(cs : CS | (not cs.code.oclIsUndefined()) and (not (cs.code='')))
typeId SHALL be present and valued as follows:ClinicalDocument/typeId@root = 2.16.840.1.113883.1.3, ClinicalDocument.typeId@extension = POCD_HD000040 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.4)
OCL
(not self.typeId.oclIsUndefined()) and (not self.typeId.root.oclIsUndefined()) and self.typeId.root='2.16.840.1.113883.1.3' and (not self.typeId.extension.oclIsUndefined()) and self.typeId.extension='POCD_HD000040'
ClinicalDocument/Id SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.6)
OCL
(not self.id.oclIsUndefined()) and (not self.id.root.oclIsUndefined()) and (not (self.id.root=''))
ClinicalDocument/code SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.7)
OCL
not self.code.oclIsUndefined() and (not self.code.code.oclIsUndefined())
The laboratory report can be either a multi-disciplinary report or a single discipline report (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.7)
OCL
self.code.oclIsUndefined() or
(
(not self.code.codeSystem.oclIsUndefined()) and self.code.codeSystem='2.16.840.1.113883.6.1' and
(not self.code.codeSystemName.oclIsUndefined()) and self.code.codeSystemName='LOINC' and
(not self.code.code.oclIsUndefined()) and self.code.code='11502-2' and
(not self.code.displayName.oclIsUndefined()) and self.code.displayName='LABORATORY REPORT.TOTAL'
)
or self.code.machesValueSet('', self.code.code, self.code.codeSystem, self.code.codeSystemName, self.code.displayName)
ClinicalDocument/effectiveTime SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.8)
OCL
(not self.effectiveTime.oclIsUndefined()) and (not self.effectiveTime.value.oclIsUndefined()) and (not (self.effectiveTime.value=''))
ClinicalDocument/confidentialityCode SHALL be present in accordance with the HL7 CDA R2 standard (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.9)
OCL
(not self.confidentialityCode.oclIsUndefined()) and
(not self.confidentialityCode.code.oclIsUndefined()) and
(not self.confidentialityCode.codeSystem.oclIsUndefined()) and
self.confidentialityCode.machesValueSet('',self.confidentialityCode.code, self.confidentialityCode.codeSystem, self.confidentialityCode.codeSystemName, self.confidentialityCode.displayName)
ClinicalDocument/languageCode SHALL be present in accordance with the HL7 CDA R2 standard (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.10)
OCL
(not self.languageCode.oclIsUndefined()) and (not self.languageCode.code.oclIsUndefined())
ClinicalDocument/setId SHALL be present to enable further updates of the clinical document (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.11)
OCL
(not self.setId.oclIsUndefined()) and (not self.setId.root.oclIsUndefined())
ClinicalDocument/versionNumber MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.12)
OCL
(not self.versionNumber.oclIsUndefined()) and (not self.versionNumber.value.oclIsUndefined())
ClinicalDocument/recordTarget SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13)
OCL
self.recordTarget->size()>0
ClinicalDocument/recordTarget SHALL conform to the Human Patient, Non-Human Subject or Human Patient with Non-Human Subject templates (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13)
OCL
self.recordTarget->forAll(rt : POCDMT000040RecordTarget |
(
(rt.templateId->size()=1) and
(not rt.templateId->first().root.oclIsUndefined()) and
(rt.templateId->first().root='1.3.6.1.4.1.19376.1.3.3.1.2' or rt.templateId->first().root='1.3.6.1.4.1.19376.1.3.3.1.3')
) or
(
rt.templateId->size()=0
)
)
if non human subject are recorded, it SHALL be represented in a Subject element in level 3 entries in the structuredBody as described in (2.3.5.3) (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.2)
OCL
self.recordTarget->select(rt : POCDMT000040RecordTarget |
(not rt.templateId->isEmpty()) and
rt.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.2' )
)->size()=0
or
(
(not self.component.oclIsUndefined()) and
(not self.component.structuredBody.oclIsUndefined()) and
(not self.component.structuredBody.component->isEmpty()) and
self.component.structuredBody.component->exists(comp : POCDMT000040Component3 |
(not comp.section.oclIsUndefined()) and
(
comp.section.entry->exists(entr : POCDMT000040Entry |
(not entr.act.oclIsUndefined()) and
(not entr.act.subject.oclIsUndefined()) and
(not entr.act.subject.templateId->isEmpty()) and
entr.act.subject.templateId->exists(tm : II | (not tm.root.oclIsUndefined()) and tm.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' )
)
or
(
comp.section.component->exists(comp2 : POCDMT000040Component5 |
(not comp.section.oclIsUndefined()) and
comp.section.entry->exists(entr : POCDMT000040Entry |
(not entr.act.oclIsUndefined()) and
(not entr.act.subject.oclIsUndefined()) and
(not entr.act.subject.templateId->isEmpty()) and
entr.act.subject.templateId->exists(tm : II | (not tm.root.oclIsUndefined()) and tm.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' )
)
)
)
)
)
)
if non human subject are recorded with human patient, it SHALL be represented in a Subject element in level 3 entries in the structuredBody as described in (2.3.5.4) (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
self.recordTarget->select(rt : POCDMT000040RecordTarget | (not rt.templateId->isEmpty()) and rt.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.3' ))->size()=0
or
(not self.component.oclIsUndefined()) and
self.component.structuredBody.oclIsUndefined() and
self.component.structuredBody.component->isEmpty() and
self.component.structuredBody.component->select(comp : POCDMT000040Component3 |
(not comp.section.oclIsUndefined()) and
(comp.section.entry->size()=1) and
comp.section.entry->forAll(entr : POCDMT000040Entry |
(not entr.act.oclIsUndefined()) and
(not entr.act.subject.oclIsUndefined()) and
(not entr.act.subject.templateId->isEmpty()) and
entr.act.subject.templateId->exists(tm : II | (not tm.root.oclIsUndefined()) and tm.root='1.3.6.1.4.1.19376.1.3.3.1.3.1' )
)
)->size()=self.recordTarget->select(rt : POCDMT000040RecordTarget | (not rt.templateId->isEmpty()) and rt.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.3' ))->size()
At least one ClinicalDocument/author SHALL be present with a time (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.14)
OCL
(not self.author->isEmpty()) and
self.author->exists(auth : POCDMT000040Author | (not auth.time.oclIsUndefined()) and (not auth.time.value.oclIsUndefined()))
author, in accordance with the HL7 CDA R2 standard requires the presence of name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.14)
OCL
self.author->forAll(auth : POCDMT000040Author |
(not auth.assignedAuthor.oclIsUndefined()) and
(
(not auth.assignedAuthor.assignedPerson.oclIsUndefined()) and
(not auth.assignedAuthor.assignedPerson.name->isEmpty())
)
or
(
(not auth.assignedAuthor.assignedAuthoringDevice.oclIsUndefined()) and
( (not auth.assignedAuthor.assignedAuthoringDevice.softwareName.oclIsUndefined()) or (not auth.assignedAuthor.assignedAuthoringDevice.manufacturerModelName.oclIsUndefined()) )
)
)
author, in accordance with the HL7 CDA R2 standard requires the presence of addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.14)
OCL
self.author->forAll(auth : POCDMT000040Author |
(not auth.assignedAuthor.oclIsUndefined()) and
(not auth.assignedAuthor.addr->isEmpty())
)
author, in accordance with the HL7 CDA R2 standard requires the presence of telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.14)
OCL
self.author->forAll(auth : POCDMT000040Author |
(not auth.assignedAuthor.oclIsUndefined()) and
(not auth.assignedAuthor.telecom->isEmpty())
)
ClinicalDocument/custodian SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.15)
OCL
(not self.custodian.oclIsUndefined())
custodian id shall be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.15)
OCL
(not self.custodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.id->isEmpty())
custodian, in accordance with the HL7 CDA R2 standard requires the presence of name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.15)
OCL
(not self.custodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.name.oclIsUndefined())
custodian, in accordance with the HL7 CDA R2 standard requires the presence of addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.15)
OCL
(not self.custodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.addr.oclIsUndefined())
custodian, in accordance with the HL7 CDA R2 standard requires the presence of telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.15)
OCL
(not self.custodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.oclIsUndefined()) and
(not self.custodian.assignedCustodian.representedCustodianOrganization.telecom.oclIsUndefined())
ClinicalDocument/informationRecipient MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.16)
OCL
not self.informationRecipient->isEmpty()
informationRecipient when present must have the templateId 1.3.6.1.4.1.19376.1.3.3.1.4 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.16)
OCL
(self.informationRecipient->isEmpty()) or self.informationRecipient->forAll(ir : POCDMT000040InformationRecipient | (not ir.templateId->isEmpty()) and ir.templateId->exists(ii : II | ii.root='1.3.6.1.4.1.19376.1.3.3.1.4') )
ClinicalDocument/legalAuthenticator MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.17)
OCL
not self.legalAuthenticator.oclIsUndefined()
legalAuthenticator, in accordance with the HL7 CDA R2 standard requires the presence of name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.17)
OCL
self.legalAuthenticator.oclIsUndefined() or
(
(not self.legalAuthenticator.assignedEntity.oclIsUndefined()) and
(not self.legalAuthenticator.assignedEntity.assignedPerson.oclIsUndefined()) and
(not self.legalAuthenticator.assignedEntity.assignedPerson.name->isEmpty())
)
legalAuthenticator, in accordance with the HL7 CDA R2 standard requires the presence of addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.17)
OCL
self.legalAuthenticator.oclIsUndefined() or
(
(not self.legalAuthenticator.assignedEntity.oclIsUndefined()) and
(not self.legalAuthenticator.assignedEntity.addr->isEmpty())
)
legalAuthenticator, in accordance with the HL7 CDA R2 standard requires the presence of telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.17)
OCL
self.legalAuthenticator.oclIsUndefined() or
(
(not self.legalAuthenticator.assignedEntity.oclIsUndefined()) and
(not self.legalAuthenticator.assignedEntity.telecom->isEmpty())
)
The ClinicalDocument/authenticator element MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.18)
OCL
(not self.authenticator->isEmpty())
In the case of multiple validators, each individual validator SHALL be associated with the particular sections of the report he or she validated (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.19)
OCL
if (self.authenticator->size()>1)
then
self.authenticator->forAll(auth : POCDMT000040Authenticator | (not auth.assignedEntity.oclIsUndefined()) and (not auth.assignedEntity.id->isEmpty()) ) and
(
self.component.oclIsUndefined() or
self.component.structuredBody.oclIsUndefined() or
self.component.structuredBody.component->forAll(comp : POCDMT000040Component3 |
comp.section.oclIsUndefined() or
(comp.section.component->isEmpty()) or
comp.section.component->forAll(comp2 : POCDMT000040Component5 |
comp2.section.oclIsUndefined() or
comp2.section.entry->forAll(entr : POCDMT000040Entry |
entr.act.oclIsUndefined() or
entr.act.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.observation.oclIsUndefined() or
entrr.observation.participant->exists(part : POCDMT000040Participant2 |
(not part.typeCode.oclIsUndefined()) and
part.typeCode=ParticipationType::AUTHEN and
(not part.participantRole.oclIsUndefined()) and
part.participantRole.id->exists(ip : II |
self.authenticator->exists(auth : POCDMT000040Authenticator | (not auth.assignedEntity.oclIsUndefined()) and (not auth.assignedEntity.id->isEmpty()) and auth.assignedEntity.id->exists(id1 : II |
((id1.root.oclIsUndefined()) or id1.root=ip.root) and
((id1.extension.oclIsUndefined()) or id1.extension=ip.extension) and
( (not id1.root.oclIsUndefined()) or (not id1.extension.oclIsUndefined()) )
) )
)
)
)
)
)
)
)
else true
endif
ClinicalDocument/participant(s) MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.20)
OCL
not self.participant->isEmpty()
when present, participant shall have the template 1.3.6.1.4.1.19376.1.3.3.1.6 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.20)
OCL
self.participant->forAll(part : POCDMT000040Participant1 | part.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.6' ))
The inFulfillmentOf/order element MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.20)
OCL
not self.inFulfillmentOf->isEmpty()
inFulfillmentOf/order/id is required, It represents the Placer Order or the Placer Group that was fulfilled (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.20)
OCL
self.inFulfillmentOf->forAll((not order.oclIsUndefined()) and (not order.id->isEmpty()) )
ClinicalDocument/documentationOf(s) MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.21)
OCL
(not self.documentationOf->isEmpty())
Use of sub element documentationOf/serviceEvent/effectiveTime to document the time boundaries of events in the document is appropriate (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.21)
OCL
self.documentationOf->forAll(doc : POCDMT000040DocumentationOf |
(not doc.serviceEvent.oclIsUndefined()) and
(not doc.serviceEvent.effectiveTime.oclIsUndefined())
)
Laboratory Performers MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
(not self.documentationOf->isEmpty()) and
self.documentationOf->forAll(doc : POCDMT000040DocumentationOf |
(not doc.serviceEvent.oclIsUndefined()) and
(not doc.serviceEvent.performer->isEmpty())
)
performer shall have root=1.3.6.1.4.1.19376.1.3.3.1.7 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
(not self.documentationOf->isEmpty()) and
self.documentationOf->forAll(doc : POCDMT000040DocumentationOf |
(not doc.serviceEvent.oclIsUndefined()) and
(not doc.serviceEvent.performer->isEmpty()) and
doc.serviceEvent.performer->forAll(perf : POCDMT000040Performer1 |
perf.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.7' )
)
)
the number of performer on ClinicalDocument/documentationOf/serviceEvent shall not be more than one, otherwise the performer must be present on the body (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
self.documentationOf->forAll(doc : POCDMT000040DocumentationOf |
(not doc.serviceEvent.oclIsUndefined()) and
(doc.serviceEvent.performer->size()<2)
) and
(self.documentationOf->select(doc : POCDMT000040DocumentationOf |
(not doc.serviceEvent.oclIsUndefined()) and
(doc.serviceEvent.performer->size()=1)
)->size()<2)
ClinicalDocument/relatedDocument/parentDocument SHALL be present in case of an update replacement of a previous report. In this case relatedDocument@typeCode attribute SHALL be valued RPLC (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.23)
OCL
(not self.relatedDocument->isEmpty()) and
self.relatedDocument->forAll(doc : POCDMT000040RelatedDocument |
(not doc.parentDocument.oclIsUndefined()) and
doc.parentDocument.id->exists(ii : II | (not ii.root.oclIsUndefined()) ) and
(not doc.typeCode.oclIsUndefined()) and
doc.typeCode=XActRelationshipDocument::RPLC
)
The ClinicalDocument/componentOf/encompassingEncounter element MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
(not self.componentOf.oclIsUndefined()) and
(not self.componentOf.encompassingEncounter.oclIsUndefined())
When present the encounter SHALL be identified with an id element: encompassingEncounter/id (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
(
(self.componentOf.encompassingEncounter.id->size()>0) and
self.componentOf.encompassingEncounter.id->exists(ii : II | (not ii.root.oclIsUndefined()))
)
When present the encounter SHALL have an effective time that represents the time interval of the encounter (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
(
(not self.componentOf.encompassingEncounter.effectiveTime.oclIsUndefined())
)
When present, encounter participants SHALL be in accordance with the HL7 CDA R2 standard with a name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
self.componentOf.encompassingEncounter.encounterParticipant->isEmpty() or
self.componentOf.encompassingEncounter.encounterParticipant->forAll(encp : POCDMT000040EncounterParticipant |
(not encp.assignedEntity.oclIsUndefined()) and
(not encp.assignedEntity.assignedPerson.oclIsUndefined()) and
(not encp.assignedEntity.assignedPerson.name->isEmpty())
)
When present, encounter participants SHALL be in accordance with the HL7 CDA R2 standard with a addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
self.componentOf.encompassingEncounter.encounterParticipant->isEmpty() or
self.componentOf.encompassingEncounter.encounterParticipant->forAll(encp : POCDMT000040EncounterParticipant |
(not encp.assignedEntity.oclIsUndefined()) and
(not encp.assignedEntity.addr->isEmpty())
)
When present, encounter participants SHALL be in accordance with the HL7 CDA R2 standard with a telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
self.componentOf.encompassingEncounter.encounterParticipant->isEmpty() or
self.componentOf.encompassingEncounter.encounterParticipant->forAll(encp : POCDMT000040EncounterParticipant |
(not encp.assignedEntity.oclIsUndefined()) and
(not encp.assignedEntity.telecom->isEmpty())
)
When present, encounter participants SHALL be in accordance with the HL7 CDA R2 standard with a time (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
self.componentOf.encompassingEncounter.encounterParticipant->isEmpty() or
self.componentOf.encompassingEncounter.encounterParticipant->forAll(encp : POCDMT000040EncounterParticipant |
(not encp.time.oclIsUndefined())
)
When present, encounter participants SHALL have a typeCode (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.24)
OCL
self.componentOf.oclIsUndefined() or
self.componentOf.encompassingEncounter.oclIsUndefined() or
self.componentOf.encompassingEncounter.encounterParticipant->isEmpty() or
self.componentOf.encompassingEncounter.encounterParticipant->forAll(encp : POCDMT000040EncounterParticipant |
(not encp.typeCode.oclIsUndefined())
)
A laboratory report SHALL have a structuredBody (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4)
OCL
(not self.component.oclIsUndefined()) and (not self.component.structuredBody.oclIsUndefined())
This body is organized as a tree of up to two levels of sections (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4)
OCL
(self.component.oclIsUndefined()) or (self.component.structuredBody.oclIsUndefined()) or
(self.component.structuredBody.component->isEmpty()) or
self.component.structuredBody.component->forAll(comp1 : POCDMT000040Component3 |
comp1.section.oclIsUndefined() or
comp1.section.component->isEmpty() or
comp1.section.component->forAll(comp2 : POCDMT000040Component5 |
comp2.section.oclIsUndefined() or
comp2.section.component->isEmpty()
)
)
Every Laboratory Report SHALL contain at least one Laboratory Specialty Section (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4, 2.3.4.1.1)
OCL
(not self.component.oclIsUndefined()) and ( not self.component.structuredBody.oclIsUndefined()) and
(not self.component.structuredBody.component->isEmpty()) and
self.component.structuredBody.component->exists(comp : POCDMT000040Component3 |
(not comp.section.oclIsUndefined()) and
comp.section.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.2.1' )
)
Entry/act/performer must be present if the number of performer is more than one (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(
self.documentationOf->size()=1 and
self.documentationOf->forAll(doc : POCDMT000040DocumentationOf | (not doc.serviceEvent.oclIsUndefined()) and (doc.serviceEvent.performer->size()=1))
) or
(
self.component.oclIsUndefined() or
self.component.structuredBody.oclIsUndefined() or
self.component.structuredBody.component->isEmpty() or
self.component.structuredBody.component->forAll(comp : POCDMT000040Component3 |
comp.section.oclIsUndefined() or
(
comp.section.entry->forAll(entr : POCDMT000040Entry |
(not entr.act.oclIsUndefined()) and
(not entr.act.performer->isEmpty()) and
entr.act.performer->forAll(perf : POCDMT000040Performer2 | (not perf.typeCode.oclIsUndefined()) and perf.typeCode=ParticipationPhysicalPerformer::PRF)
)
and
comp.section.component->forAll(comp2 : POCDMT000040Component5 |
comp2.section.oclIsUndefined() or
comp2.section.entry->isEmpty() or
comp2.section.entry->forAll(entr2 : POCDMT000040Entry |
(not entr2.act.oclIsUndefined()) and
(not entr2.act.performer->isEmpty()) and
entr2.act.performer->forAll(perf2 : POCDMT000040Performer2 | (not perf2.typeCode.oclIsUndefined()) and perf2.typeCode=ParticipationPhysicalPerformer::PRF)
)
)
)
)
)
Entry/act/author used if different from the author of the header, to supersede it for this section (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(self.author->size()>1) or
(
self.component.oclIsUndefined() or
self.component.structuredBody.oclIsUndefined() or
self.component.structuredBody.component->isEmpty() or
self.component.structuredBody.component->forAll(comp : POCDMT000040Component3 |
comp.section.oclIsUndefined() or
comp.section.entry->isEmpty() or
comp.section.entry->forAll(entr : POCDMT000040Entry |
(entr.act.oclIsUndefined()) or
entr.act.author->isEmpty() or
entr.act.author->forAll(auth : POCDMT000040Author |
(not auth.assignedAuthor.oclIsUndefined()) and
(not auth.assignedAuthor.id->isEmpty()) and
auth.assignedAuthor.id->select(ii : II |
self.author->select(autho : POCDMT000040Author |
(not autho.assignedAuthor.oclIsUndefined()) and
autho.assignedAuthor.id->exists(i2 : II |
((i2.root.oclIsUndefined()) or i2.root=ii.root) and
((i2.extension.oclIsUndefined()) or i2.extension=ii.extension) and
((not i2.extension.oclIsUndefined()) or (not i2.root.oclIsUndefined()))
)
)->size()=0
)->size()>0
)
)
-- TODO constraint about leaf section
)
)
The templateId SHALL be present and valued to 1.3.6.1.4.1.19376.1.3.3 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.5)
OCL
(not self.templateId->isEmpty()) and self.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3')
XD-LAB requires the presence of name for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.name->isEmpty())
)
XD-LAB requires the presence of addr for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.addr->isEmpty())
)
XD-LAB requires the presence of telecom for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.telecom->isEmpty())
)
The patientRole/id SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.id->isEmpty())
)
The patientRole/patient/administrativeGenderCode SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()<>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.administrativeGenderCode.oclIsUndefined())
)
The patientRole/patient/birthTime SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.1)
OCL
(self.templateId->size()<>0) or
(
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.birthTime.oclIsUndefined())
)
templateId SHALL have root=1.3.6.1.4.1.19376.1.3.3.1.2 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.2)
OCL
(self.templateId->size()=1) and (not self.templateId->first().root.oclIsUndefined()) and self.templateId->first().root='1.3.6.1.4.1.19376.1.3.3.1.2'
/patientRole/id SHALL be present and SHALL represent the id of the non-human subject (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.2)
OCL
(not self.patientRole.oclIsUndefined()) and (self.patientRole.id->size()=1) and (not self.patientRole.id->first().root.oclIsUndefined())
The recordTarget/patientRole SHALL have a patient sub-element and its nullFlavor SHALL be set to OTH (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.2)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.nullFlavor.oclIsUndefined()) and
self.patientRole.patient.nullFlavor=NullFlavor::OTH
XD-LAB requires the presence of name for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.name->isEmpty())
XD-LAB requires the presence of addr for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.addr->isEmpty())
XD-LAB requires the presence of telecom for all entities in the document including the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.telecom->isEmpty())
The templateId SHALL have root=1.3.6.1.4.1.19376.1.3.3.1.3 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(self.templateId->size() = 1) and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.3')
recordTarget/patientRole/id SHALL be present. It SHALL be representative of the id of the human patient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.id->isEmpty())
The patientRole/patient/administrativeGenderCode SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.administrativeGenderCode.oclIsUndefined())
The patientRole/patient/birthTime SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.13.3)
OCL
(not self.patientRole.oclIsUndefined()) and
(not self.patientRole.patient.oclIsUndefined()) and
(not self.patientRole.patient.birthTime.oclIsUndefined())
XD-LAB requires the presence of name for all informationRecipient (on the informationRecipient and/or receivedOrganization) (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.16)
OCL
(not self.intendedRecipient.oclIsUndefined()) and
(
(
(not self.intendedRecipient.informationRecipient.oclIsUndefined()) and
(not self.intendedRecipient.informationRecipient.name->isEmpty())
) or
(
(not self.intendedRecipient.receivedOrganization.oclIsUndefined()) and
(not self.intendedRecipient.receivedOrganization.name->isEmpty())
)
)
XD-LAB requires the presence of addr for all informationRecipient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.16)
OCL
(not self.intendedRecipient.oclIsUndefined()) and
(not self.intendedRecipient.addr->isEmpty())
XD-LAB requires the presence of telecom for all informationRecipient (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.16)
OCL
(not self.intendedRecipient.oclIsUndefined()) and (not (self.intendedRecipient.telecom->isEmpty()) )
authenticator require the presence of name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.18)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.name->isEmpty())
authenticator require the presence of addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.18)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.addr->isEmpty())
authenticator require the presence of telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.18)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.telecom->isEmpty())
The templateId SHALL have root=1.3.6.1.4.1.19376.1.3.3.1.5 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.18)
OCL
self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.5')
participant require name attribute (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.19)
OCL
(not self.associatedEntity.oclIsUndefined()) and
(
(
(not self.associatedEntity.associatedPerson.oclIsUndefined()) and
(not self.associatedEntity.associatedPerson.name->isEmpty())
) or
(
(not self.associatedEntity.scopingOrganization.oclIsUndefined()) and
(not self.associatedEntity.scopingOrganization.name->isEmpty())
)
)
participant require addr attribute (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.19)
OCL
(not self.associatedEntity.oclIsUndefined()) and
(not self.associatedEntity.addr->isEmpty())
participant require telecom attribute (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.19)
OCL
(not self.associatedEntity.oclIsUndefined()) and
(not self.associatedEntity.telecom->isEmpty())
A Laboratory Performer, when present, SHALL be in accordance with the HL7 CDA R2 standard with a time element (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
not self.time.oclIsUndefined()
A Laboratory Performer, when present, SHALL be in accordance with the HL7 CDA R2 standaand require the presence of name (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.oclIsUndefined()) and
(not self.assignedEntity.assignedPerson.name->isEmpty())
A Laboratory Performer, when present, SHALL be in accordance with the HL7 CDA R2 standaand require the presence of addr (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.addr->isEmpty())
A Laboratory Performer, when present, SHALL be in accordance with the HL7 CDA R2 standaand require the presence of telecom (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.3.22)
OCL
(not self.assignedEntity.oclIsUndefined()) and
(not self.assignedEntity.telecom->isEmpty())
A top level section SHALL contain either on text block carrying all the text results produced for this specialty along with a single LaboratoryData Processing Entry or a set of Laboratory Report Item Sections
(IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4)
OCL
(
(not self.text.oclIsUndefined()) and
(self.entry->size()=1)
)
xor
(
(self.component->size()>0) and
self.component->exists(comp : POCDMT000040Component5 |
(not comp.section.oclIsUndefined()) and
comp.section.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.2.2')
)
)
The Laboratory Specialty Sections use the LOINC codes defined as report subject identifier codes (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.1)
OCL
(not self.code.oclIsUndefined()) and (not self.code.code.oclIsUndefined()) and self.code.machesValueSet('1.3.6.1.4.1.12559.11.4.4.1', self.code.code, self.code.codeSystem, self.code.codeSystemName, self.code.displayName)
Laboratory Specialty Sections SHALL NOT be nested (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.1)
OCL
self.component->isEmpty() or
self.component->forAll(comp : POCDMT000040Component5 |
comp.section.oclIsUndefined() or
comp.section.templateId->select(ii : II| (not ii.root.oclIsUndefined()) and (ii.root='1.3.6.1.4.1.19376.1.3.3.2.1'))->size()=0
)
title MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.2)
OCL
not self.title.oclIsUndefined()
if lab report item present, this Laboratory Specialty Section SHALL contain NEITHER a top level text NOR entry elements (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.2)
OCL
self.component->isEmpty() or
self.component->forAll(comp : POCDMT000040Component5 |
comp.section.oclIsUndefined() or
comp.section.templateId->select(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.2.2')->size()=0
) or (self.text.oclIsUndefined() and self.entry->isEmpty() )
if text and entry specified, the text must not be blank (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.2)
OCL
not (
(not self.text.oclIsUndefined()) and
(self.entry->size()=1)
)
or
(
(not self.text.br->isEmpty()) or
(not self.text.content->isEmpty()) or
(not self.text.footnote->isEmpty()) or
(not self.text.footnoteRef->isEmpty()) or
(not self.text.linkHtml->isEmpty()) or
(not self.text.list->isEmpty()) or
(not self.text.paragraph->isEmpty()) or
(not self.text.renderMultiMedia->isEmpty()) or
(not self.text.sub->isEmpty()) or
(not self.text.sup->isEmpty()) or
(not self.text.table->isEmpty())
)
if text and entry specified, Laboratory Report Data Processing Entry SHALL be present with attribute typeCode=DRIV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.1.2)
OCL
not (
(not self.text.oclIsUndefined()) and
(self.entry->size()=1)
)
or
(
self.entry->forAll(entr : POCDMT000040Entry | entr.typeCode=XActRelationshipEntry::DRIV)
)
When section is a Specialty Section, code of section/entry/act/ is a LOINC Specialty (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
not (
(not self.text.oclIsUndefined()) and
(self.entry->size()=1)
)
or
(
self.entry->forAll(entr : POCDMT000040Entry |
entr.act.oclIsUndefined() or
entr.act.code.oclIsUndefined() or
entr.act.code.machesValueSet('1.3.6.1.4.1.12559.11.4.4.1', entr.act.code.code, entr.act.code.codeSystem, entr.act.code.codeSystemName, entr.act.code.displayName)
)
)
Any leaf section SHALL contain a single Laboratory Data Processing Entry (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4)
OCL
self.entry->size()=1
code is required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2)
OCL
not self.code.oclIsUndefined()
The code, codeSystem, and displayName SHALL be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2)
OCL
(not self.code.oclIsUndefined()) and
(not self.code.code.oclIsUndefined()) and
(not self.code.codeSystem.oclIsUndefined()) and
(not self.code.displayName.oclIsUndefined())
title MAY be present (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2)
OCL
not self.title.oclIsUndefined()
The Laboratory Report Item Section text SHALL be present and not blank (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2)
OCL
(not self.text.oclIsUndefined()) and
(
(not self.text.br->isEmpty()) or
(not self.text.content->isEmpty()) or
(not self.text.footnote->isEmpty()) or
(not self.text.footnoteRef->isEmpty()) or
(not self.text.linkHtml->isEmpty()) or
(not self.text.list->isEmpty()) or
(not self.text.paragraph->isEmpty()) or
(not self.text.renderMultiMedia->isEmpty()) or
(not self.text.sub->isEmpty()) or
(not self.text.sup->isEmpty()) or
(not self.text.table->isEmpty())
)
The Laboratory Report Item Section SHALL contain a Lab Report Data Processing Entry with typeCode=DRIV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2, 2.3.5.1.1)
OCL
(not self.entry->isEmpty()) and
self.entry->forAll(entr : POCDMT000040Entry | (not entr.typeCode.oclIsUndefined()) and entr.typeCode=XActRelationshipEntry::DRIV )
The Laboratory Report Item Section SHALL contain only one Lab Report Data Processing Entry and its root is root=1.3.6.1.4.1.19376.1.3.1 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.4.2, 2.3.5.2)
OCL
(not self.entry->isEmpty()) and
(self.entry->size()=1) and
self.entry->forAll(entr : POCDMT000040Entry | (not entr.typeCode.oclIsUndefined()) and entr.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1' ) )
The entry SHALL contain a single act sub-element (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2)
OCL
not self.act.oclIsUndefined()
The Specimen Act shall contain at least one Laboratory Observation (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2)
OCL
(not self.act.oclIsUndefined()) and self.act.entryRelationship->exists(entrr : POCDMT000040EntryRelationship |
(not entrr.observation.oclIsUndefined()) and
entrr.observation.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.6')
)
typeCode is required and shall be DRIV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(not self.typeCode.oclIsUndefined()) and self.typeCode=XActRelationshipEntry::DRIV
only one templateId is allowed (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
self.templateId->size()=1
entry/act@classCode is required and fixed to ACT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(not self.act.oclIsUndefined()) and (not self.act.classCode.oclIsUndefined()) and self.act.classCode=XActClassDocumentEntryAct::ACT
entry/act@moodCode is required and shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(not self.act.oclIsUndefined()) and (not self.act.moodCode.oclIsUndefined()) and self.act.moodCode=XDocumentActMood::EVN
act/code required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(not self.act.oclIsUndefined()) and (not self.act.code.oclIsUndefined()) and (not self.act.code.code.oclIsUndefined())
act/statusCode required and must be completed, active, or aborded (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
(not self.act.oclIsUndefined()) and (not self.act.statusCode.oclIsUndefined()) and (not self.act.statusCode.code.oclIsUndefined()) and
(
self.act.statusCode.code='completed' or
self.act.statusCode.code='active' or
self.act.statusCode.code='aborded'
)
act/participant@typeCode if present must be AUTHEN or RESP or DEV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
self.act.oclIsUndefined() or
self.act.participant->forAll(part : POCDMT000040Participant2 | (not part.typeCode.oclIsUndefined()) or part.typeCode=ParticipationType::AUTHEN or part.typeCode=ParticipationType::RESP or part.typeCode=ParticipationType::DEV )
entryRelationShip is required and must have the typeCode=COMP (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.2, Table 2.3.5.2-1)
OCL
self.act.oclIsUndefined() or
(self.act.entryRelationship->size()>0) and
self.act.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship | (not entrr.typeCode.oclIsUndefined()) and entrr.typeCode=XActRelationshipEntryRelationship::COMP )
notification organizer may be present in an entryRelationship under the Specimen Act of a Laboratory Data Processing Entry (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7)
OCL
(not self.act.oclIsUndefined()) and self.act.entryRelationship->exists(entrr : POCDMT000040EntryRelationship |
(not entrr.organizer.oclIsUndefined()) and entrr.organizer.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1')
)
notificationorganizer SHALL be present when any of the following Notifications are present: Notifiable Condition, Case Identification, and/or Outbreak Identification (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7)
OCL
(self.act.oclIsUndefined()) or
self.act.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.organizer.oclIsUndefined() or
entrr.organizer.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1' ) or
entrr.organizer.component->isEmpty() or
entrr.organizer.component->select(comp : POCDMT000040Component4 |
(not comp.observation.oclIsUndefined()) and
comp.observation.templateId->exists(ii : II |
(not ii.root.oclIsUndefined()) and
(
ii.root='1.3.6.1.4.1.19376.1.3.1.1.1' or
ii.root='1.3.6.1.4.1.19376.1.3.1.1.2' or
ii.root='1.3.6.1.4.1.19376.1.3.1.1.3'
)
)
)->size()=0
)
If the Report_Entry is completed, then the SpecimenObservationCluster_Organizer cannot be active (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Note 2)
OCL
self.act.oclIsUndefined() or
self.act.statusCode.oclIsUndefined() or
self.act.statusCode.code.oclIsUndefined() or
(not (self.act.statusCode.code='completed')) or
self.act.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.organizer->select(org : POCDMT000040Organizer |
org.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.5')
)->forAll(org2 : POCDMT000040Organizer |
org2.statusCode.oclIsUndefined() or
org2.statusCode.code.oclIsUndefined() or
(not (org2.statusCode.code='active'))
)
)
The document SHALL contain at least one Laboratory Observation under the Specimen Act of each Laboratory Data Processing Entry (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10)
OCL
(not self.act.oclIsUndefined()) and self.act.entryRelationship->exists(entrr : POCDMT000040EntryRelationship |
entrr.observation->exists(obs : POCDMT000040Observation |
obs.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.6')
)
or
entrr.organizer->exists(org : POCDMT000040Organizer |
org.component->exists(comp : POCDMT000040Component4 |
comp.observation->exists(obs : POCDMT000040Observation |
obs.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.6')
)
)
)
)
The Laboratory Observation SHALL record a single laboratory observation in the document, either standalone or as part of a battery (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10)
OCL
(not self.act.oclIsUndefined()) and self.act.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.organizer->forAll(org : POCDMT000040Organizer |
org.component->select(comp : POCDMT000040Component4 |
comp.observation->exists(obs : POCDMT000040Observation |
obs.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.6')
)
)->size()=0 or org.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.4' )
)
)
templateId is unique and valued to 1.3.6.1.4.1.19376.1.3.3.1.2.1 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.3, Table 2.3.5.3-1)
OCL
(not self.templateId->isEmpty()) and self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' )
subject/relatedSubject required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.3, Table 2.3.5.3-1)
OCL
(not self.relatedSubject.oclIsUndefined())
subject/relatedSubject/code is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.3, Table 2.3.5.3-1)
OCL
(not self.relatedSubject.oclIsUndefined()) and (not self.relatedSubject.code.oclIsUndefined()) and (not self.relatedSubject.code.code.oclIsUndefined())
subject/relatedSubject/addr is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.3, Table 2.3.5.3-1)
OCL
(not self.relatedSubject.oclIsUndefined()) and (self.relatedSubject.addr->size()=1)
templateId required, unique and valued to 1.3.6.1.4.1.19376.1.3.3.1.3.1 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.4, Table 2.3.5.4-1)
OCL
(self.templateId->size()=1) and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.3.1.3.1' )
subject/relatedSubject required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.4, Table 2.3.5.4-1)
OCL
not self.relatedSubject.oclIsUndefined()
subject/relatedSubject/code required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.4, Table 2.3.5.4-1)
OCL
(not self.relatedSubject.oclIsUndefined()) and (not self.relatedSubject.code.oclIsUndefined()) and (not self.relatedSubject.code.code.oclIsUndefined())
subject/relatedSubject/addr is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.4, Table 2.3.5.4-1)
OCL
(not self.relatedSubject.oclIsUndefined()) and (self.relatedSubject.addr->size()=1)
procedure@classCode fixed to PROC for specimen collection (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=ActClass::PROC
procedure@moodCode fixed to EVN for specimen collection IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XDocumentProcedureMood::EVN
templateId is unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.templateId->size()=1
if present, procedure/code@code fixed to 33882-2 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.code.oclIsUndefined() or (
(not self.code.code.oclIsUndefined()) and
self.code.code='33882-2'
)
effectiveTime required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(not self.effectiveTime.oclIsUndefined())
procedure specimen collection can not have more than one targetSiteCode (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.targetSiteCode->size()<2
procedure specimen collection can not have more than one performer (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.performer->size()<2
specimen collection shall have only one participant with a typeCode=PRD (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.participant->size()=1 and
self.participant->forAll(part : POCDMT000040Participant2 |
(not part.typeCode.oclIsUndefined()) and part.typeCode=ParticipationType::PRD
)
specimen collection shall have only one participantRole with classCode=SPEC (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(self.participant->size()=1) and self.participant->forAll(part : POCDMT000040Participant2 |
(not part.participantRole.oclIsUndefined()) and (not part.participantRole.classCode.oclIsUndefined()) and part.participantRole.classCode=RoleClassRoot::SPEC
)
participantRole id is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(self.participant->size()=1) and self.participant->forAll(part : POCDMT000040Participant2 |
(not part.participantRole.oclIsUndefined()) and (not part.participantRole.id->isEmpty()) and
part.participantRole.id->exists(ii: II | (not ii.root.oclIsUndefined()) )
)
procedure/participantRole/playingEntity/code required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
(self.participant->size()=1) and self.participant->forAll(part : POCDMT000040Participant2 |
(not part.participantRole.oclIsUndefined()) and
(not part.participantRole.oclIsUndefined()) and
(not part.participantRole.playingEntity.oclIsUndefined()) and
(not part.participantRole.playingEntity.code.oclIsUndefined()) and
(not part.participantRole.playingEntity.code.code.oclIsUndefined())
)
collection specimen can have less than one value of procedure/entryRelationship/act (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.entryRelationship->size()<2
if act contains a specimen received, it must have entryRelationShip/typeCode=COMP (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
self.entryRelationship->select(entrr : POCDMT000040EntryRelationship |
(not entrr.act.oclIsUndefined()) and
entrr.act.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.3' )
)->forAll(entrr : POCDMT000040EntryRelationship |
(not entrr.typeCode.oclIsUndefined()) and entrr.typeCode=XActRelationshipEntryRelationship::COMP
)
the entryRelationship of act if the act containts a specimen collection must be equal to COMP (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.5, Table 2.3.5.5-1)
OCL
self.entryRelationship->select(entrr : POCDMT000040EntryRelationship |
(not entrr.procedure.oclIsUndefined()) and
entrr.procedure.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.2' )
)->forAll(entrr : POCDMT000040EntryRelationship |
(not entrr.typeCode.oclIsUndefined()) and entrr.typeCode=XActRelationshipEntryRelationship::COMP
)
act@classCode shall be ACT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=XActClassDocumentEntryAct::ACT
act@moodCode shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XDocumentActMood::EVN
templateId is unique and required and shall be 1.3.6.1.4.1.19376.1.3.1.3 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.3')
code is required and unique and must be code=SPRECEIVE, codeSystem=1.3.5.1.4.1.19376.1.5.3.2 and codeSystemName=IHEActCode (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
(not self.code.oclIsUndefined()) and
(not self.code.code.oclIsUndefined()) and self.code.code='SPRECEIVE' and
(not self.code.codeSystem.oclIsUndefined()) and self.code.codeSystem='1.3.5.1.4.1.19376.1.5.3.2' and
(not self.code.codeSystemName.oclIsUndefined()) and self.code.codeSystemName='IHEActCode'
effectiveTime is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.6, Table 2.3.5.6-1)
OCL
(not self.effectiveTime.oclIsUndefined())
classCode must be CLUSTER (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=XActClassDocumentEntryOrganizer::CLUSTER
moodCode shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=ActMood::EVN
templateId is required and unique, root=1.3.6.1.4.1.19376.1.3.1.1 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1' )
statusCode is required and unique, values supported are completed and nullify (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='nullify')
organizer must have at least one component (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
self.component->size()>0
organizer/component contains one or more of the following Notifications: Notifiable Condition, Case Identification, Outbreak Identification (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7, Table 2.3.5.7-1)
OCL
self.component->forAll(comp : POCDMT000040Component4 |
(not comp.observation.oclIsUndefined()) and
comp.observation.templateId->exists(ii : II |
(not ii.root.oclIsUndefined()) and
(
ii.root='1.3.6.1.4.1.19376.1.3.1.1.1' or
ii.root='1.3.6.1.4.1.19376.1.3.1.1.2' or
ii.root='1.3.6.1.4.1.19376.1.3.1.1.3'
)
)
)
observation@classCode required and shall be COND (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=ActClassObservation::COND
observation@moodCode requred and shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XActMoodDocumentObservation::EVN
templateId required, unique and templateId@root=1.3.6.1.4.1.19376.1.3.1.1.1 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1.1')
observation/code is required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
not self.code.oclIsUndefined()
observation/code/qualifier is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.code.oclIsUndefined()) and self.code.qualifier->size()=1
code/qualifier/name required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.code.oclIsUndefined()) and self.code.qualifier->size()=1 and
self.code.qualifier->forAll(qq : CR | (not qq.name.oclIsUndefined()))
code/qualifier/value required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.code.oclIsUndefined()) and self.code.qualifier->size()=1 and
self.code.qualifier->forAll(qq : CR | (not qq.value.oclIsUndefined()))
observation/statusCode required and statusCode@code=completed or aborded (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='aborted' )
observation/value required, unique and SHALL use the type CE (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.1, Table 2.3.5.7.1-1)
OCL
self.value->size()=1 and self.value->forAll(val : ANY | val.oclIsKindOf(CE))
classCode required and shall be CASE (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=ActClassObservation::CASE
moodCode required and shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XActMoodDocumentObservation::EVN
templateId required and unique, and its root=1.3.6.1.4.1.19376.1.3.1.1.2 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1.2' )
code required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
(not self.code.oclIsUndefined()) and (not self.code.code.oclIsUndefined())
statusCode required and unique, and statusCode@code=completed or aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and ( self.statusCode.code='completed' or self.statusCode.code='aborted')
value is required, unique and must be of type CE (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.2, Table 2.3.5.7.2-1)
OCL
self.value->size()=1 and self.value->forAll(val : ANY | val.oclIsKindOf(CE))
observation@classCode required and shall be OUTB (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=ActClassObservation::OUTB
moodCode required and shall have EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XActMoodDocumentObservation::EVN
templateId unique and required and root=1.3.6.1.4.1.19376.1.3.1.1.3 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.1.3')
code is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
(not self.code.oclIsUndefined()) and (not self.code.code.oclIsUndefined())
statusCode required and unique, and its attribute code shall be completed or aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='aborted')
value is required and unique and must be type as CE (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.7.3, Table 2.3.5.7.3-1)
OCL
self.value->size()=1 and self.value->forAll(val : ANY | val.oclIsKindOf(CE))
organizer@classCode requred and must be CLUSTER (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=XActClassDocumentEntryOrganizer::CLUSTER
organizer@moodCode shall be EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=ActMood::EVN
organizer can have at most one id (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.id->size()<2
statusCode is required and unique, and its attribute code shall be completed, active, or aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='active' or self.statusCode.code='aborted')
if subject present, it shall be with attribute typeCode=SBJ (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.subject.oclIsUndefined() or
(
(not self.subject.typeCode.oclIsUndefined()) and
self.subject.typeCode=ParticipationTargetSubject::SBJ
)
organizer/subject can be present only if a non human subject attached to the isolate (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.subject.oclIsUndefined() or
self.subject.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and (ii.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' or ii.root='1.3.6.1.4.1.19376.1.3.3.1.3.1') )
organizer/specimen is required and unique, and its typeCode shall be SBJ (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.specimen->size()= 1 and self.specimen->forAll(spec : POCDMT000040Specimen | (not spec.typeCode.oclIsUndefined()) and spec.typeCode=ParticipationType::SPC )
speciment/specimentRole is required and unique, its classCode attribute shall be SPEC (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.specimen->size()=1 and
self.specimen->forAll(spec : POCDMT000040Specimen |
(not spec.specimenRole.oclIsUndefined()) and
(not spec.specimenRole.classCode.oclIsUndefined()) and
spec.specimenRole.classCode=RoleClassSpecimen::SPEC
)
specimentRole can have at most one id (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.specimen->size()=1 and
self.specimen->forAll(spec : POCDMT000040Specimen |
(spec.specimenRole.oclIsUndefined()) or
spec.specimenRole.id->size()<2
)
specimen/specimentRole/specimenPlayingEntity is required and unique, and its attribute classCode shall be MIC (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.specimen->size()=1 and
self.specimen->forAll(spec : POCDMT000040Specimen |
(not spec.specimenRole.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.classCode.oclIsUndefined()) and
spec.specimenRole.specimenPlayingEntity.classCode=EntityClassRoot::MIC
)
specimen/specimentRole/specimenPlayingEntity/code is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.specimen->size()=1 and
self.specimen->forAll(spec : POCDMT000040Specimen |
(not spec.specimenRole.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.code.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.code.code.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.code.codeSystem.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.code.codeSystemName.oclIsUndefined()) and
(not spec.specimenRole.specimenPlayingEntity.code.displayName.oclIsUndefined())
)
if performer present, its typeCode is required and its typeCode shall be PRF (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.performer->isEmpty() or self.performer->forAll(perf : POCDMT000040Performer2 |
(not perf.typeCode.oclIsUndefined()) and
perf.typeCode=ParticipationPhysicalPerformer::PRF
)
organizer/author if presents shall have the attribute typeCode qith the value AUT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.author->isEmpty() or self.author->forAll(aut : POCDMT000040Author | (not aut.typeCode.oclIsUndefined()) and aut.typeCode=ParticipationType::AUT )
organizer/participant if present shall have the typeCode attribute valued to AUTHEN, or RESP, or DEV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.participant->forAll(part : POCDMT000040Participant2 |
(not part.typeCode.oclIsUndefined()) and
(
part.typeCode=ParticipationType::AUTHEN or
part.typeCode=ParticipationType::RESP or
part.typeCode=ParticipationType::DEV
)
)
organizer shall have at least one component, and all component shall have typeCode=COMP (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.component->size()>0 and
self.component->forAll(comp : POCDMT000040Component4 |
(not comp.typeCode.oclIsUndefined()) and
comp.typeCode=ActRelationshipHasComponent::COMP
)
component can have any number of observations, battery organizers and multimedia (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.8, Table 2.3.5.8-1)
OCL
self.component->forAll(comp : POCDMT000040Component4 |
comp.organizer.oclIsUndefined() or
comp.organizer.classCode=XActClassDocumentEntryOrganizer::BATTERY
)
classCode mandatory and fixed to BATTERY (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=XActClassDocumentEntryOrganizer::BATTERY
moodCode mandatory and fixed to EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=ActMood::EVN
templateId is required and unique, and has attribute root=1.3.6.1.4.1.19376.1.3.1.4 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.4')
organizer can have at most one id (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.id->size()<2
statusCode required and its code attribute shall be completed or aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='aborted')
organizer/subject if present shall have typeCode equal to SBJ (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.subject.oclIsUndefined() or ((not self.subject.typeCode.oclIsUndefined()) and self.subject.typeCode=ParticipationTargetSubject::SBJ)
organizer/subject can be present only if a non human subject attached to the isolate (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.subject.oclIsUndefined() or
self.subject.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and (ii.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' or ii.root='1.3.6.1.4.1.19376.1.3.3.1.3.1') )
if performer present, its typeCode is required and its typeCode shall be PRF (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.performer->isEmpty() or self.performer->forAll(perf : POCDMT000040Performer2 |
(not perf.typeCode.oclIsUndefined()) and
perf.typeCode=ParticipationPhysicalPerformer::PRF
)
organizer/author if presents shall have the attribute typeCode qith the value AUT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.author->isEmpty() or self.author->forAll(aut : POCDMT000040Author | (not aut.typeCode.oclIsUndefined()) and aut.typeCode=ParticipationType::AUT )
organizer/participant if present shall have the typeCode attribute valued to AUTHEN, or RESP, or DEV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.participant->forAll(part : POCDMT000040Participant2 |
(not part.typeCode.oclIsUndefined()) and
(
part.typeCode=ParticipationType::AUTHEN or
part.typeCode=ParticipationType::RESP or
part.typeCode=ParticipationType::DEV
)
)
organizer shall have at least one component, and all component shall have typeCode=COMP (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.component->size()>0 and
self.component->forAll(comp : POCDMT000040Component4 |
(not comp.typeCode.oclIsUndefined()) and
comp.typeCode=ActRelationshipHasComponent::COMP
)
organizer/component can have any number of observations and or multimedia (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Table 2.3.5.9-1)
OCL
self.component->forAll(comp : POCDMT000040Component4 |
comp.organizer->size()=0
)
organizer/component shall have at least one observation, or its statusCode must be aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.9, Note 3)
OCL
self.component->exists(comp : POCDMT000040Component4 |
(not comp.observation.oclIsUndefined())
)
or
(
(not self.statusCode.oclIsUndefined()) and
(not self.statusCode.code.oclIsUndefined()) and
self.statusCode.code='aborted'
)
classCode mandatory and fixed to OBS (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
(not self.classCode.oclIsUndefined()) and self.classCode=ActClassObservation::OBS
moodCode mandatory and fixed to EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
(not self.moodCode.oclIsUndefined()) and self.moodCode=XActMoodDocumentObservation::EVN
templateId required, unique and fixed to 1.3.6.1.4.1.19376.1.3.1.6 (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.templateId->size()=1 and self.templateId->forAll(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.6' )
observation/id can have at mos one value (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.id->size()<2
code is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
not self.code.oclIsUndefined()
statusCode required and its code attribute shall be completed or aborted (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
(not self.statusCode.oclIsUndefined()) and (not self.statusCode.code.oclIsUndefined()) and (self.statusCode.code='completed' or self.statusCode.code='aborted')
observation can have at most one value (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.value->size()<2
observation/value has type PQ (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.value->forAll(val : ANY | val.oclIsTypeOf(PQ))
observation can have at most one interpretationCode (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.interpretationCode->size()<2
interpretationCodemust be from ObservationInterpretation vocabulary or ObservationInterpretationSusceptibility Microbiology vocabulary (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.interpretationCode->forAll(inter : CE |
inter.machesValueSet('1.3.6.1.4.1.12559.11.4.4.2', inter.code, inter.codeSystem, inter.codeSystemName, inter.displayName) or
inter.machesValueSet('1.3.6.1.4.1.12559.11.4.4.3', inter.code, inter.codeSystem, inter.codeSystemName, inter.displayName)
)
observation can have at most one methodCode (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.methodCode->size()<2
methodCode must be expressed with ObservationMethod vocabulary (CWE) (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.methodCode->forAll(mc : CE| (mc.codeSystem.oclIsUndefined()) or mc.codeSystem='2.16.840.1.113883.5.84')
if present, subject must have the typeCode=SBJ (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.subject.oclIsUndefined() or ( (not self.subject.typeCode.oclIsUndefined()) and self.subject.typeCode=ParticipationTargetSubject::SBJ )
subject can be present only if a non human subject is attached to the observation (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.subject.oclIsUndefined() or
self.subject.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and (ii.root='1.3.6.1.4.1.19376.1.3.3.1.2.1' or ii.root='1.3.6.1.4.1.19376.1.3.3.1.3.1') )
if present, performer must have typeCode=PRF (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.performer->forAll(perf : POCDMT000040Performer2 |
(not perf.typeCode.oclIsUndefined()) and perf.typeCode=ParticipationPhysicalPerformer::PRF
)
if author present, it must have typeCode=AUT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.author->forAll(auth : POCDMT000040Author | (not auth.typeCode.oclIsUndefined()) and auth.typeCode=ParticipationType::AUT)
participants if present shall have typeCode equals to AUTHEN, or RESP, or DEV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.participant->forAll(part : POCDMT000040Participant2 |
(not part.typeCode.oclIsUndefined()) and
(part.typeCode=ParticipationType::AUTHEN or part.typeCode=ParticipationType::RESP or part.typeCode=ParticipationType::DEV)
)
observation/entryRelationship shall be specimen collection, or annotation comment (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
(
(not entrr.procedure.oclIsUndefined()) and
entrr.procedure.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.3.1.2')
)
or
(
(not entrr.act.oclIsUndefined()) and
entrr.act.templateId->exists(ii : II | (not ii.root.oclIsUndefined()) and ii.root='1.3.6.1.4.1.19376.1.5.3.1.4.2')
)
)
if entryRelationship@typeCode=REFR, entryRelationship/observation is required, and entryRelationship/observation@classCode=OBS, entryRelationship/observation@moodCode=EVN (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.typeCode.oclIsUndefined() or
(not (entrr.typeCode=XActRelationshipEntryRelationship::REFR)) or
(
(not entrr.observation.oclIsUndefined()) and
(not entrr.observation.classCode.oclIsUndefined()) and
entrr.observation.classCode=ActClassObservation::OBS and
(not entrr.observation.moodCode.oclIsUndefined()) and
entrr.observation.moodCode=XActMoodDocumentObservation::EVN
)
)
if entryRelationship@typeCode=REFR, entryRelationship/observation/code is required, and have the same test code (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.typeCode.oclIsUndefined() or
(not (entrr.typeCode=XActRelationshipEntryRelationship::REFR)) or
(
(not entrr.observation.oclIsUndefined()) and
(not entrr.observation.code.oclIsUndefined()) and
(not entrr.observation.code.code.oclIsUndefined()) and
(not self.code.oclIsUndefined()) and
(not self.code.code.oclIsUndefined()) and
entrr.observation.code.code=self.code.code
)
)
if entryRelationship@typeCode=REFR, entryRelationship/observation/statusCode is required, and have the value completed (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.typeCode.oclIsUndefined() or
(not (entrr.typeCode=XActRelationshipEntryRelationship::REFR)) or
(
(not entrr.observation.oclIsUndefined()) and
(not entrr.observation.statusCode.oclIsUndefined()) and
(not entrr.observation.statusCode.code.oclIsUndefined()) and
entrr.observation.statusCode.code='completed'
)
)
if entryRelationship@typeCode=REFR, entryRelationship/observation/effectiveTime required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.typeCode.oclIsUndefined() or
(not (entrr.typeCode=XActRelationshipEntryRelationship::REFR)) or
(
(not entrr.observation.oclIsUndefined()) and
(not entrr.observation.effectiveTime.oclIsUndefined())
)
)
if entryRelationship@typeCode=REFR, entryRelationship/observation/value is required and unique (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
entrr.typeCode.oclIsUndefined() or
(not (entrr.typeCode=XActRelationshipEntryRelationship::REFR)) or
(
(not entrr.observation.oclIsUndefined()) and
entrr.observation.value->size()=1
)
)
if observation/referenceRange is present, its typeCode shall be REFV (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange |
(not rr.typeCode.oclIsUndefined()) and
rr.typeCode=ActRelationshipType::REFV
)
observation can have at most one referenceRange (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->size()<2
if observation/referenceRange presents, observationRange is required (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange | (not rr.observationRange.oclIsUndefined()))
if observation/referenceRange presents, observationRange shall have classCode=OBS (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange |
(not rr.observationRange.oclIsUndefined()) and
(not rr.observationRange.classCode.oclIsUndefined()) and
rr.observationRange.classCode=ActClassObservation::OBS
)
if observation/referenceRange presents, observationRange shall have moodCode=EVN.CRT (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange |
(not rr.observationRange.oclIsUndefined()) and
(not rr.observationRange.moodCode.oclIsUndefined()) and
rr.observationRange.moodCode=ActMood::EVNCRT
)
if observation/referenceRange presents, observationRange can have a value, and its type is an interval IVL (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange |
(not rr.observationRange.oclIsUndefined()) and
(
rr.observationRange.value.oclIsUndefined() or
rr.observationRange.value.oclIsKindOf(PIVLTS) or
rr.observationRange.value.oclIsKindOf(EIVLTS) or
rr.observationRange.value.oclIsKindOf(IVLPQ) or
rr.observationRange.value.oclIsKindOf(PIVLPPDTS) or
rr.observationRange.value.oclIsKindOf(EIVLPPDTS) or
rr.observationRange.value.oclIsKindOf(IVLPPDPQ) or
rr.observationRange.value.oclIsKindOf(IVLINT) or
rr.observationRange.value.oclIsKindOf(IVLREAL) or
rr.observationRange.value.oclIsKindOf(IVLMO) or
rr.observationRange.value.oclIsKindOf(BXITIVLPQ)
)
)
if observation/referenceRange presents, observationRangeshall have an interpretationCode with interpretationCode@code=N (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.referenceRange->forAll(rr : POCDMT000040ReferenceRange |
(not rr.observationRange.oclIsUndefined()) and
(not rr.observationRange.interpretationCode.oclIsUndefined()) and
(not rr.observationRange.interpretationCode.code.oclIsUndefined()) and
rr.observationRange.interpretationCode.code='N'
)
In case there is more than one previous result, the entryRelationship elements are numbered from 1 to n by sequenceNumber. (IHE Laboratory Technical Framework, Volume 3 (LAB TF-3) 2.3.5.10, Table 2.3.5.10-1)
OCL
self.entryRelationship->size()<2 or
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship | (not entrr.sequenceNumber.oclIsUndefined()) and (not entrr.sequenceNumber.value.oclIsUndefined())) and
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
self.entryRelationship->one(entrr2 : POCDMT000040EntryRelationship | entrr2.sequenceNumber.value=entrr.sequenceNumber.value)
) and
self.entryRelationship->forAll(entrr : POCDMT000040EntryRelationship |
self.entryRelationship->select(entrr2 : POCDMT000040EntryRelationship | entrr2.sequenceNumber.value<entrr.sequenceNumber.value)->size()=(entrr.sequenceNumber.value-1)
)