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) )