<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:CDA="http://www.openhealthtools.org/mdht/schemas/cda/4" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
  <uml:Package xmi:id="_2B30sBSVEeGGzu7fmW9pXw" name="consol">
    <packageImport xmi:id="_PKZrwE3jEeGVaJScxwOy7g">
      <importedPackage href="pathmap://CDA_MODEL/cda.uml#_ii81kjxVEd6JwqSGecoePg"/>
    </packageImport>
    <packageImport xmi:id="_hPUsgNcZEeGfQ6frO0B-Jg">
      <importedPackage href="pathmap://DATATYPES_MODEL/datatypes.uml#_XgMSwzxVEd6JwqSGecoePg"/>
    </packageImport>
    <packageImport xmi:id="_q3SeUD49EeKUq_Bmx5Topg">
      <importedPackage href="pathmap://VOCAB_MODEL/vocab.uml#__yVbeUDcEd6xYZuu1VKCVw"/>
    </packageImport>
    <packageImport xmi:id="_FEFdMD5QEeKUq_Bmx5Topg">
      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#_0"/>
    </packageImport>
    <packagedElement xmi:type="uml:Class" xmi:id="_2DNRcBSVEeGGzu7fmW9pXw" name="GeneralHeaderConstraints">
      <ownedComment xmi:id="_2DNRcRSVEeGGzu7fmW9pXw" annotatedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <body>This section describes constraints that apply to the header for all documents within the scope of this implementation guide. Header constraints specific to each document type are described in the appropriate document-specific section below

Document Type Codes
CDA R2 states that LOINC is the preferred vocabulary for document type codes, which specify the type of document being exchanged (e.g., History and Physical). Each document type in this guide recommends a single preferred clinicalDocument/code, with further specification provided by author or performer, setting, or specialty</body>
      </ownedComment>
      <ownedRule xmi:id="_jXOYoMa8EeGp28IjMvW3Ag" name="GeneralHeaderConstraintsTypeIdRoot" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p0SisMa8EeGp28IjMvW3Ag">
          <language>OCL</language>
          <body>not self.typeId.oclIsUndefined() and self.typeId.root = '2.16.840.1.113883.1.3'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_meGqAMa8EeGp28IjMvW3Ag" name="GeneralHeaderConstraintsTypeIdExtension" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-aMcMa8EeGp28IjMvW3Ag">
          <language>OCL</language>
          <body>not self.typeId.oclIsUndefined() and self.typeId.extension = 'POCD_HD000040'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_QNCUUMa_EeGp28IjMvW3Ag" name="GeneralHeaderConstraintsSetIdVersionNumber" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YGu0cMa_EeGp28IjMvW3Ag">
          <language>OCL</language>
          <body>not self.setId.oclIsUndefined() implies not self.versionNumber.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_SYLWMMa_EeGp28IjMvW3Ag" name="GeneralHeaderConstraintsVersionNumberSetId" constrainedElement="_QNCUUMa_EeGp28IjMvW3Ag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_cEBwcMa_EeGp28IjMvW3Ag">
          <language>OCL</language>
          <body>not self.versionNumber.oclIsUndefined() implies not self.setId.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oBczQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oBdaUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oCq7QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRealmCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oCq7Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.realmCode->isEmpty() or self.realmCode->exists(element | element.isNullFlavorUndefined())) implies (self.realmCode->size() = 1 and self.realmCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = element.oclAsType(datatypes::CS) in &#xD;
value.code = 'US'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oC9PIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTypeId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oC9PId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.typeId.oclIsUndefined() or self.typeId.isNullFlavorUndefined()) implies (not self.typeId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oDT0cN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oDT0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oDezkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oDezkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oDmIUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTitle" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oDmIUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oDs2AN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oDs2Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oE6W8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsConfidentialityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oE6W8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.confidentialityCode.oclIsUndefined() or self.confidentialityCode.isNullFlavorUndefined()) implies (not self.confidentialityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oECNMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsConfidentialityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oECNMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.confidentialityCode.oclIsUndefined() or self.confidentialityCode.isNullFlavorUndefined()) implies (not self.confidentialityCode.oclIsUndefined() and self.confidentialityCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.confidentialityCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.25' and (value.code = 'N' or value.code = 'R' or value.code = 'V'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oFXp8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oFYRAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined() and self.languageCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.languageCode.oclAsType(datatypes::CS) in &#xD;
not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oF088N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLanguageCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oF088d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oGRo4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsSetId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oGRo4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.setId.oclIsUndefined() or self.setId.isNullFlavorUndefined()) implies (not self.setId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oGVTQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsVersionNumber" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oGVTQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.versionNumber.oclIsUndefined() or self.versionNumber.isNullFlavorUndefined()) implies (not self.versionNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oZ1eEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oZ1eEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oaPGsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEnterer" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oaPGsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oaovUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oaovUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_obCX8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_obCX8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_objVUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_objVUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(cda::LegalAuthenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ob-MEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ob-MEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->exists(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ocphgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTarget" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ocphgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->exists(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odEYQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odEYQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qoaOcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qoa1gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->exists(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(cda::Informant12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qqaZkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsSupportParticipant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qqaZkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qqzbIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInFulfillmentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qqzbId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ti1_QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ti1_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tkbToN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tkbTod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->exists(authorization : cda::Authorization | not authorization.oclIsUndefined() and authorization.oclIsKindOf(cda::Authorization))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3WUEcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3WUEcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 8))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3WUrgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3WUrgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3WVSkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3WVSkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 14))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3WV5oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3WV5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XLnIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XLnId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XMOMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XMOMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XNcUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XNcUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XODYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XODYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XOqcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XOqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XP4kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XP4kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XQfoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XQfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XRtwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XRtwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XUKAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XUKAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Xw18N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XxdAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject(getText(true)='')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XyEEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XyEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::EntityNameUse) and &#xD;
let value : vocab::EntityNameUse = element.oclAsType(vocab::EntityNameUse) in &#xD;
value = vocab::EntityNameUse::A or value = vocab::EntityNameUse::ABC or value = vocab::EntityNameUse::ASGN or value = vocab::EntityNameUse::C or value = vocab::EntityNameUse::I or value = vocab::EntityNameUse::IDE or value = vocab::EntityNameUse::L or value = vocab::EntityNameUse::P or value = vocab::EntityNameUse::PHON or value = vocab::EntityNameUse::R or value = vocab::EntityNameUse::SNDX or value = vocab::EntityNameUse::SRCH or value = vocab::EntityNameUse::SYL) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XyrIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XyrId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3XzSMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3XzSMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((family->isEmpty() or family->exists(element | element.isNullFlavorUndefined())) implies (family->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X0gUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X0gUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((given->isEmpty() or given->exists(element | element.isNullFlavorUndefined())) implies (( not given->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X1HYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X1HYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((prefix->isEmpty() or prefix->exists(element | element.isNullFlavorUndefined())) implies (not prefix->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X1ucN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X1ucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).name->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((suffix->isEmpty() or suffix->exists(element | element.isNullFlavorUndefined())) implies (( not suffix->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X4KsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X4Ksd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() >= 4)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X4xwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X4xwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3X5Y0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3X5Y0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not value.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YU2oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YU2od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YWEwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YWEwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YWr0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YWr0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YXS4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YXS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YYhAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YYhAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YZIEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YZIEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YZvIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YZvId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Ya9QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Ya9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3YdZgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3YdZgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y3pMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y3pMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).guardianPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y4QQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y4QQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((not code.oclIsUndefined()) and code.isNullFlavorUndefined() implies&#xD;
(code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and (value.code = 'ADOPT' or value.code = 'AUNT' or value.code = 'CHILD' or value.code = 'CHLDINLAW' or value.code = 'COUSN' or value.code = 'DOMPART' or value.code = 'FAMMEMB' or value.code = 'CHLDFOST' or value.code = 'GRNDCHILD' or value.code = 'GPARNT' or value.code = 'GRPRN' or value.code = 'GGRPRN' or value.code = 'HSIB' or value.code = 'MAUNT' or value.code = 'MCOUSN' or value.code = 'MGRPRN' or value.code = 'MGGRPRN' or value.code = 'MUNCLE' or value.code = 'NCHILD' or value.code = 'NPRN' or value.code = 'NSIB' or value.code = 'NBOR' or value.code = 'NIENEPH' or value.code = 'PRN' or value.code = 'PRNINLAW' or value.code = 'PAUNT' or value.code = 'PCOUSN' or value.code = 'PGRPRN' or value.code = 'PGGRPRN' or value.code = 'PUNCLE' or value.code = 'ROOM' or value.code = 'SIB' or value.code = 'SIBINLAW' or value.code = 'SIGOTHR' or value.code = 'SPS' or value.code = 'STEP' or value.code = 'STPPRN' or value.code = 'STPSIB' or value.code = 'UNCLE' or value.code = 'FRND' or value.code = 'RESPRSN' or value.code = 'EXCEST' or value.code = 'GUADLTM' or value.code = 'GUARD' or value.code = 'POWATT' or value.code = 'DPOWATT' or value.code = 'HPOWATT' or value.code = 'SPOWATT')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y43UN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y43Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y5eYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y5eYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y6FcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y6Fcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Y6sgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Y6sgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject(guardianPerson->one(guardianPerson : cda::Person | not guardianPerson.oclIsUndefined() and guardianPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ZwaAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ZxBEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthplace->excluding(null).place->excluding(null)->reject((addr.country->exists(curCountry | not curCountry.oclIsUndefined() and curCountry.getText() = 'US')) implies (addr.state->size() = 1) and ((addr.state->exists(curState | (curState.getText() = 'AL' or curState.getText() = 'AK' or curState.getText() = 'AS' or curState.getText() = 'AZ' or curState.getText() = 'AR' or curState.getText() = 'CA' or curState.getText() = 'CO' or curState.getText() = 'CT' or curState.getText() = 'DE' or curState.getText() = 'DC' or curState.getText() = 'FL' or curState.getText() = 'FM' or curState.getText() = 'GA' or curState.getText() = 'GU' or curState.getText() = 'HI' or curState.getText() = 'ID' or curState.getText() = 'IL' or curState.getText() = 'IN' or curState.getText() = 'IA' or curState.getText() = 'KS' or curState.getText() = 'KY' or curState.getText() = 'LA' or curState.getText() = 'ME' or curState.getText() = 'MH' or curState.getText() = 'MD' or curState.getText() = 'MA' or curState.getText() = 'MI' or curState.getText() = 'MN' or curState.getText() = 'MS' or curState.getText() = 'MO' or curState.getText() = 'MT' or curState.getText() = 'NE' or curState.getText() = 'NV' or curState.getText() = 'NH' or curState.getText() = 'NJ' or curState.getText() = 'NM' or curState.getText() = 'NY' or curState.getText() = 'NC' or curState.getText() = 'ND' or curState.getText() = 'MP' or curState.getText() = 'OH' or curState.getText() = 'OK' or curState.getText() = 'OR' or curState.getText() = 'PW' or curState.getText() = 'PA' or curState.getText() = 'PR' or curState.getText() = 'RI' or curState.getText() = 'SC' or curState.getText() = 'SD' or curState.getText() = 'TN' or curState.getText() = 'TX' or curState.getText() = 'UM' or curState.getText() = 'UT' or curState.getText() = 'VT' or curState.getText() = 'VA' or curState.getText() = 'VI' or curState.getText() = 'WA' or curState.getText() = 'WV' or curState.getText() = 'WI' or curState.getText() = 'WY' ))) or (addr.state->exists(curState | curState.isNullFlavorDefined()))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ZxBEd6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ZxoIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthplace->excluding(null).place->excluding(null)->reject((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ZxoId6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ZxoIt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthplace->excluding(null)->reject(place->one(place : cda::Place | not place.oclIsUndefined() and place.oclIsKindOf(cda::Place)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aMe4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aMe4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((languageCode.oclIsUndefined() or languageCode.isNullFlavorUndefined()) implies (not languageCode.oclIsUndefined() and languageCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = languageCode.oclAsType(datatypes::CS) in &#xD;
not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aNF8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aNF8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((languageCode.oclIsUndefined() or languageCode.isNullFlavorUndefined()) implies (not languageCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aNtAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aNtAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((modeCode.oclIsUndefined() or modeCode.isNullFlavorUndefined()) implies (not modeCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aOUEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aOUEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((modeCode.oclIsUndefined() or modeCode.isNullFlavorUndefined()) implies (not modeCode.oclIsUndefined() and modeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = modeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.60' and (value.code = 'ESGN' or value.code = 'ESP' or value.code = 'EWR' or value.code = 'RSGN' or value.code = 'RSP' or value.code = 'RWR')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aO7IN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aO7Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((proficiencyLevelCode.oclIsUndefined() or proficiencyLevelCode.isNullFlavorUndefined()) implies (not proficiencyLevelCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aPiMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aPiMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((proficiencyLevelCode.oclIsUndefined() or proficiencyLevelCode.isNullFlavorUndefined()) implies (not proficiencyLevelCode.oclIsUndefined() and proficiencyLevelCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = proficiencyLevelCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.61' and (value.code = 'E' or value.code = 'F' or value.code = 'G' or value.code = 'P')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aPiMt6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aPiM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((preferenceInd.oclIsUndefined() or preferenceInd.isNullFlavorUndefined()) implies (not preferenceInd.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aQJQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aQJQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(sDTCRaceCode->notEmpty() implies not raceCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aQwUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aQwUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aRXYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aRXYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((administrativeGenderCode.oclIsUndefined() or administrativeGenderCode.isNullFlavorUndefined()) implies (not administrativeGenderCode.oclIsUndefined() and administrativeGenderCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = administrativeGenderCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.1' and (value.code = 'F' or value.code = 'M' or value.code = 'UN')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aR-cN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aR-cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((birthTime.oclIsUndefined() or birthTime.isNullFlavorUndefined()) implies (not birthTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aSlgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aSlgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((maritalStatusCode.oclIsUndefined() or maritalStatusCode.isNullFlavorUndefined()) implies (not maritalStatusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aTMkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aTMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((maritalStatusCode.oclIsUndefined() or maritalStatusCode.isNullFlavorUndefined()) implies (not maritalStatusCode.oclIsUndefined() and maritalStatusCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = maritalStatusCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.2' and (value.code = 'A' or value.code = 'D' or value.code = 'I' or value.code = 'L' or value.code = 'M' or value.code = 'P' or value.code = 'S' or value.code = 'T' or value.code = 'W')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aTzoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aTzod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((religiousAffiliationCode.oclIsUndefined() or religiousAffiliationCode.isNullFlavorUndefined()) implies (not religiousAffiliationCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aUasN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aUasd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((religiousAffiliationCode.oclIsUndefined() or religiousAffiliationCode.isNullFlavorUndefined()) implies (not religiousAffiliationCode.oclIsUndefined() and religiousAffiliationCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = religiousAffiliationCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.1076' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aVBwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aVBwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((raceCode.oclIsUndefined() or raceCode.isNullFlavorUndefined()) implies (not raceCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aVo0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aVo0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((raceCode.oclIsUndefined() or raceCode.isNullFlavorUndefined()) implies (not raceCode.oclIsUndefined() and raceCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = raceCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aWP4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aWP4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((sDTCRaceCode->isEmpty() or sDTCRaceCode->exists(element | element.isNullFlavorUndefined())) implies (not sDTCRaceCode->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aahUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aahUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((sDTCRaceCode->isEmpty() or sDTCRaceCode->exists(element | element.isNullFlavorUndefined())) implies (sDTCRaceCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3abvcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3abvcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((ethnicGroupCode.oclIsUndefined() or ethnicGroupCode.isNullFlavorUndefined()) implies (not ethnicGroupCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3acWgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3acWgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((ethnicGroupCode.oclIsUndefined() or ethnicGroupCode.isNullFlavorUndefined()) implies (not ethnicGroupCode.oclIsUndefined() and ethnicGroupCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = ethnicGroupCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and (value.code = '2135-2' or value.code = '2186-5')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ac9kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ac9kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(guardian->exists(guardian : cda::Guardian | not guardian.oclIsUndefined() and guardian.oclIsKindOf(cda::Guardian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3adkoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3adkod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(birthplace->one(birthplace : cda::Birthplace | not birthplace.oclIsUndefined() and birthplace.oclIsKindOf(cda::Birthplace)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3aeLsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3aeLsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(languageCommunication->exists(languageCommunication : cda::LanguageCommunication | not languageCommunication.oclIsUndefined() and languageCommunication.oclIsKindOf(cda::LanguageCommunication)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3a5pgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3a5pgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3a8s0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3a8s0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3a968N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3a968d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3a-iAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3a-iAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3a_wIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3a_wId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bAXMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bAXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bBlUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bBlUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bCMYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bCMYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bDagN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bDagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bEBkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bEBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bEBkt6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bEooN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bFPsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bFPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bGd0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bGd0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bHE4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bHE4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bHr8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bHr8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bITAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bITAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bI6EN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bI6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bJhIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bJhId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject(patient->one(patient : cda::Patient | not patient.oclIsUndefined() and patient.oclIsKindOf(cda::Patient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bKIMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bKIMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject(providerOrganization->one(providerOrganization : cda::Organization | not providerOrganization.oclIsUndefined() and providerOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3bKvQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRole" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3bKvQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null)->reject(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3b-AgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3b-Agd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3b-nkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3b-nkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3b_OoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOfEncompassingEncounter" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3b_Ood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3cascN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3cascd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 8))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3cbTgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3cbTgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3cb6kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3cb6kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (not value.oclIsUndefined() and value.size() >= 14))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3cchoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3cchod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).time->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c50oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c50od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c7CwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c7Cwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c8Q4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c8Q4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c838N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c838d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c-GEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c-GEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3c_UMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3c_UMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3dAiUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3dAiUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3dCXgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3dCXgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3dGo8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3dGo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3dnmUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3dnmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).assignedAuthoringDevice->excluding(null)->reject((manufacturerModelName.oclIsUndefined() or manufacturerModelName.isNullFlavorUndefined()) implies (not manufacturerModelName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3do0cN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3do0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).assignedAuthoringDevice->excluding(null)->reject((softwareName.oclIsUndefined() or softwareName.isNullFlavorUndefined()) implies (not softwareName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eJKwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eJKwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eKY4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eKY4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(assignedPerson->one(element | not element.oclIsUndefined() implies (element.isNullFlavorDefined() or element->size() = 1) ) xor assignedAuthoringDevice->one(element | not element.oclIsUndefined() implies (element.isNullFlavorDefined() or element->size() = 1) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eK_8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eK_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not assignedPerson.oclIsUndefined() and not id->isEmpty()) implies id->exists(id | (id.isNullFlavorDefined() and id.extension->isEmpty() and id.root->isEmpty()) or (id.isNullFlavorDefined() and id.root='2.16.840.1.113883.4.6') or (id.root='2.16.840.1.113883.4.6' and id.extension->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eMOEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eMOEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eM1IN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eM1Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eNcMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eNcMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eOqUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eOqUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ePRYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ePRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eQfgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eQfgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3eRtoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3eRtod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fOv4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fOv4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fP-AN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fP-Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fRMIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fRzMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fTBUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fTBUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fUPcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fUPcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fVdkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fVdkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fWrsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fWrsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fYg4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fYg4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3fcLQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3fcyUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f3pEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f3pEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f4QIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f4QId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f43MN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f43Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f6FUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f6FUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f6sYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f6sYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f7TcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f7Tcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f76gN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f76gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f8hkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f8hkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3f9IoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f9Iod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hYE8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hYE8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hbvUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hbvUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hc9cN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hc9cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3heLkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3heLkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hfZsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hfZsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hgAwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hgAwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hhO4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hhO4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hidAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hidAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hjrIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hjrId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hkSMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hkSMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hk5QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hk5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hlgUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hlgUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hmHYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hmucN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((telecom.oclIsUndefined() or telecom.isNullFlavorUndefined()) implies (not telecom.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hnVgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hnVgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hn8kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hn8kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null)->reject(representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(cda::CustodianOrganization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3hojoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodianAssignedCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3hojod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null)->reject(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3izBQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3izBQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).informationRecipient->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3jMp4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3jMp4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).receivedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3jNQ8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3jNQ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject(informationRecipient->one(informationRecipient : cda::Person | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3jN4AN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3jN4Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject(receivedOrganization->one(receivedOrganization : cda::Organization | not receivedOrganization.oclIsUndefined() and receivedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3jOfEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3jOfEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kCXYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kCXYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kDlgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kDlgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kEMkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kEzoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kFasN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kFasd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kGo0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kGo0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kHP4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kHP4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kIeAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kIeAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kJsIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kJsId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kMIYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kMIYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3klJ8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3klJ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kmYEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kmYEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3km_IN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3km_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3knmMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3knmMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3koNQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ko0UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kpbYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kpbYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kqCcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kqCcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kqpgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kqpgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kr3oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kr3od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ksesN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ksesd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ktFwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ktFwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'S'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3kts0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3kts0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3liMMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3liMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ljaUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ljaUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lkocN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lkocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ll2kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ll2kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lmdoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lmdod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lnrwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lnrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lo54N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lo54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lpg8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lpg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3lskQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3lskQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mGM4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mGM4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mGz8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mGz8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mHbAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mHbAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mIpIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mIpId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mJQMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mJQMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mJ3QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mJ3Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mKeUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mLFYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mLscN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mLscd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mMTgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mMTgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mM6kN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorSignatureCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mM6kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mOIsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mOIsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'S'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mOvwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticatorAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mOvwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3msp0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3msp0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mtQ4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mtQ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mufAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mufAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mvtIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mvtId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mw7QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mw7Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3myJYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3myJYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3mywcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3mywcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3m0loN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3m0lod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nOOQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nOOQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nO1UN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nO1Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nQDcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nQDcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nQqgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nQqgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nR4oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nR4od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nSfsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nSfsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nTGwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nTGwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nyO8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nyO8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3nzdEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3nzdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n0rMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n0rMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n15UN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n15Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n2gYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n2gYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n3ugN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n3ugd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n48oN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n48od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n6KwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n6Kwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3oTzYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3oTzYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3oUacN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3oUacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject(relatedPerson->one(relatedPerson : cda::Person | not relatedPerson.oclIsUndefined() and relatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3oVokN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3oVokd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(assignedEntity.oclIsUndefined() xor relatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3oW2sN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3oW2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject((not associatedEntity.associatedPerson.oclIsUndefined()) or (not associatedEntity.scopingOrganization.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3oXdwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsParticipantSupportTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3oXdwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3pJg4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInFulfillmentOfOrderId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3pJg4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null).order->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3pKvAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInFulfillmentOfOrder" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3pKvAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null)->reject(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qu1QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qu1Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qwDYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qwDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qwqcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qwqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qxRgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qxRgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qyfoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qyfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qzGsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qzGsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qztwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3qztwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.88'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3q074N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3q074d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3q1i8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3q1i8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(effectiveTime->forAll(not low.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3q2KAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3q2KAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3q3YIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3q3YId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3q3_MN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEvent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3q3_Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3rqpYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorizationConsentId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3rqpYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3rrQcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorizationConsentCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3rr3gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3rsekN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorizationConsentStatusCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3rsekd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3rtFoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorizationConsentStatusCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3rtFod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined() and statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ruTwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorizationConsent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ruTwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null)->reject(consent->one(consent : cda::Consent | not consent.oclIsUndefined() and consent.oclIsKindOf(cda::Consent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2D-tgBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_S9OzADxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2EAisBSVEeGGzu7fmW9pXw" name="AllergyProblemAct">
      <eAnnotations xmi:id="_2EAisRSVEeGGzu7fmW9pXw" source="uml2.alias">
        <details xmi:id="_2EAishSVEeGGzu7fmW9pXw" key="Allergies and Drug Sensitivities"/>
      </eAnnotations>
      <eAnnotations xmi:id="_2EAisxSVEeGGzu7fmW9pXw" source="uml2.alias">
        <details xmi:id="_2EAitBSVEeGGzu7fmW9pXw" key="Allergy and Drug Sensitivity"/>
      </eAnnotations>
      <ownedComment xmi:id="_2GDKEBSVEeGGzu7fmW9pXw" annotatedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <body>This clinical statement act represents a concern relating to a patient's allergies or adverse events. A concern is a term used when referring to patient's problems that are related to one another. Observations of problems or other clinical statements captured at a point in time are wrapped in a Allergy Problem Act, or &quot;Concern&quot; act, which represents the ongoing process tracked over time. This outer Allergy Problem Act (representing the &quot;Concern&quot;) can contain nested problem observations or other nested clinical statements relevant to the allergy concern.</body>
      </ownedComment>
      <ownedRule xmi:id="_L5MNcCWFEeGWfpmyutaqOA" name="AllergyProblemActEffectiveTimeLow" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_UD7aQCWFEeGWfpmyutaqOA">
          <language>OCL</language>
          <body>(self.statusCode.code = 'active') implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2F-RkBSVEeGGzu7fmW9pXw" name="AllergyProblemActEffectiveTimeHigh">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2F-RkRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>(self.statusCode.code = 'completed') implies not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odE_UN6jEee0kIKIEebuqA" name="AllergyProblemActTemplateId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odE_Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.30')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odKe4N6jEee0kIKIEebuqA" name="AllergyProblemActClassCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odKe4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odcywN6jEee0kIKIEebuqA" name="AllergyProblemActMoodCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odcywd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odhEMN6jEee0kIKIEebuqA" name="AllergyProblemActId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odhEMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odkukN6jEee0kIKIEebuqA" name="AllergyProblemActCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odkukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_odpnEN6jEee0kIKIEebuqA" name="AllergyProblemActStatusCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odpnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oeFr8N6jEee0kIKIEebuqA" name="AllergyProblemActEffectiveTime" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oeGTAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oohaUN6jEee0kIKIEebuqA" name="AllergyProblemActAllergyObservation" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oohaUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3tP9wN6jEee0kIKIEebuqA" name="AllergyProblemActCDCodeAndCodeSystemValues" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3tP9wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject((code = 'CONC' and codeSystem = '2.16.840.1.113883.5.6') or (code = '48765-2' and codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3tQk0N6jEee0kIKIEebuqA" name="AllergyProblemActCDCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3tQk0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3tRL4N6jEee0kIKIEebuqA" name="AllergyProblemActCDCodeSystem" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3tRL4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not codeSystem.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2GDKExSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_oohaUt6jEee0kIKIEebuqA" name="getAllergyObservations" bodyCondition="_ooiBYd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ooiBYd6jEee0kIKIEebuqA" name="body" constrainedElement="_oohaUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ooiBYt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyObservation)).oclAsType(consol::AllergyObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_oohaU96jEee0kIKIEebuqA" type="_2EaLUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ooiBYN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2EaLUBSVEeGGzu7fmW9pXw" name="AllergyObservation">
      <eAnnotations xmi:id="_2EaLURSVEeGGzu7fmW9pXw" source="uml2.alias">
        <details xmi:id="_2EaLUhSVEeGGzu7fmW9pXw" key="Allergies and Intolerances"/>
      </eAnnotations>
      <ownedComment xmi:id="_2F5ZEBSVEeGGzu7fmW9pXw" annotatedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <body>This clinical statement represents that an allergy or adverse reaction exists or does not exist. The agent that is the cause of the allergy or adverse reaction is represented as a manufactured material participant playing entity in the allergy - intolerance observation. While the agent is often implicit in the alert observation (e.g. &quot;allergy to penicillin&quot;), it should also be asserted explicitly as an entity. The manufactured material participant is used to represent natural and non-natural occurring substances.&#xD;
NOTE: The agent responsible for an allergy or adverse reaction is not always a manufactured material (for example, food allergies), nor is it necessarily consumed. The following constraints reflect limitations in the base CDA R2 specification, and should be used to represent any type of responsible agent.</body>
      </ownedComment>
      <ownedRule xmi:id="_ouJssCFKEeG9m6LRl9ardQ" name="AllergyObservationValueOriginalText" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qNlMCFKEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).originalText->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cf38gCFLEeG9m6LRl9ardQ" name="AllergyObservationOriginalTextReference" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_iuCH4CFLEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).originalText->size() = 1 implies self.value.oclAsType(datatypes::CD).originalText->one(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_bTC9MOJPEeG3cO7ebC3QuA" name="AllergyObservationOriginalTextReferenceValue" constrainedElement="_cf38gCFLEeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_e7dOUOJPEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).originalText.reference->size() = 1 implies self.value.oclAsType(datatypes::CD).originalText.reference.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_nV_8ECFMEeG9m6LRl9ardQ" name="AllergyObservationReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_j5kg4CKeEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_8gb1UCFTEeG9m6LRl9ardQ" name="SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_L6csQCFUEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::AllergyStatusObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_VBabUCFVEeG9m6LRl9ardQ" name="SubstanceOrDeviceAllergyObservationReactionInversionIndicator" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_f5vPwCFVEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::ReactionObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2EaLbxSVEeGGzu7fmW9pXw" name="SubstanceOrDeviceAllergyObservationSeverityInversionIndicator">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2EaLcBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oePc8N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationTemplateId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oePc8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.7')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oebDIN6jEee0kIKIEebuqA" name="AllergyObservationClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oebDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oeiX4N6jEee0kIKIEebuqA" name="AllergyObservationMoodCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oeiX4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oepFkN6jEee0kIKIEebuqA" name="AllergyObservationId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oepFkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oe0EsN6jEee0kIKIEebuqA" name="AllergyObservationCodeP" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oe0Esd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oet-EN6jEee0kIKIEebuqA" name="AllergyObservationCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oet-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oe6yYN6jEee0kIKIEebuqA" name="AllergyObservationStatusCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oe6yYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ofA5AN6jEee0kIKIEebuqA" name="AllergyObservationEffectiveTime" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ofA5Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ofG_oN6jEee0kIKIEebuqA" name="AllergyObservationValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ofG_od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '420134006' or value.code = '418038007' or value.code = '419511003' or value.code = '418471000' or value.code = '419199007' or value.code = '416098002' or value.code = '414285001' or value.code = '59037007' or value.code = '235719002' or value.code = '232347008' or value.code = '426232007')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_og5vYN6jEee0kIKIEebuqA" name="AllergyObservationReactionObservation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_og5vYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::MFST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohXCYN6jEee0kIKIEebuqA" name="AllergyObservationSeverityObservation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohXCYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p4d_QN6jEee0kIKIEebuqA" name="AllergyObservationAllergyStatusObservation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p4d_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyStatusObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_quhdgN6jEee0kIKIEebuqA" name="AllergyObservationParticipant" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_quhdgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3udesN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3udesd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((originalText.oclIsUndefined() or originalText.isNullFlavorUndefined()) implies (not originalText.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ueFwN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCETranslation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ueFwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ues0N6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ues0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.reference.value.oclIsUndefined() implies not getSection().text.getText(code.originalText.reference.value.substring(2, code.originalText.reference.value.size())).oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ufT4N6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ufT4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.reference.oclIsUndefined() implies code.originalText.reference.value->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uf68N6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uf68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.oclIsUndefined() implies not code.originalText.reference.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uf68t6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uf6896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(( code.oclIsUndefined() or code.isNullFlavorUndefined() ) implies ( not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and ( ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.3.26.1.5' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.6.88' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.4.9' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined() ) ) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ugiAN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ugiAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uhJEN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uhJEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uhwIN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRoleClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uhwId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(not classCode.oclIsUndefined() and classCode.oclIsKindOf(vocab::RoleClassRoot) and &#xD;
let value : vocab::RoleClassRoot = classCode.oclAsType(vocab::RoleClassRoot) in &#xD;
value = vocab::RoleClassRoot::MANU)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uhwIt6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntity" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uhwI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3uiXMN6jEee0kIKIEebuqA" name="AllergyObservationParticipantTypeCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3uiXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::ParticipationType) and &#xD;
let value : vocab::ParticipationType = typeCode.oclAsType(vocab::ParticipationType) in &#xD;
value = vocab::ParticipationType::CSM)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ui-QN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRole" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ui-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2F5ZERSVEeGGzu7fmW9pXw" general="_mgny4NF8EeOHUokOVP95oQ"/>
      <ownedOperation xmi:id="_og7kkN6jEee0kIKIEebuqA" name="getConsolReactionObservations" bodyCondition="_og7kk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_og7kk96jEee0kIKIEebuqA" name="body" constrainedElement="_og7kkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_og7klN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation)).oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_og7kkd6jEee0kIKIEebuqA" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_og7kkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ohXpcN6jEee0kIKIEebuqA" name="getConsolSeverityObservation" bodyCondition="_ohXpc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ohXpc96jEee0kIKIEebuqA" name="body" constrainedElement="_ohXpcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohXpdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation))->asSequence()->any(true).oclAsType(consol::SeverityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ohXpcd6jEee0kIKIEebuqA" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ohXpct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_p4emUN6jEee0kIKIEebuqA" name="getConsolAllergyStatusObservation" bodyCondition="_p4emU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p4emU96jEee0kIKIEebuqA" name="body" constrainedElement="_p4emUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p4emVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyStatusObservation))->asSequence()->any(true).oclAsType(consol::AllergyStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p4emUd6jEee0kIKIEebuqA" type="_2FRuAhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p4emUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2EqqABSVEeGGzu7fmW9pXw" name="AgeObservation">
      <ownedComment xmi:id="_2EqqARSVEeGGzu7fmW9pXw" annotatedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <body>This Age Observation represents the subject's age at onset of an event or observation. The age of a relative in a Family History Observation at the time of that observation could also be inferred by comparing RelatedSubject/subject/birthTime with Observation/effectiveTime. However, a common scenario is that a patient will know the age of a relative when the relative had a certain condition or when the relative died, but will not know the actual year (e.g., &quot;grandpa died of a heart attack at the age of 50&quot;). Often times, neither precise dates nor ages are known (e.g. &quot;cousin died of congenital heart disease as an infant&quot;).</body>
      </ownedComment>
      <ownedRule xmi:id="_sPoAUCBCEeG938evaWkvcA" name="AgeObservationValueUnits" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yRGakCBCEeG938evaWkvcA">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::PQ).unit->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohYQgN6jEee0kIKIEebuqA" name="AgeObservationTemplateId" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohYQgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.31')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohch8N6jEee0kIKIEebuqA" name="AgeObservationClassCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohch8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohhacN6jEee0kIKIEebuqA" name="AgeObservationMoodCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohhacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohtAoN6jEee0kIKIEebuqA" name="AgeObservationCodeP" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohtAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohmS8N6jEee0kIKIEebuqA" name="AgeObservationCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohmS8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '445518008' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ohygMN6jEee0kIKIEebuqA" name="AgeObservationStatusCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ohygMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oh3YsN6jEee0kIKIEebuqA" name="AgeObservationStatusCodeP" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oh3Ysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oh8RMN6jEee0kIKIEebuqA" name="AgeObservationValue" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oh8RMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::PQ)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2EvigBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2ExXsBSVEeGGzu7fmW9pXw" name="HealthStatusObservation">
      <ownedComment xmi:id="_2ExXsRSVEeGGzu7fmW9pXw" annotatedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <body>The Health Status Observation records information about the current health status of the patient.</body>
      </ownedComment>
      <ownedRule xmi:id="_2ExXshSVEeGGzu7fmW9pXw" name="HealthStatusObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ExXsxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1RiOwOJrEeG3cO7ebC3QuA" name="HealthStatusObservationTextReferenceValue" constrainedElement="_QEznYCf4EeGO5_JBy9h6BA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8fXHYOJrEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_QEznYCf4EeGO5_JBy9h6BA" name="HealthStatusObservationHasTextReferenceValue" constrainedElement="_2ExXshSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SLltsCf4EeGO5_JBy9h6BA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oh-tcN6jEee0kIKIEebuqA" name="HealthStatusObservationTemplateId" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oh-tcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oiFbIN6jEee0kIKIEebuqA" name="HealthStatusObservationClassCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oiFbId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oiJskN6jEee0kIKIEebuqA" name="HealthStatusObservationMoodCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oiJskd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oiOlEN6jEee0kIKIEebuqA" name="HealthStatusObservationCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oiOlEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11323-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oiTdkN6jEee0kIKIEebuqA" name="HealthStatusObservationText" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oiTdkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oiXH8N6jEee0kIKIEebuqA" name="HealthStatusObservationStatusCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oiXH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oid1oN6jEee0kIKIEebuqA" name="HealthStatusObservationValue" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oid1od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '81323004' or value.code = '313386006' or value.code = '162467007' or value.code = '161901003' or value.code = '271593001' or value.code = '21134002' or value.code = '161045001' or value.code = '419099009' or value.code = '135818000' or value.code = '135815002')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oi6hkN6jEee0kIKIEebuqA" name="HealthStatusObservationValueP" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oi6hkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2E56kRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2E_aIRSVEeGGzu7fmW9pXw" name="ReactionObservation">
      <ownedComment xmi:id="_j3HUIBraEeGo461UQq-B1g">
        <body>This clinical statement represents an undesired symptom, finding, etc., due to an administered or exposed substance. A reaction can be defined with respect to its severity, and can have been treated by one or more interventions.</body>
      </ownedComment>
      <ownedRule xmi:id="_gBlYICKdEeG9m6LRl9ardQ" name="ReactionObservationTextReference" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sG9OgCKdEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_l-kdAOJVEeG3cO7ebC3QuA" name="ReactionObservationTextReferenceValue" constrainedElement="_gBlYICKdEeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qB5IgOJVEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0eDcUCKdEeG9m6LRl9ardQ" name="ReactionObservationReferenceValue" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3rGAECKdEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1SPc4CKeEeG9m6LRl9ardQ" name="ReactionObservationEffectiveTimeLow" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7fXGcCKeEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3qPPACKeEeG9m6LRl9ardQ" name="ReactionObservationEffectiveTimeHigh" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8rNOgCKeEeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_jm2UICYKEeGWfpmyutaqOA" name="ReactionObservationSeverityObservationInversionInd" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qNTDsCYKEeGWfpmyutaqOA">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_IvIIQBrcEeGo461UQq-B1g" name="ReactionObservationProcedureActivityProcedureInversionInd" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_XcWKoBrcEeGo461UQq-B1g">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.procedure.oclIsTypeOf(consol::ProcedureActivityProcedure))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_P3TE0BrcEeGo461UQq-B1g" name="ReactionObservationMedicationActivityInversionInd" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_U-Q-oBrcEeGo461UQq-B1g">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.substanceAdministration.oclIsTypeOf(consol::MedicationActivity))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ojX0kN6jEee0kIKIEebuqA" name="ReactionObservationTemplateId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ojYboN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.9')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ojjawN6jEee0kIKIEebuqA" name="ReactionObservationClassCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ojjawd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ojnsMN6jEee0kIKIEebuqA" name="ReactionObservationMoodCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ojnsMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ojr9oN6jEee0kIKIEebuqA" name="ReactionObservationId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ojr9od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ojxdMN6jEee0kIKIEebuqA" name="ReactionObservationCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ojxdMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oj2VsN6jEee0kIKIEebuqA" name="ReactionObservationText" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oj2Vsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oj6nIN6jEee0kIKIEebuqA" name="ReactionObservationStatusCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oj6nId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_okAGsN6jEee0kIKIEebuqA" name="ReactionObservationEffectiveTime" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_okAGsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_okE_MN6jEee0kIKIEebuqA" name="ReactionObservationValue" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_okFmQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_okkucN6jEee0kIKIEebuqA" name="ReactionObservationValueP" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_okkucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_om9UEN6jEee0kIKIEebuqA" name="ReactionObservationSeverityObservation" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_om9UEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qQXh4N6jEee0kIKIEebuqA" name="ReactionObservationProcedureActivityProcedure" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qQXh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::ProcedureActivityProcedure) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qQxKgN6jEee0kIKIEebuqA" name="ReactionObservationMedicationActivity" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qQxKgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2FwPIhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_om97IN6jEee0kIKIEebuqA" name="getSeverityObservation" bodyCondition="_om97I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_om97I96jEee0kIKIEebuqA" name="body" constrainedElement="_om97IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_om97JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation))->asSequence()->any(true).oclAsType(consol::SeverityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_om97Id6jEee0kIKIEebuqA" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_om97It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qQXh4t6jEee0kIKIEebuqA" name="getProcedureActivityProcedures" bodyCondition="_qQYI8N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qQYI8N6jEee0kIKIEebuqA" name="body" constrainedElement="_qQXh4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qQYI8d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure)).oclAsType(consol::ProcedureActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qQXh496jEee0kIKIEebuqA" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qQXh5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qQxKgt6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_qQxKhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qQxKhd6jEee0kIKIEebuqA" name="body" constrainedElement="_qQxKgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qQxxkN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qQxKg96jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qQxKhN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2FGu4hSVEeGGzu7fmW9pXw" name="SeverityObservation">
      <ownedComment xmi:id="_2FGu4xSVEeGGzu7fmW9pXw" annotatedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <body>This clinical statement represents the gravity of the problem, such as allergy or reaction, in terms of its actual or potential impact on the patient. The Severity Observation can be associated with an Allergy Obervation, Reaction Observation or both. When the Severity Observation is associated directly with an Allergy it characterizes the Allergy. When the Severity Observation is associated with a Reaction Observation it characterizes a Reaction. A person may manifest many symptoms in a reaction to a single substance, and each reaction to the substance can be represented. However, each reaction observation can have only one severity observation associated with it. For example, someone may have a rash reaction observation as well as an itching reaction observation, but each can have only one level of severity</body>
      </ownedComment>
      <ownedRule xmi:id="_sBN0ECK3EeG9m6LRl9ardQ" name="SeverityObservationTextReference" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wsR1ACK3EeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wNrf4OJWEeG3cO7ebC3QuA" name="SeverityObservationTextReferenceValue" constrainedElement="_sBN0ECK3EeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ztTocOJWEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0IXhYCK3EeG9m6LRl9ardQ" name="SeverityObservationReferenceValue" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3NEBcCK3EeG9m6LRl9ardQ">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olBaYN6jEee0kIKIEebuqA" name="SeverityObservationTemplateId" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olBaYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.8')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olHhAN6jEee0kIKIEebuqA" name="SeverityObservationClassCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olHhAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olLycN6jEee0kIKIEebuqA" name="SeverityObservationMoodCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olLycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olPc0N6jEee0kIKIEebuqA" name="SeverityObservationCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olPc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'SEV' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olU8YN6jEee0kIKIEebuqA" name="SeverityObservationText" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olU8Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_olX_sN6jEee0kIKIEebuqA" name="SeverityObservationStatusCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_olX_sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oletYN6jEee0kIKIEebuqA" name="SeverityObservationValue" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oletYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '255604002' or value.code = '371923003' or value.code = '6736007' or value.code = '371924009' or value.code = '24484000' or value.code = '399166001')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ol6LMN6jEee0kIKIEebuqA" name="SeverityObservationValueP" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ol6LMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2FODoBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2FRuAhSVEeGGzu7fmW9pXw" name="AllergyStatusObservation">
      <ownedComment xmi:id="_2FRuAxSVEeGGzu7fmW9pXw" annotatedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
This template represents the status of the allergy indicating whether it is active, no longer active, or is an historic allergy. There can be only one allergy status observation per alert observation.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
THIS TEMPLATE HAS BEEN DEPRECATED AND MAY BE DELETED FROM A FUTURE RELEASE OF THIS IMPLEMENTATION GUIDE. USE OF THIS TEMPLATE IS NOT RECOMMENDED.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_om97Jd6jEee0kIKIEebuqA" name="AllergyStatusObservationTemplateId" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_om-iMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.28')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onCMkN6jEee0kIKIEebuqA" name="AllergyStatusObservationClassCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onCMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onGeAN6jEee0kIKIEebuqA" name="AllergyStatusObservationMoodCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onGeAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onKIYN6jEee0kIKIEebuqA" name="AllergyStatusObservationCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onKIYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onPn8N6jEee0kIKIEebuqA" name="AllergyStatusObservationStatusCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onPn8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onVukN6jEee0kIKIEebuqA" name="AllergyStatusObservationValue" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onVukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '55561003' or value.code = '73425007' or value.code = '413322009')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2FbfABSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2FhloBSVEeGGzu7fmW9pXw" name="CommentActivity">
      <ownedComment xmi:id="_70j2oHeeEeGLwesdFe7o6w">
        <body>Comments are free text data that cannot otherwise be recorded using data elements already defined by this specification. They are not to be used to record information that can be recorded elsewhere. For example, a free text description of the severity of an allergic reaction would not be recorded in a comment.</body>
      </ownedComment>
      <ownedRule xmi:id="_kCuRsOZCEeGINOJ_SD9_dA" name="CommentActivityTextReference" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkWuQOZCEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_mmOwQOZCEeGINOJ_SD9_dA" name="CommentActivityTextReferenceValue" constrainedElement="_kCuRsOZCEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rrcWkOZCEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_npxQ4OZCEeGINOJ_SD9_dA" name="CommentActivityReferenceValue" constrainedElement="_mmOwQOZCEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZmu0OZCEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_onxzcN6jEee0kIKIEebuqA" name="CommentActivityTemplateId" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_onxzcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.64')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_on36EN6jEee0kIKIEebuqA" name="CommentActivityClassCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_on36Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_on7kcN6jEee0kIKIEebuqA" name="CommentActivityMoodCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_on7kcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_on_O0N6jEee0kIKIEebuqA" name="CommentActivityCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_on_O0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '48767-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ooDgQN6jEee0kIKIEebuqA" name="CommentActivityText" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ooEHUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3R8h0N6jEee0kIKIEebuqA" name="CommentActivityAuthorParticipation" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3R8h0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2FrWohSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2GHbgBSVEeGGzu7fmW9pXw" name="MedicationActivity">
      <ownedComment xmi:id="_NWhH8B-vEeGKirKJsFylGA">
        <body>A medication activity describes substance administrations that have actually occurred (e.g. pills ingested or injections given) or are intended to occur (e.g. &quot;take 2 tablets twice a day for the next 10 days&quot;). Medication activities in &quot;INT&quot; mood are reflections of what a clinician intends a patient to be taking. Medication activities in &quot;EVN&quot; mood reflect actual use.&#xD;
Medication timing is complex. This template requires that there be a substanceAdministration/effectiveTime valued with a time interval, representing the start and stop dates. Additional effectiveTime elements are optional, and can be used to represent frequency and other aspects of more detailed dosing regimens.</body>
      </ownedComment>
      <ownedRule xmi:id="_K_ZiwB-zEeGKirKJsFylGA" name="MedicationActivityDoseQuantityorrateQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_PVv38B-zEeGKirKJsFylGA">
          <language>OCL</language>
          <body>self.doseQuantity->size() = 1 or self.rateQuantity->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_nSTKYEFiEeG2TLeVPbv7pg" name="MedicationActivityTextReference" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEPtkEFiEeG2TLeVPbv7pg">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ovaIgOL7EeGfv4R-kzpM0g" name="MedicationActivityReferenceValue" constrainedElement="_nSTKYEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rICz0OL7EeGfv4R-kzpM0g">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ukkeIEFiEeG2TLeVPbv7pg" name="MedicationActivityTextReferenceValue" constrainedElement="_nSTKYEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wqKRoEFiEeG2TLeVPbv7pg">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BnBgEIiEeG4bZAl2IGXmQ" name="MedicationActivityEffectiveTimeIVLTSorTS" constrainedElement="_4CqJMEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_BbXhwEIjEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->size() = 1 xor self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::SXCM_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CqJMEFiEeG2TLeVPbv7pg" name="MedicationActivityEffectiveTimeIVLTSLow" constrainedElement="_ukkeIEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwzXsEFjEeG2TLeVPbv7pg">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).low->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ODpwEFiEeG2TLeVPbv7pg" name="MedicationActivityEffectiveTimeIVLTSHigh" constrainedElement="_4CqJMEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6jRPUEFjEeG2TLeVPbv7pg">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_MI3dwL59EeO8lb9TgnhnOQ" name="MedicationActivityEffectiveTimeTSValue" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_AbC6sMLGEeSqg-Exmsy2kg">
          <body>Note: indicates a single-administration timestamp</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_S4L1cL59EeO8lb9TgnhnOQ">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes:: SXCM_TS))->forAll( eff | eff.oclAsType(datatypes:: SXCM_TS).value->size() = 1 or eff.oclAsType(datatypes:: SXCM_TS).isNullFlavorDefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0bGJYEIiEeG4bZAl2IGXmQ" name="MedicationActivityEffectiveTimePIVLTS" constrainedElement="_6ODpwEFiEeG2TLeVPbv7pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Jd8REEIjEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::PIVL_TS) or ef.oclIsTypeOf(datatypes::EIVL_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Ldxa0EIjEeG4bZAl2IGXmQ" name="MedicationActivityEffectiveTimeOperator" constrainedElement="_0bGJYEIiEeG4bZAl2IGXmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VcK9oEIjEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::PIVL_TS) or ef.oclIsTypeOf(datatypes::EIVL_TS))->forAll(eff | eff.operator = vocab::SetOperator::A and eff.operator->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cWfuoEInEeG4bZAl2IGXmQ" name="MedicationActivityDoseQuantityUnit" constrainedElement="_Ldxa0EIjEeG4bZAl2IGXmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ffCM4EInEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>not self.doseQuantity.oclIsUndefined() implies not self.doseQuantity.unit.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1smJUEIpEeG4bZAl2IGXmQ" name="MedicationActivityDrugVehicleTypeCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_FEb2AEIqEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::DrugVehicle))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::CSM)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_L0emcEIqEeG4bZAl2IGXmQ" name="MedicationActivityInstructionsInversionInd" constrainedElement="_1smJUEIpEeG4bZAl2IGXmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_QiVcsEIqEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0EuxoAXoEeOc4J5a9hlM-Q" name="MedicationActivityRateQuantityUnit" constrainedElement="_Ldxa0EIjEeG4bZAl2IGXmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6TqZEAXoEeOc4J5a9hlM-Q">
          <language>OCL</language>
          <body>not self.rateQuantity.oclIsUndefined() implies self.rateQuantity.oclAsType(datatypes::PQ).unit->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ooiBY96jEee0kIKIEebuqA" name="MedicationActivityTemplateId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ooiBZN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.16')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ooygEN6jEee0kIKIEebuqA" name="MedicationActivityClassCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ooygEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oo2KcN6jEee0kIKIEebuqA" name="MedicationActivityMoodCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oo2Kcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_opS2YN6jEee0kIKIEebuqA" name="MedicationActivityId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_opS2Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_opV5sN6jEee0kIKIEebuqA" name="MedicationActivityCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_opV5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_opY9AN6jEee0kIKIEebuqA" name="MedicationActivityStatusCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_opY9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_op4FMN6jEee0kIKIEebuqA" name="MedicationActivityRouteCodeP" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_op4sQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_opcnYN6jEee0kIKIEebuqA" name="MedicationActivityRouteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_opcnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oqUxIN6jEee0kIKIEebuqA" name="MedicationActivityApproachSiteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oqUxId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oqw2AN6jEee0kIKIEebuqA" name="MedicationActivityApproachSiteCodeP" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oqw2Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.approachSiteCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_orM64N6jEee0kIKIEebuqA" name="MedicationActivityDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_orM64d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_orQlQN6jEee0kIKIEebuqA" name="MedicationActivityRateQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_orQlQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.rateQuantity.oclIsUndefined() or self.rateQuantity.isNullFlavorUndefined()) implies (not self.rateQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_orTokN6jEee0kIKIEebuqA" name="MedicationActivityMaxDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_orTokd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.maxDoseQuantity.oclIsUndefined() or self.maxDoseQuantity.isNullFlavorUndefined()) implies (not self.maxDoseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_orzX0N6jEee0kIKIEebuqA" name="MedicationActivityAdministrationUnitCodeP" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_orzX0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_orX6AN6jEee0kIKIEebuqA" name="MedicationActivityAdministrationUnitCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_orX6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and (value.code = 'C42887' or value.code = 'C42888' or value.code = 'C42960' or value.code = 'C42971' or value.code = 'C42889' or value.code = 'C42892' or value.code = 'C42890' or value.code = 'C43451' or value.code = 'C42891' or value.code = 'C25158' or value.code = 'C42895' or value.code = 'C42896' or value.code = 'C42917' or value.code = 'C42902' or value.code = 'C42904' or value.code = 'C42916' or value.code = 'C42928' or value.code = 'C42936' or value.code = 'C42954' or value.code = 'C45414' or value.code = 'C42678' or value.code = 'C60884' or value.code = 'C60891' or value.code = 'C42900' or value.code = 'C42919' or value.code = 'C28944' or value.code = 'C60897' or value.code = 'C42901' or value.code = 'C45415' or value.code = 'C47890' or value.code = 'C43525' or value.code = 'C42679' or value.code = 'C42763' or value.code = 'C17423' or value.code = 'C42912' or value.code = 'C42913' or value.code = 'C42915' or value.code = 'C42929' or value.code = 'C60926' or value.code = 'C42932' or value.code = 'C42920' or value.code = 'C42984' or value.code = 'C60927' or value.code = 'C60928' or value.code = 'C60929' or value.code = 'C42933' or value.code = 'C42934' or value.code = 'C42906' or value.code = 'C60930' or value.code = 'C48193' or value.code = 'C42937' or value.code = 'C45416' or value.code = 'C42938' or value.code = 'C42903' or value.code = 'C42909' or value.code = 'C42939' or value.code = 'C42940' or value.code = 'C42921' or value.code = 'C42941' or value.code = 'C42894' or value.code = 'C42978' or value.code = 'C42942' or value.code = 'C42944' or value.code = 'C60931' or value.code = 'C42946' or value.code = 'C42914' or value.code = 'C42950' or value.code = 'C42974' or value.code = 'C42976' or value.code = 'C42977' or value.code = 'C42959' or value.code = 'C42957' or value.code = 'C42958' or value.code = 'C42956' or value.code = 'C42945' or value.code = 'C42899' or value.code = 'C42995' or value.code = 'C42926' or value.code = 'C42951' or value.code = 'C42988' or value.code = 'C60933' or value.code = 'C42922' or value.code = 'C47915' or value.code = 'C42947' or value.code = 'C42948' or value.code = 'C47916' or value.code = 'C45413' or value.code = 'C42949' or value.code = 'C42952' or value.code = 'C42953' or value.code = 'C60934' or value.code = 'C29167' or value.code = 'C60957' or value.code = 'C60958' or value.code = 'C42955' or value.code = 'C29269' or value.code = 'C42965' or value.code = 'C42966' or value.code = 'C60984' or value.code = 'C47887' or value.code = 'C42967' or value.code = 'C42907' or value.code = 'C60985' or value.code = 'C42968' or value.code = 'C42923' or value.code = 'C42911' or value.code = 'C42969' or value.code = 'C42943' or value.code = 'C42918' or value.code = 'C25394' or value.code = 'C42970' or value.code = 'C47913' or value.code = 'C42972' or value.code = 'C42908' or value.code = 'C42973' or value.code = 'C42975' or value.code = 'C42961' or value.code = 'C60988' or value.code = 'C42979' or value.code = 'C42980' or value.code = 'C42981' or value.code = 'C42982' or value.code = 'C42983' or value.code = 'C42986' or value.code = 'C42898' or value.code = 'C42987' or value.code = 'C60994' or value.code = 'C42935' or value.code = 'C60992' or value.code = 'C47912' or value.code = 'C42989' or value.code = 'C42962' or value.code = 'C42990' or value.code = 'C42991' or value.code = 'C47914' or value.code = 'C42993' or value.code = 'C42924' or value.code = 'C42994' or value.code = 'C42925' or value.code = 'C60995' or value.code = 'C47889' or value.code = 'C47898' or value.code = 'C42996' or value.code = 'C42998' or value.code = 'C42893' or value.code = 'C42897' or value.code = 'C60997' or value.code = 'C42905' or value.code = 'C42997' or value.code = 'C42910' or value.code = 'C42927' or value.code = 'C42931' or value.code = 'C42930' or value.code = 'C61004' or value.code = 'C61005' or value.code = 'C42964' or value.code = 'C42963' or value.code = 'C42999' or value.code = 'C61006' or value.code = 'C42985' or value.code = 'C42992' or value.code = 'C47892' or value.code = 'C47897' or value.code = 'C43000' or value.code = 'C43001' or value.code = 'C43002' or value.code = 'C43003'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_osQq0N6jEee0kIKIEebuqA" name="MedicationActivityText" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_osQq0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_osTuIN6jEee0kIKIEebuqA" name="MedicationActivityRepeatNumber" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_osUVMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_os0rgN6jEee0kIKIEebuqA" name="MedicationActivityMedicationSupplyOrder" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_os0rgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_otUawN6jEee0kIKIEebuqA" name="MedicationActivityReactionObservation" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_otVB0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_otyU0N6jEee0kIKIEebuqA" name="MedicationActivityPerformer" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_otyU0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owFa4N6jEee0kIKIEebuqA" name="MedicationActivityInstructions" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owFa4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pugK8N6jEee0kIKIEebuqA" name="MedicationActivityIndication" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pugK8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pwa2gN6jEee0kIKIEebuqA" name="MedicationActivityMedicationDispense" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwbdkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationDispense) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pxHaEN6jEee0kIKIEebuqA" name="MedicationActivityDrugVehicle" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxHaEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::DrugVehicle))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sUKloN6jEee0kIKIEebuqA" name="MedicationActivityConsumable" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sUKlod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ThtUN6jEee0kIKIEebuqA" name="MedicationActivityPrecondition" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ThtUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3vBfYN6jEee0kIKIEebuqA" name="MedicationActivityConsumableMedicationInformation" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3vBfYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::MedicationInformation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3veLUN6jEee0kIKIEebuqA" name="MedicationActivityPreconditionTypeCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3veLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3veyYN6jEee0kIKIEebuqA" name="MedicationActivityPreconditionPreconditionForSubstanceAdministration" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3veyYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2H1SwhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_os1SkN6jEee0kIKIEebuqA" name="getMedicationSupplyOrder" bodyCondition="_os1Sk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_os1Sk96jEee0kIKIEebuqA" name="body" constrainedElement="_os1SkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_os1SlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_os1Skd6jEee0kIKIEebuqA" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_os1Skt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_otVB0d6jEee0kIKIEebuqA" name="getReactionObservation" bodyCondition="_otVo4d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_otVo4d6jEee0kIKIEebuqA" name="body" constrainedElement="_otVB0d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_otVo4t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation))->asSequence()->any(true).oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_otVB0t6jEee0kIKIEebuqA" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_otVo4N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_owGB8N6jEee0kIKIEebuqA" name="getInstructions" bodyCondition="_owGB896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_owGB896jEee0kIKIEebuqA" name="body" constrainedElement="_owGB8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_owGB9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_owGB8d6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_owGB8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pugK8t6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_pugK9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pugK9d6jEee0kIKIEebuqA" name="body" constrainedElement="_pugK8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pugyAN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pugK896jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pugK9N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pwbdkd6jEee0kIKIEebuqA" name="getMedicationDispenses" bodyCondition="_pwbdlN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pwbdlN6jEee0kIKIEebuqA" name="body" constrainedElement="_pwbdkd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwcEoN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense)).oclAsType(consol::MedicationDispense)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pwbdkt6jEee0kIKIEebuqA" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pwbdk96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pxHaEt6jEee0kIKIEebuqA" name="getDrugVehicles" bodyCondition="_pxIBIt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pxIBIt6jEee0kIKIEebuqA" name="body" constrainedElement="_pxHaEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxIBI96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::DrugVehicle)).oclAsType(consol::DrugVehicle)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pxIBIN6jEee0kIKIEebuqA" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pxIBId6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2G2bUxSVEeGGzu7fmW9pXw" name="ProductInstance">
      <ownedComment xmi:id="_2G2bVBSVEeGGzu7fmW9pXw" annotatedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <body>This clinical statement represents a particular device that was placed in or used as part of a procedure or other act. This provides a record of the identifier and other details about the given product that was used. For example, it is important to have a record that indicates not just that a hip prostheses was placed in a patient but that it was a particular hip prostheses number with a unique identifier.&#xD;
The FDA Amendments Act specifies the creation of a Unique Device Identification (UDI) System that requires the label of devices to bear a unique identifier that will standardize device identification and identify the device through distribution and use.  &#xD;
The UDI should be sent in the participantRole/id.</body>
      </ownedComment>
      <ownedRule xmi:id="_otzi8N6jEee0kIKIEebuqA" name="ProductInstanceTemplateId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_otzi8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.37')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ot30YN6jEee0kIKIEebuqA" name="ProductInstanceClassCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ot30Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ot7ewN6jEee0kIKIEebuqA" name="ProductInstanceId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ot7ewd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rZXxUN6jEee0kIKIEebuqA" name="ProductInstanceScopingEntity" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZXxUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.scopingEntity->one(scopingEntity : cda::Entity | not scopingEntity.oclIsUndefined() and scopingEntity.oclIsKindOf(cda::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rZwy4N6jEee0kIKIEebuqA" name="ProductInstancePlayingDevice" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZwy4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.playingDevice->one(playingDevice : cda::Device | not playingDevice.oclIsUndefined() and playingDevice.oclIsKindOf(cda::Device))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3v5pIN6jEee0kIKIEebuqA" name="ProductInstanceScopingEntityId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3v5pId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.scopingEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3wdCwN6jEee0kIKIEebuqA" name="ProductInstancePlayingDeviceCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3wdCwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.playingDevice->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2G43kBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2G8h9RSVEeGGzu7fmW9pXw" name="Instructions">
      <ownedComment xmi:id="_-HE7oB7lEeGEaLkc3UAsAg">
        <body>The Instructions template can be used in several ways, such as to record patient instructions within a Medication Activity or to record fill instructions within a supply order. The act/code defines the type of instruction.Though not defined in this template, a Vaccine Information Statement (VIS) document could be referenced through act/reference/externalDocument, and patient awareness of the instructions can be represented with the generic participant and the participant/awarenessCode.</body>
      </ownedComment>
      <ownedRule xmi:id="_VsoLUBueEeGnMahsPjlwOw" name="InstructionsTextReference" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Y-ZeEBueEeGnMahsPjlwOw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1sHS4OMkEeGfv4R-kzpM0g" name="InstructionsReferenceValue" constrainedElement="_VsoLUBueEeGnMahsPjlwOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5-UH4OMkEeGfv4R-kzpM0g">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_8FmGoB-WEeGtfPlBCjHWkw" name="InstructionsTextReferenceValue" constrainedElement="_VsoLUBueEeGnMahsPjlwOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="__GkkUB-WEeGtfPlBCjHWkw">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ouF20N6jEee0kIKIEebuqA" name="InstructionsTemplateId" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ouF20d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.20')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ouL9cN6jEee0kIKIEebuqA" name="InstructionsClassCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ouL9cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ouSEEN6jEee0kIKIEebuqA" name="InstructionsMoodCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ouSEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ovHxkN6jEee0kIKIEebuqA" name="InstructionsCodeP" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ovHxkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ouYKsN6jEee0kIKIEebuqA" name="InstructionsCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ouYKsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ovkdgN6jEee0kIKIEebuqA" name="InstructionsText" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ovkdgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ovoH4N6jEee0kIKIEebuqA" name="InstructionsStatusCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ovoH4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2HCBgRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2HIvMBSVEeGGzu7fmW9pXw" name="NonMedicinalSupplyActivity">
      <ownedComment xmi:id="_kXIeEDiAEeGSytqLITd2FA">
        <body>This template records non-medicinal supplies provided, such as medical equipment</body>
      </ownedComment>
      <ownedRule xmi:id="_uejSEEa6EeG7gbamepbPeA" name="NonMedicinalSupplyActivityEffectiveTimeHigh" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_BKhB8Ea7EeG7gbamepbPeA">
          <language>OCL</language>
          <body>self.effectiveTime->size() = 1 implies self.effectiveTime.oclAsType(datatypes::IVL_TS)->forAll(high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fELj4Ea8EeG75M7WNoZ4Xg" name="NonMedicinalSupplyActivityProductInstanceTypeCode" constrainedElement="_uejSEEa6EeG7gbamepbPeA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kenzUEa8EeG75M7WNoZ4Xg">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ProductInstance))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::PRD)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owGB9d6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityTemplateId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owGpAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.50')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owLhgN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityClassCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owLhgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owPL4N6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityMoodCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owPL4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owr30N6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owr30d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owviMN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityStatusCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owviMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_owzMkN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityEffectiveTime" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_owzMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (( not self.effectiveTime->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ow228N6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityQuantity" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ow228d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxSUwN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityProductInstance" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxSUwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ProductInstance))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2HnQUhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_oxS70N6jEee0kIKIEebuqA" name="getProductInstance" bodyCondition="_oxS7096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_oxS7096jEee0kIKIEebuqA" name="body" constrainedElement="_oxS70N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxS71N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ProductInstance))->asSequence()->any(true).oclAsType(consol::ProductInstance)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_oxS70d6jEee0kIKIEebuqA" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oxS70t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2H6yUBSVEeGGzu7fmW9pXw" name="ProblemConcernAct">
      <ownedComment xmi:id="_KPRpwCApEeGetMjKLkqR8g">
        <body>This template reflects an ongoing concern on behalf of the provider that placed the concern on a patient's problem list. So long as the underlying condition is of concern to the provider (i.e., as long as the condition, whether active or resolved, is of ongoing concern and interest to the provider), the statusCode is &quot;active&quot;. Only when the underlying condition is no longer of concern is the statusCode set to &quot;completed&quot;. The effectiveTime reflects the time that the underlying condition was felt to be a concern; it may or may not correspond to the effectiveTime of the condition (e.g., even five years later, the clinician may remain concerned about a prior heart attack).&#xD;
The statusCode of the Problem Concern Act is the definitive indication of the status of the concern, whereas the effectiveTime of the nested Problem Observation is the definitive indication of whether or not the underlying condition is resolved.&#xD;
The effectiveTime/low of the Problem Concern Act asserts when the concern became active. This equates to the time the concern was authored in the patient's chart. The effectiveTime/high asserts when the concern was completed (e.g., when the clinician deemed there is no longer any need to track the underlying condition).&#xD;
A Problem Concern Act can contain many Problem Observations (templateId 2.16.840.1.113883.10.20.22.4.4.2). Each Problem Observation is a discrete observation of a condition, and therefore will have a statusCode of &quot;completed&quot;. The many Problem Observations nested under a Problem Concern Act reflect the change in the clinical understanding of a condition over time. For instance, a Concern may initially contain a Problem Observation of &quot;chest pain&quot;:&#xD;
 - Problem Concern 1&#xD;
???? --- Problem Observation: Chest Pain &#xD;
Later, a new Problem Observation of &quot;esophagitis&quot; will be added, reflecting a better understanding of the nature of the chest pain. The later problem observation will have a more recent author time stamp. &#xD;
 - Problem Concern 1&#xD;
???? --- Problem Observation (author/time Jan 3, 2012): Chest Pain &#xD;
???? --- Problem Observation (author/time Jan 6, 2012): Esophagitis&#xD;
Many systems display the nested Problem Observation with the most recent author time stamp, and provide a mechanism for viewing prior observations.</body>
      </ownedComment>
      <ownedRule xmi:id="_2IFKYxSVEeGGzu7fmW9pXw" name="ProblemConcernActEffectiveTimeLow">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2IFKZBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_SxxO0Cf2EeGO5_JBy9h6BA" name="ProblemConcernActEffectiveTimeHigh" constrainedElement="_2IFKYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_X8yiMCf2EeGO5_JBy9h6BA">
          <language>OCL</language>
          <body>not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxTi4N6jEee0kIKIEebuqA" name="ProblemConcernActTemplateId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxTi4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.3')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxYbYN6jEee0kIKIEebuqA" name="ProblemConcernActClassCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxYbYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxcFwN6jEee0kIKIEebuqA" name="ProblemConcernActMoodCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxcFwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxfJEN6jEee0kIKIEebuqA" name="ProblemConcernActId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxfJEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxnE4N6jEee0kIKIEebuqA" name="ProblemConcernActCodeP" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxnE4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxizcN6jEee0kIKIEebuqA" name="ProblemConcernActCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxizcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'CONC' and value.codeSystem = '2.16.840.1.113883.5.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oxr9YN6jEee0kIKIEebuqA" name="ProblemConcernActStatusCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oxr9Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oyHbMN6jEee0kIKIEebuqA" name="ProblemConcernActEffectiveTime" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oyHbMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p-dSgN6jEee0kIKIEebuqA" name="ProblemConcernActProblemObservation" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-dSgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2IINsxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_p-dSgt6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_p-dShd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p-dShd6jEee0kIKIEebuqA" name="body" constrainedElement="_p-dSgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-dSht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p-dSg96jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p-dShN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2IJb0BSVEeGGzu7fmW9pXw" name="ContinuityOfCareDocument">
      <ownedComment xmi:id="_2IJb0RSVEeGGzu7fmW9pXw" annotatedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <body>This section, Continuity of Care Document (CCD) Release 1.1, describes CDA constraints  in accordance with Stage 1 Meaningful Use. The CCD requirements in this guide supersede CCD Release 1; in the near future, this guide could supersede HITSP C32 .&#xD;
&#xD;
The CCD is a core data set of the most relevant administrative, demographic, and clinical information facts about a patient's healthcare, covering one or more healthcare encounters. It provides a means for one healthcare practitioner, system, or setting to aggregate all of the pertinent data about a patient and forward it to another practitioner, system, or setting to support the continuity of care. The primary use case for the CCD is to provide a snapshot in time containing the pertinent clinical, demographic, and administrative data for a specific patient . More specific use cases, such as a Discharge Summary or Progress Note, are available as alternative documents in this guide.</body>
      </ownedComment>
      <ownedRule xmi:id="_oyKegN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oyKegd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oyVdoN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentCodeP" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oyVdod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oyNh0N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oyNh0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '34133-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oyenkN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentLanguageCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oyenkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sL6okN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOf" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sL6okd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sMvH8N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAuthor" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMvH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sNhyIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAllergiesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNhyId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sN7awN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentMedicationsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sN7awd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sOVDYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentProblemSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOVDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sOv6IN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentProceduresSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOv6Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sPI7sN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentResultsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPI7sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sPh9QN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAdvanceDirectivesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPh9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sQAeYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentEncountersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQAeYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sQaHAN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentFamilyHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQaHAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sQzvoN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentFunctionalStatusSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQzvod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sRMKIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentImmunizationsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sRMxMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sRnn8N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentMedicalEquipmentSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sRnn8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sSB3oN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentPayersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sSB3od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sSbgQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentPlanOfCareSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sSbgQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sS0h0N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentSocialHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sS1I4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sTTqAN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentVitalSignsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sTTqAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3xVMgN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3xVMgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3xVzkN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3xVzkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yH2sN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yH2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject(id->exists(root='2.16.840.1.113883.4.6'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yIdwN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yIdwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yJE0N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yJE0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yJr4N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yJr4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yKS8N6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yKS8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yK6AN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventClassCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yK6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yK6At6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yK6A96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yLhEN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformer" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yLhEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3yMIIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentDocumentationOfServiceEvent" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3yMIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3y-LQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3y-LQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not assignedPerson.oclIsUndefined()) or (not representedOrganization.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3y-yUN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAuthorAssignedAuthorHasRepresentOrganization" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3y-yUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not representedOrganization.oclIsUndefined() and assignedPerson.oclIsUndefined() and assignedAuthoringDevice.oclIsUndefined()) implies id->exists(id | not id.isNullFlavorUndefined() and id.nullFlavor = vocab::NullFlavor::NA))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3y_ZYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocumentAuthorAssignedAuthor" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3y_ZYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PQJchSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_sNhyIt6jEee0kIKIEebuqA" name="getAllergiesSection" bodyCondition="_sNiZMt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sNiZMt6jEee0kIKIEebuqA" name="body" constrainedElement="_sNhyIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNiZM96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))->asSequence()->any(true).oclAsType(consol::AllergiesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sNiZMN6jEee0kIKIEebuqA" type="_2LMIwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sNiZMd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sN8B0N6jEee0kIKIEebuqA" name="getMedicationsSection" bodyCondition="_sN8B096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sN8B096jEee0kIKIEebuqA" name="body" constrainedElement="_sN8B0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sN8B1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection))->asSequence()->any(true).oclAsType(consol::MedicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sN8B0d6jEee0kIKIEebuqA" type="_2NIpgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sN8B0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sOVqcN6jEee0kIKIEebuqA" name="getProblemSection" bodyCondition="_sOVqc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sOVqc96jEee0kIKIEebuqA" name="body" constrainedElement="_sOVqcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOVqdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection))->asSequence()->any(true).oclAsType(consol::ProblemSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sOVqcd6jEee0kIKIEebuqA" type="_2LSPYBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sOVqct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sOv6It6jEee0kIKIEebuqA" name="getProceduresSection" bodyCondition="_sOv6Jd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sOv6Jd6jEee0kIKIEebuqA" name="body" constrainedElement="_sOv6It6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOv6Jt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection))->asSequence()->any(true).oclAsType(consol::ProceduresSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sOv6I96jEee0kIKIEebuqA" type="_2OAzQRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sOv6JN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sPI7st6jEee0kIKIEebuqA" name="getResultsSection" bodyCondition="_sPJiwt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sPJiwt6jEee0kIKIEebuqA" name="body" constrainedElement="_sPI7st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPJiw96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection))->asSequence()->any(true).oclAsType(consol::ResultsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sPJiwN6jEee0kIKIEebuqA" type="_2Js7AxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sPJiwd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sPikUN6jEee0kIKIEebuqA" name="getAdvanceDirectivesSection" bodyCondition="_sPikU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sPikU96jEee0kIKIEebuqA" name="body" constrainedElement="_sPikUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPikVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sPikUd6jEee0kIKIEebuqA" type="_2KgzUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sPikUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sQAeYt6jEee0kIKIEebuqA" name="getEncountersSection" bodyCondition="_sQBFcN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sQBFcN6jEee0kIKIEebuqA" name="body" constrainedElement="_sQAeYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQBFcd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection))->asSequence()->any(true).oclAsType(consol::EncountersSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sQAeY96jEee0kIKIEebuqA" type="_2LWg0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQAeZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sQaHAt6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_sQaHBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sQaHBd6jEee0kIKIEebuqA" name="body" constrainedElement="_sQaHAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQaHBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sQaHA96jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQaHBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sQzvot6jEee0kIKIEebuqA" name="getFunctionalStatusSection" bodyCondition="_sQzvpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sQzvpd6jEee0kIKIEebuqA" name="body" constrainedElement="_sQzvot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQzvpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sQzvo96jEee0kIKIEebuqA" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQzvpN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sRMxMd6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional" bodyCondition="_sRMxNN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sRMxNN6jEee0kIKIEebuqA" name="body" constrainedElement="_sRMxMd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sRMxNd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sRMxMt6jEee0kIKIEebuqA" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRMxM96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sRoPAN6jEee0kIKIEebuqA" name="getMedicalEquipmentSection" bodyCondition="_sRoPA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sRoPA96jEee0kIKIEebuqA" name="body" constrainedElement="_sRoPAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sRoPBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))->asSequence()->any(true).oclAsType(consol::MedicalEquipmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sRoPAd6jEee0kIKIEebuqA" type="_2KEucBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRoPAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sSCesN6jEee0kIKIEebuqA" name="getPayersSection" bodyCondition="_sSCes96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sSCes96jEee0kIKIEebuqA" name="body" constrainedElement="_sSCesN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sSCetN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection))->asSequence()->any(true).oclAsType(consol::PayersSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sSCesd6jEee0kIKIEebuqA" type="_2MV_UBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sSCest6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sSbgQt6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_sScHUN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sScHUN6jEee0kIKIEebuqA" name="body" constrainedElement="_sSbgQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sScHUd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sSbgQ96jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sSbgRN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sS1I4d6jEee0kIKIEebuqA" name="getSocialHistorySection" bodyCondition="_sS1I5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sS1I5N6jEee0kIKIEebuqA" name="body" constrainedElement="_sS1I4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sS1I5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->any(true).oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sS1I4t6jEee0kIKIEebuqA" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sS1I496jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sTUREN6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional" bodyCondition="_sTURE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sTURE96jEee0kIKIEebuqA" name="body" constrainedElement="_sTUREN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sTURFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sTUREd6jEee0kIKIEebuqA" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sTUREt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2IWQIxSVEeGGzu7fmW9pXw" name="FamilyHistorySection">
      <ownedComment xmi:id="_2JJhYBSVEeGGzu7fmW9pXw" annotatedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <body>This section contains data defining the patient's genetic relatives in terms of possible or relevant health risk factors that have a potential impact on the patient's healthcare risk profile.</body>
      </ownedComment>
      <ownedRule xmi:id="_ozZNkN6jEee0kIKIEebuqA" name="FamilyHistorySectionTemplateId" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ozZNkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.15')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ozcQ4N6jEee0kIKIEebuqA" name="FamilyHistorySectionCode" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ozcQ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10157-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ozhJYN6jEee0kIKIEebuqA" name="FamilyHistorySectionCodeP" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ozhJYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ozla0N6jEee0kIKIEebuqA" name="FamilyHistorySectionTitle" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ozla0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ozoeIN6jEee0kIKIEebuqA" name="FamilyHistorySectionText" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ozoeId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o0hO8N6jEee0kIKIEebuqA" name="FamilyHistorySectionFamilyHistory" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0h2AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::FamilyHistoryOrganizer))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2JJhYhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_o0h2Ad6jEee0kIKIEebuqA" name="getFamilyHistories" bodyCondition="_o0h2BN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o0h2BN6jEee0kIKIEebuqA" name="body" constrainedElement="_o0h2Ad6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0h2Bd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FamilyHistoryOrganizer)).oclAsType(consol::FamilyHistoryOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o0h2At6jEee0kIKIEebuqA" type="_2IbIoBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o0h2A96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2IbIoBSVEeGGzu7fmW9pXw" name="FamilyHistoryOrganizer">
      <ownedComment xmi:id="_nxLqwCEhEeGCQOQgxKvcXw">
        <body>The Family History Oranizer associates a set of observations with a family member. For example, the Family History Organizer can group a set of observations about the patient's father.</body>
      </ownedComment>
      <ownedRule xmi:id="_o0idEN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerTemplateId" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0idEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.45')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o0mHcN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerClassCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0mHcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o0px0N6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerMoodCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0px0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o0xtoN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerStatusCodeP" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0xtod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o0tcMN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerStatusCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o0tcMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o5mjQN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerFamilyHistoryObservation" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5mjQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::FamilyHistoryObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_stiH4N6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_stiH4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->one(subject : cda::Subject | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::Subject))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31CAwN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31CAwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((administrativeGenderCode.oclIsUndefined() or administrativeGenderCode.isNullFlavorUndefined()) implies (not administrativeGenderCode.oclIsUndefined() and administrativeGenderCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = administrativeGenderCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.1' and (value.code = 'F' or value.code = 'M' or value.code = 'UN')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31Cn0N6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31Cn0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((administrativeGenderCode.oclIsUndefined() or administrativeGenderCode.isNullFlavorUndefined()) implies (not administrativeGenderCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31DO4N6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonBirthTime" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31DO4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((birthTime.oclIsUndefined() or birthTime.isNullFlavorUndefined()) implies (not birthTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31D18N6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedInd" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31D18d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((sDTCDeceasedInd.oclIsUndefined() or sDTCDeceasedInd.isNullFlavorUndefined()) implies (not sDTCDeceasedInd.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31EdAN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedTime" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31EdAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((sDTCDeceasedTime.oclIsUndefined() or sDTCDeceasedTime.isNullFlavorUndefined()) implies (not sDTCDeceasedTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31EdAt6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCId" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31EdA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null).subject->excluding(null)->reject((sDTCId->isEmpty() or sDTCId->exists(element | element.isNullFlavorUndefined())) implies (not sDTCId->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31FEEN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectClassCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31FEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null)->reject(isDefined('classCode') and classCode=vocab::x_DocumentSubject::PRS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31FrIN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31FrId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and (value.code = 'ADOPT' or value.code = 'AUNT' or value.code = 'CHILD' or value.code = 'CHLDINLAW' or value.code = 'COUSN' or value.code = 'DOMPART' or value.code = 'FAMMEMB' or value.code = 'CHLDFOST' or value.code = 'GRNDCHILD' or value.code = 'GPARNT' or value.code = 'GRPRN' or value.code = 'GGRPRN' or value.code = 'HSIB' or value.code = 'MAUNT' or value.code = 'MCOUSN' or value.code = 'MGRPRN' or value.code = 'MGGRPRN' or value.code = 'MUNCLE' or value.code = 'NCHILD' or value.code = 'NPRN' or value.code = 'NSIB' or value.code = 'NIENEPH' or value.code = 'PRN' or value.code = 'PRNINLAW' or value.code = 'PAUNT' or value.code = 'PCOUSN' or value.code = 'PGRPRN' or value.code = 'PGGRPRN' or value.code = 'PUNCLE' or value.code = 'SIB' or value.code = 'SIBINLAW' or value.code = 'SIGOTHR' or value.code = 'SPS' or value.code = 'STEP' or value.code = 'STPPRN' or value.code = 'STPSIB' or value.code = 'UNCLE')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31GSMN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectCodeP" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31GSMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31G5QN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31G5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null)->reject(subject->one(subject : cda::SubjectPerson | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::SubjectPerson)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31G5Qt6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerSubjectRelatedSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31G5Q96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->excluding(null)->reject(relatedSubject->one(relatedSubject : cda::RelatedSubject | not relatedSubject.oclIsUndefined() and relatedSubject.oclIsKindOf(cda::RelatedSubject)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2JHFIBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_o5mjQt6jEee0kIKIEebuqA" name="getFamilyHistoryObservations" bodyCondition="_o5mjRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o5mjRd6jEee0kIKIEebuqA" name="body" constrainedElement="_o5mjQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5mjRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FamilyHistoryObservation)).oclAsType(consol::FamilyHistoryObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o5mjQ96jEee0kIKIEebuqA" type="_2IpyIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o5mjRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2IpyIxSVEeGGzu7fmW9pXw" name="FamilyHistoryObservation">
      <ownedComment xmi:id="_nCE7QCHgEeGFLIX-2_sWzA">
        <body>Family History Observations related to a particular family member are contained within a Family History Organizer. The effectiveTime in the Family History Observation is the biologically or clinically relevant time of the observation. The biologically or clinically relevant time is the time at which the observation holds (is effective) for the family member (the subject of the observation).</body>
      </ownedComment>
      <ownedRule xmi:id="_web2ECHiEeGFLIX-2_sWzA" name="FamilyHistoryObservationAgeObservationInversion" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_663_wCHiEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.entryRelationship->forAll(ent : cda::EntryRelationship | ent.observation.oclIsTypeOf(consol::AgeObservation) implies ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o22KMN6jEee0kIKIEebuqA" name="FamilyHistoryObservationTemplateId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o22KMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.46')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o250kN6jEee0kIKIEebuqA" name="FamilyHistoryObservationClassCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o250kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o2-GAN6jEee0kIKIEebuqA" name="FamilyHistoryObservationMoodCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o2-GAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o3BwYN6jEee0kIKIEebuqA" name="FamilyHistoryObservationId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o3BwYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o3hfoN6jEee0kIKIEebuqA" name="FamilyHistoryObservationCodeP" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o3hfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o3GB0N6jEee0kIKIEebuqA" name="FamilyHistoryObservationCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o3GB0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '404684003' or value.code = '409586006' or value.code = '282291009' or value.code = '64572001' or value.code = '248536006' or value.code = '418799008' or value.code = '55607006' or value.code = '373930000'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o4MOAN6jEee0kIKIEebuqA" name="FamilyHistoryObservationStatusCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o4MOAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o4RGgN6jEee0kIKIEebuqA" name="FamilyHistoryObservationStatusCodeP" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o4RGgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o4Uw4N6jEee0kIKIEebuqA" name="FamilyHistoryObservationEffectiveTime" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o4Uw4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o4YbQN6jEee0kIKIEebuqA" name="FamilyHistoryObservationValue" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o4YbQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o5M6oN6jEee0kIKIEebuqA" name="FamilyHistoryObservationAgeObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5M6od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AgeObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p_TnEN6jEee0kIKIEebuqA" name="FamilyHistoryObservationFamilyHistoryDeathObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p_TnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::FamilyHistoryDeathObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2I5CsRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_o5NhsN6jEee0kIKIEebuqA" name="getAgeObservation" bodyCondition="_o5Nhs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o5Nhs96jEee0kIKIEebuqA" name="body" constrainedElement="_o5NhsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5NhtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AgeObservation))->asSequence()->any(true).oclAsType(consol::AgeObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o5Nhsd6jEee0kIKIEebuqA" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o5Nhst6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_p_UOIN6jEee0kIKIEebuqA" name="getFamilyHistoryDeathObservation" bodyCondition="_p_UOI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p_UOI96jEee0kIKIEebuqA" name="body" constrainedElement="_p_UOIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p_UOJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FamilyHistoryDeathObservation))->asSequence()->any(true).oclAsType(consol::FamilyHistoryDeathObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p_UOId6jEee0kIKIEebuqA" type="_2SC-sBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_UOIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2JKvgBSVEeGGzu7fmW9pXw" name="SocialHistorySection">
      <ownedComment xmi:id="_LJ4sMDyWEeGOm9opnDhYAQ">
        <body>This section contains data defining the patient's occupational, personal (e.g. lifestyle), social, and environmental history and health risk factors, as well as administrative data such as marital status, race, ethnicity and religious affiliation. Social history can have significant influence on a patient's physical, psychological and emotional health and wellbeing so should be considered in the development of a complete record.</body>
      </ownedComment>
      <ownedRule xmi:id="_o5nKUN6jEee0kIKIEebuqA" name="SocialHistorySectionTemplateId" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5nKUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.17')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o5qNoN6jEee0kIKIEebuqA" name="SocialHistorySectionCode" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5qNod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29762-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o5vGIN6jEee0kIKIEebuqA" name="SocialHistorySectionCodeP" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5vGId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o5zXkN6jEee0kIKIEebuqA" name="SocialHistorySectionTitle" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o5zXkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o53B8N6jEee0kIKIEebuqA" name="SocialHistorySectionText" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o53B8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6TG0N6jEee0kIKIEebuqA" name="SocialHistorySectionSocialHistoryObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6TG0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SocialHistoryObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEMHEN6jEee0kIKIEebuqA" name="SocialHistorySectionPregnancyObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEMuIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PregnancyObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s39PMN6jEee0kIKIEebuqA" name="SocialHistorySectionSmokingStatusObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s39PMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SmokingStatusObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s4Xe4N6jEee0kIKIEebuqA" name="SocialHistorySectionTobaccoUse" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s4Xe4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::TobaccoUse))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Jrs4hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_o6Tt4N6jEee0kIKIEebuqA" name="getSocialHistoryObservations" bodyCondition="_o6Tt496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o6Tt496jEee0kIKIEebuqA" name="body" constrainedElement="_o6Tt4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6Tt5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SocialHistoryObservation)).oclAsType(consol::SocialHistoryObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o6Tt4d6jEee0kIKIEebuqA" type="_2JOZ4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o6Tt4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qEMuId6jEee0kIKIEebuqA" name="getPregnancyObservations" bodyCondition="_qEMuJN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qEMuJN6jEee0kIKIEebuqA" name="body" constrainedElement="_qEMuId6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEMuJd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PregnancyObservation)).oclAsType(consol::PregnancyObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qEMuIt6jEee0kIKIEebuqA" type="_2N6soBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qEMuI96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s392QN6jEee0kIKIEebuqA" name="getSmokingStatusObservations" bodyCondition="_s392Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s392Q96jEee0kIKIEebuqA" name="body" constrainedElement="_s392QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s392RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SmokingStatusObservation)).oclAsType(consol::SmokingStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s392Qd6jEee0kIKIEebuqA" type="_RYJj0OWQEeGKmvzED_He2w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s392Qt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s4Xe4t6jEee0kIKIEebuqA" name="getTobaccoUses" bodyCondition="_s4YF8d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s4YF8d6jEee0kIKIEebuqA" name="body" constrainedElement="_s4Xe4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s4YF8t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::TobaccoUse)).oclAsType(consol::TobaccoUse)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s4Xe496jEee0kIKIEebuqA" type="_gIH_QOWQEeGKmvzED_He2w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s4YF8N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2JOZ4BSVEeGGzu7fmW9pXw" name="SocialHistoryObservation">
      <ownedComment xmi:id="_fG0UsDyWEeGOm9opnDhYAQ">
        <body>This Social History Observation defines the patient's occupational, personal (e.g., lifestyle), social, and environmental history and health risk factors, as well as administrative data such as marital status, race, ethnicity, and religious affiliation.</body>
      </ownedComment>
      <ownedRule xmi:id="_L9YKgBtsEeGT89b80j3MTg" name="SocialHistoryObservationOriginalText" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_nzLzwBtsEeGT89b80j3MTg">
          <language>OCL</language>
          <body>not self.code.oclIsUndefined() implies not self.code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4G8WIBtsEeGT89b80j3MTg" name="SocialHistoryObservationReference" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_79Cd8BtsEeGT89b80j3MTg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_O-ANcBttEeGT89b80j3MTg" name="SocialHistoryObservationReferenceValue" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_aUIYMBttEeGT89b80j3MTg">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6UU8N6jEee0kIKIEebuqA" name="SocialHistoryObservationTemplateId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6UU8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.38')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6Z0gN6jEee0kIKIEebuqA" name="SocialHistoryObservationClassCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6Z0gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6de4N6jEee0kIKIEebuqA" name="SocialHistoryObservationMoodCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6de4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6hJQN6jEee0kIKIEebuqA" name="SocialHistoryObservationId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6hJQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7A4gN6jEee0kIKIEebuqA" name="SocialHistoryObservationCodeP" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7A4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o6kzoN6jEee0kIKIEebuqA" name="SocialHistoryObservationCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o6kzod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '229819007' or value.code = '256235009' or value.code = '160573003' or value.code = '364393001' or value.code = '364703007' or value.code = '425400000' or value.code = '363908000' or value.code = '228272008' or value.code = '105421008' or value.code = '302160007' or value.code = '423514004' or value.code = '102487004' or value.code = '424483007' or value.code = '442133001' or value.code = '446996006'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7cWUN6jEee0kIKIEebuqA" name="SocialHistoryObservationStatusCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7c9YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7hO0N6jEee0kIKIEebuqA" name="SocialHistoryObservationValue" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7hO0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Jii8hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Js7AxSVEeGGzu7fmW9pXw" name="ResultsSection">
      <ownedComment xmi:id="_XjcvMDr8EeGVevaNZNc6DA">
        <body>The Results section contains the results of observations generated by laboratories, imaging procedures, and other procedures. The scope includes observations such as hematology, chemistry, serology, virology, toxicology, microbiology, plain x-ray, ultrasound, CT, MRI, angiography, echocardiography, nuclear medicine, pathology, and procedure observations. The section often includes notable results such as abnormal values or relevant trends, and could contain all results for the period of time being documented.&#xD;
Laboratory results are typically generated by laboratories providing analytic services in areas such as chemistry, hematology, serology, histology, cytology, anatomic pathology, microbiology, and/or virology. These observations are based on analysis of specimens obtained from the patient and submitted to the laboratory.&#xD;
Imaging results are typically generated by a clinician reviewing the output of an imaging procedure, such as where a cardiologist reports the left ventricular ejection fraction based on the review of a cardiac echocardiogram.&#xD;
Procedure results are typically generated by a clinician to provide more granular information about component observations made during  a procedure, such as where a gastroenterologist reports the size of a polyp observed during a colonoscopy.</body>
      </ownedComment>
      <ownedRule xmi:id="_o7jrEd6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7kSIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.3.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7sN8N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7sN8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7nVcN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCode" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7nVcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o7yUkN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTitle" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o7yUkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o72mAN6jEee0kIKIEebuqA" name="ResultsSectionText" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o72mAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qatJoN6jEee0kIKIEebuqA" name="ResultsSectionResultOrganizer" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qatJod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::ResultOrganizer))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ksO6UBVgEeGQCvUGzi1kDQ" general="_xGqiEBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_IxQaoHavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_qatJot6jEee0kIKIEebuqA" name="getConsolResultOrganizers" bodyCondition="_qatJpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qatJpd6jEee0kIKIEebuqA" name="body" constrainedElement="_qatJot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qatwsN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer)).oclAsType(consol::ResultOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qatJo96jEee0kIKIEebuqA" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qatJpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2JxzgBSVEeGGzu7fmW9pXw" name="ResultOrganizer">
      <ownedComment xmi:id="_MrZPsCvWEeGz1sWhj323cg">
        <body>&lt;p>&#xD;
This clinical statement identifies set of result observations. It contains information applicable to all of the contained result observations. Result type codes categorize a result into one of several commonly accepted values (e.g., &quot;Hematology&quot;, &quot;Chemistry&quot;, &quot;Nuclear Medicine&quot;). These values are often implicit in the Organizer/code (e.g., an Organizer/code of &quot;complete blood count&quot; implies a ResultTypeCode of &quot;Hematology&quot;). This template requires Organizer/code to include a ResultTypeCode either directly or as a translation of a code from some other code system.&#xD;
&lt;/p>&#xD;
&#xD;
&lt;p>&#xD;
An appropriate nullFlavor can be used when the organizer/code or organizer/id is unknown.&#xD;
&lt;/p>&#xD;
&#xD;
&lt;p>&#xD;
If any Results Observation within the organizer has a statusCode of 'active', the Result Organizer must also have as statusCode of 'active.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_2J_O4BSVEeGGzu7fmW9pXw" name="ResultOrganizerCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2J_O4RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' or self.code.codeSystem = '2.16.840.1.113883.6.96' or self.code.codeSystem = '2.16.840.1.113883.6.12'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1dxCgBtuEeG4C_iCHrZZ9w" name="ResultOrganizerClassCodeValue" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="__kVC0BtuEeG4C_iCHrZZ9w">
          <language>OCL</language>
          <body>self.isClassCodeDefined() and (self.classCode = vocab::x_ActClassDocumentEntryOrganizer::CLUSTER or self.classCode = vocab::x_ActClassDocumentEntryOrganizer::BATTERY)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o75CQN6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o75pUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o796wN6jEee0kIKIEebuqA" name="ResultOrganizerClassCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o796wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o8A-EN6jEee0kIKIEebuqA" name="ResultOrganizerMoodCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o8A-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o8EocN6jEee0kIKIEebuqA" name="ResultOrganizerId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o8Eocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o8jwoN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCodeP" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o8jwod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o8HrwN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o8Hrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'suspended')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9AckN6jEee0kIKIEebuqA" name="ResultOrganizerCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9Ackd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9dIgN6jEee0kIKIEebuqA" name="ResultOrganizerResultObservation" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9dIgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::ResultObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2KCSNBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_o9dvkN6jEee0kIKIEebuqA" name="getResultObservations" bodyCondition="_o9dvk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o9dvk96jEee0kIKIEebuqA" name="body" constrainedElement="_o9dvkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9dvlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ResultObservation)).oclAsType(consol::ResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o9dvkd6jEee0kIKIEebuqA" type="_2J1d4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o9dvkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2J1d4BSVEeGGzu7fmW9pXw" name="ResultObservation">
      <ownedComment xmi:id="_JIcp4CXiEeGmGonM_wRfcQ">
        <body>This clinical statement represents details of a lab, radiology, or other study performed on a patient.&#xD;
&#xD;
&lt;p>&#xD;
The result observation includes a statusCode to allow recording the status of an observation. If a Results Observation is not completed, the Result Organizer must include corresponding statusCode. &quot;Pending&quot; results (e.g., a test has been run but results have not been reported yet) should be represented as &quot;active&quot; ActStatus.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_tjUmsB7rEeGaOZtrEokzNQ" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1j5x8B7rEeGaOZtrEokzNQ">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_VTuBkOJbEeG3cO7ebC3QuA" name="ResultObservationReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YA29QOJbEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sq16gDsOEeGVevaNZNc6DA" name="ResultObservationTextReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wwPCkDsOEeGVevaNZNc6DA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2J69cBSVEeGGzu7fmW9pXw" name="ResultObservationCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2J69cRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_jXJw0B7vEeGDhvvzMMgVgQ" name="ResultObservationNoObservationRangeCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2eEXUB7vEeGDhvvzMMgVgQ">
          <language>OCL</language>
          <body>self.referenceRange->forAll(range : cda::ReferenceRange | range.observationRange.code.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_OYDHUB-4EeGZsIzHpWxp_Q" name="ResultObservationAuthorMultiplicity" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_UtV1cB-4EeGZsIzHpWxp_Q">
          <language>OCL</language>
          <body>self.author->size()&lt;2</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9dvld6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9eWoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9ngkN6jEee0kIKIEebuqA" name="ResultObservationClassCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9ngkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9rK8N6jEee0kIKIEebuqA" name="ResultObservationMoodCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9rK8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9u1UN6jEee0kIKIEebuqA" name="ResultObservationId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9u1Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9x4oN6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9x4od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o9078N6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o9078d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o95NYN6jEee0kIKIEebuqA" name="ResultObservationStatusCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o95NYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'suspended')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-V5UN6jEee0kIKIEebuqA" name="ResultObservationStatusCodeP" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-V5Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-wwEN6jEee0kIKIEebuqA" name="ResultObservationEffectiveTime" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-wwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-zzYN6jEee0kIKIEebuqA" name="ResultObservationValue" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-zzYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-22sN6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-22sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-6hEN6jEee0kIKIEebuqA" name="ResultObservationMethodCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-6hEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o-9kYN6jEee0kIKIEebuqA" name="ResultObservationTargetSiteCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o-9kYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.targetSiteCode->isEmpty())  and self.targetSiteCode->forAll(element | element.oclIsTypeOf(datatypes::CE)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2J-AwRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KEucBSVEeGGzu7fmW9pXw" name="MedicalEquipmentSection">
      <ownedComment xmi:id="_6K0pUDh_EeGSytqLITd2FA">
        <body>The Medical Equipment section defines a patient's implanted and external medical devices and equipment that their health status depends on, as well as any pertinent equipment or device history. This section is also used to itemize any pertinent current or historical durable medical equipment (DME) used to help maintain the patient's health status. All pertinent equipment relevant to the diagnosis, care, and treatment of a patient should be included.</body>
      </ownedComment>
      <ownedRule xmi:id="_o_AAoN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionTemplateId" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_AAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.23')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_ESEN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionCode" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_ESEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46264-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_JxoN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionCodeP" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_Jxod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_OqIN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionTitle" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_OqId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_TioN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionText" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_Tiod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_0gAN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionNonMedicinalSupplyActivity" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_0gAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2KJm8hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_o_0gAt6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivities" bodyCondition="_o_0gBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_o_0gBd6jEee0kIKIEebuqA" name="body" constrainedElement="_o_0gAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_0gBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_o_0gA96jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o_0gBN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KKOBhSVEeGGzu7fmW9pXw" name="FunctionalStatusSection">
      <ownedComment xmi:id="_2KTX8xSVEeGGzu7fmW9pXw" annotatedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <body>The Functional Status section describes the patient's physical state, status of functioning, and environmental status at the time the document was created. &#xD;
A patient's physical state may include information regarding the patient's physical findings as they relate to problems, including but not limited to:&#xD;
Pressure Ulcers&#xD;
Amputations&#xD;
Heart murmur&#xD;
Ostomies&#xD;
A patient's functional status may include information regarding the patient relative to their general functional and cognitive ability, including:&#xD;
Ambulatory ability&#xD;
Mental status or competency&#xD;
Activities of Daily Living (ADLs), including bathing, dressing, feeding, grooming&#xD;
Home or living situation having an effect on the health status of the patient&#xD;
Ability to care for self&#xD;
Social activity, including issues with social cognition, participation with friends and acquaintances other than family members&#xD;
Occupation activity, including activities partly or directly related to working, housework or volunteering, family and home responsibilities or activities related to home and family&#xD;
Communication ability, including issues with speech, writing or cognition required for communication&#xD;
Perception, including sight, hearing, taste, skin sensation, kinesthetic sense, proprioception, or balance&#xD;
A patient's environmental status may include information regarding the patient's current exposures from their daily environment, including but not limited to:&#xD;
Airborne hazards such as second-hand smoke, volatile organic compounds, dust, or other allergens&#xD;
Radiation&#xD;
Safety hazards in home, such as throw rugs, poor lighting, lack of railings/grab bars, etc.&#xD;
Safety hazards at work, such as communicable diseases, excessive heat, excessive noise, etc.&#xD;
The patient's functional status may be expressed as a problem or as a result observation. A functional or cognitive status problem observation describes a patient's problem, symptoms or condition. A functional or cognitive status result observation may include observations resulting from an assessment scale, evaluation or question and answer assessment.&#xD;
Any deviation from normal function displayed by the patient and recorded in the record should be included. Of particular interest are those limitations that would interfere with self-care or the medical therapeutic process in any way. In addition, a note of normal function, an improvement, or a change in functioning status may be included.</body>
      </ownedComment>
      <ownedRule xmi:id="_o_1HEN6jEee0kIKIEebuqA" name="FunctionalStatusSectionTemplateId" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_1HEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.14')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_4KYN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCode" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_4KYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47420-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_o_9C4N6jEee0kIKIEebuqA" name="FunctionalStatusSectionTitle" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_o_9C4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pAAtQN6jEee0kIKIEebuqA" name="FunctionalStatusSectionText" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pAAtQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tbdk4N6jEee0kIKIEebuqA" name="FunctionalStatusSectionFunctionalStatusResultOrganizer" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tbdk4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::FunctionalStatusResultOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tb5CsN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCognitiveStatusResultOrganizer" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tb5Csd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::CognitiveStatusResultOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tcTSYN6jEee0kIKIEebuqA" name="FunctionalStatusSectionFunctionalStatusResultObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tcTSYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::FunctionalStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tcxzgN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCognitiveStatusResultObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tcxzgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CognitiveStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tdMDMN6jEee0kIKIEebuqA" name="FunctionalStatusSectionFunctionalStatusProblemObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tdMDMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::FunctionalStatusProblemObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tdmS4N6jEee0kIKIEebuqA" name="FunctionalStatusSectionCognitiveStatusProblemObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tdmS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CognitiveStatusProblemObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_teAikN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCaregiverCharacteristics" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_teAikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CaregiverCharacteristics))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_teaLMN6jEee0kIKIEebuqA" name="FunctionalStatusSectionAssessmentScaleObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_teayQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AssessmentScaleObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_te1pAN6jEee0kIKIEebuqA" name="FunctionalStatusSectionNonMedicinalSupplyActivity" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_te1pAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tfOqkN6jEee0kIKIEebuqA" name="FunctionalStatusSectionPressureUlcerObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tfOqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PressureUlcerObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tfo6QN6jEee0kIKIEebuqA" name="FunctionalStatusSectionNumberOfPressureUlcersObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tfo6Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tgDJ8N6jEee0kIKIEebuqA" name="FunctionalStatusSectionHighestPressureUlcerStage" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tgDJ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::HighestPressureUlcerStage))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2KT_ABSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_tbeL8N6jEee0kIKIEebuqA" name="getFunctionalStatusResultOrganizers" bodyCondition="_tbeL896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tbeL896jEee0kIKIEebuqA" name="body" constrainedElement="_tbeL8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tbeL9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FunctionalStatusResultOrganizer)).oclAsType(consol::FunctionalStatusResultOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tbeL8d6jEee0kIKIEebuqA" type="_zBlUUOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tbeL8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tb5Cst6jEee0kIKIEebuqA" name="getCognitiveStatusResultOrganizers" bodyCondition="_tb5Ctd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tb5Ctd6jEee0kIKIEebuqA" name="body" constrainedElement="_tb5Cst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tb5Ctt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::CognitiveStatusResultOrganizer)).oclAsType(consol::CognitiveStatusResultOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tb5Cs96jEee0kIKIEebuqA" type="_jfoCUOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tb5CtN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tcT5cN6jEee0kIKIEebuqA" name="getFunctionalStatusResultObservations" bodyCondition="_tcT5c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tcT5c96jEee0kIKIEebuqA" name="body" constrainedElement="_tcT5cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tcT5dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusResultObservation)).oclAsType(consol::FunctionalStatusResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tcT5cd6jEee0kIKIEebuqA" type="_viRU0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tcT5ct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tcxzgt6jEee0kIKIEebuqA" name="getCognitiveStatusResultObservations" bodyCondition="_tcxzhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tcxzhd6jEee0kIKIEebuqA" name="body" constrainedElement="_tcxzgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tcxzht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CognitiveStatusResultObservation)).oclAsType(consol::CognitiveStatusResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tcxzg96jEee0kIKIEebuqA" type="_gkBM0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tcxzhN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tdMDMt6jEee0kIKIEebuqA" name="getFunctionalStatusProblemObservations" bodyCondition="_tdMqQt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tdMqQt6jEee0kIKIEebuqA" name="body" constrainedElement="_tdMDMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tdMqQ96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusProblemObservation)).oclAsType(consol::FunctionalStatusProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tdMqQN6jEee0kIKIEebuqA" type="_rVl5AOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tdMqQd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tdmS4t6jEee0kIKIEebuqA" name="getCognitiveStatusProblemObservations" bodyCondition="_tdmS5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tdmS5d6jEee0kIKIEebuqA" name="body" constrainedElement="_tdmS4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tdmS5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CognitiveStatusProblemObservation)).oclAsType(consol::CognitiveStatusProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tdmS496jEee0kIKIEebuqA" type="_dXKPQOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tdmS5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_teBJoN6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_teBJo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_teBJo96jEee0kIKIEebuqA" name="body" constrainedElement="_teBJoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_teBJpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_teBJod6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_teBJot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_teayQd6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_teayRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_teayRN6jEee0kIKIEebuqA" name="body" constrainedElement="_teayQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_teayRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_teayQt6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_teayQ96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_te1pAt6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivities" bodyCondition="_te1pBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_te1pBd6jEee0kIKIEebuqA" name="body" constrainedElement="_te1pAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_te2QEN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_te1pA96jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_te1pBN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tfPRoN6jEee0kIKIEebuqA" name="getPressureUlcerObservations" bodyCondition="_tfPRo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tfPRo96jEee0kIKIEebuqA" name="body" constrainedElement="_tfPRoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tfPRpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PressureUlcerObservation)).oclAsType(consol::PressureUlcerObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tfPRod6jEee0kIKIEebuqA" type="_9rQowOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tfPRot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tfphUN6jEee0kIKIEebuqA" name="getNumberOfPressureUlcersObservations" bodyCondition="_tfphU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tfphU96jEee0kIKIEebuqA" name="body" constrainedElement="_tfphUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tfphVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation)).oclAsType(consol::NumberOfPressureUlcersObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tfphUd6jEee0kIKIEebuqA" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tfphUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tgDxAN6jEee0kIKIEebuqA" name="getHighestPressureUlcerStages" bodyCondition="_tgDxA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tgDxA96jEee0kIKIEebuqA" name="body" constrainedElement="_tgDxAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tgDxBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HighestPressureUlcerStage)).oclAsType(consol::HighestPressureUlcerStage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tgDxAd6jEee0kIKIEebuqA" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tgDxAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KgzUBSVEeGGzu7fmW9pXw" name="AdvanceDirectivesSection">
      <ownedRule xmi:id="_pAEXod6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pAE-sN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.21.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pAM6gN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionCodeP" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pANhkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pAICAN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionCode" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pAICAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pATBIN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionTitle" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pATBId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pAX5oN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionText" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pAX5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBCoAN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionAdvanceDirectiveObservation" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBCoAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AdvanceDirectiveObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_8UhPsBVfEeGQCvUGzi1kDQ" general="_1RZdIBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_94HnEEFqEeGleIzZ12qTpQ">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_pBDPEN6jEee0kIKIEebuqA" name="getConsolAdvanceDirectiveObservations" bodyCondition="_pBDPE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pBDPE96jEee0kIKIEebuqA" name="body" constrainedElement="_pBDPEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBDPFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation)).oclAsType(consol::AdvanceDirectiveObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pBDPEd6jEee0kIKIEebuqA" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pBDPEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KlEwBSVEeGGzu7fmW9pXw" name="AdvanceDirectiveObservation">
      <ownedComment xmi:id="_N7l9YCwEEeGs-ue-ukBpXg">
        <body>Advance Directives Observatations assert findings (e.g., &quot;resuscitation status is Full Code&quot;) rather than orders, and should not be considered legal documents. A legal document can be referenced using the reference/externalReference construct.</body>
      </ownedComment>
      <ownedRule xmi:id="_2KlExRSVEeGGzu7fmW9pXw" name="AdvanceDirectiveObservationHasStartingTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2KlExhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.effectiveTime.low.hasContent()  or self.effectiveTime.low.isNullFlavorDefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2KlEyhSVEeGGzu7fmW9pXw" name="AdvanceDirectiveObservationHasEndingTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2KlEyxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.effectiveTime.high.hasContent() or self.effectiveTime.high.isNullFlavorDefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBDPFd6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationTemplateId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBD2IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.48')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBIuoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBIuod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBNAEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationMoodCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBNnIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBSfoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBSfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pB4VgN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCodeP" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pB4Vgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pBWxEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pBXYIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '281789004' or value.code = '89666000' or value.code = '225204009' or value.code = '52765003' or value.code = '78823007' or value.code = '304251008' or value.code = '61420007' or value.code = '71388002'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pCbvIN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationStatusCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pCcWMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pCjD4N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationEffectiveTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pCjD4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qgC8oN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifier" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qgC8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::VRF)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qhPPcN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodian" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qhPPcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::CST)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qho4EN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReference" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qho4Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31n2oN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifierTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31n2od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31odsN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifierTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31odsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_31pEwN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifierParticipantRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_31pEwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_320wgN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_320wgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_321XkN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleAddr" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_321Xkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_321Xkt6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_321Xk96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject(isDefined('classCode') and classCode=vocab::RoleClassRoot::AGNT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_321-oN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleTelecom" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_321-od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_322lsN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_322lsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_323MwN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_323Mwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST)->select(typeCode=vocab::ParticipationType::CST)->reject(typeCode=vocab::ParticipationType::CST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_323z0N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_323z0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST)->select(typeCode=vocab::ParticipationType::CST)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33pP4N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentTextMediaType" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33pP4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject(not text.mediaType.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33p28N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentTextReference" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33p28d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject(not text.oclIsUndefined() implies not text.reference.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33p28t6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33p2896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33qeAN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentText" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33qeAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject((text.oclIsUndefined() or text.isNullFlavorUndefined()) implies (not text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33rFEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33rFEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::x_ActRelationshipExternalReference) and &#xD;
let value : vocab::x_ActRelationshipExternalReference = typeCode.oclAsType(vocab::x_ActRelationshipExternalReference) in &#xD;
value = vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_33rsIN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocument" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_33rsId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(cda::ExternalDocument)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2LGpMRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2LMIwBSVEeGGzu7fmW9pXw" name="AllergiesSection">
      <ownedComment xmi:id="_2LRBQRSVEeGGzu7fmW9pXw" annotatedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <body>This section lists and describes any medication allergies, adverse reactions, idiosyncratic reactions, anaphylaxis/anaphylactoid reactions to food items, and metabolic variations or adverse reactions/allergies to other substances (such as latex, iodine, tape adhesives) used to assure the safety of health care delivery. At a minimum, it should list currently active and any relevant historical allergies and adverse reactions.</body>
      </ownedComment>
      <ownedRule xmi:id="_pDoB8N6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pDopAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pD3SgN6jEee0kIKIEebuqA" name="AllergiesSectionCodeP" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pD3Sgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pDuvoN6jEee0kIKIEebuqA" name="AllergiesSectionCode" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pDuvod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pD_OUN6jEee0kIKIEebuqA" name="AllergiesSectionTitle" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pD_OUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pEFU8N6jEee0kIKIEebuqA" name="AllergiesSectionText" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEFU8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pEm5YN6jEee0kIKIEebuqA" name="AllergiesSectionAllergyProblemAct" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEm5Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AllergyProblemAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_EEbhsBVgEeGQCvUGzi1kDQ" general="_bGzYgBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_l-8SQHauEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_pEngcN6jEee0kIKIEebuqA" name="getConsolAllergyProblemActs" bodyCondition="_pEngc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pEngc96jEee0kIKIEebuqA" name="body" constrainedElement="_pEngcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEngdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AllergyProblemAct)).oclAsType(consol::AllergyProblemAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pEngcd6jEee0kIKIEebuqA" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pEngct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2LSPYBSVEeGGzu7fmW9pXw" name="ProblemSection">
      <ownedComment xmi:id="_hb8PkCAnEeGetMjKLkqR8g">
        <body>This section lists and describes all relevant clinical problems at the time the document is generated. At a minimum, all pertinent current and historical problems should be listed.</body>
      </ownedComment>
      <ownedRule xmi:id="_pEoHgd6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEoukN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.5.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pEx4gN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEx4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pErx4N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCode" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pEsY8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pE3YEN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalText" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pE3YEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pE8QkN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTitle" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pE8Qkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p8YO4N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8YO4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProblemConcernAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_blmF8BVgEeGQCvUGzi1kDQ" general="_naxrkBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_CN40QHavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_p8Y18N6jEee0kIKIEebuqA" name="getConsolProblemConcerns" bodyCondition="_p8Y1896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p8Y1896jEee0kIKIEebuqA" name="body" constrainedElement="_p8Y18N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8Y19N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct)).oclAsType(consol::ProblemConcernAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p8Y18d6jEee0kIKIEebuqA" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p8Y18t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2LWg0BSVEeGGzu7fmW9pXw" name="EncountersSection">
      <ownedComment xmi:id="_2L7IkBSVEeGGzu7fmW9pXw" annotatedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <body>This section lists and describes any healthcare encounters pertinent to the patient's current health status or historical health history. An Encounter is an interaction, regardless of the setting, between a patient and a practitioner who is vested with primary responsibility for diagnosing, evaluating, or treating the patient's condition. It may include visits, appointments, as well as non face-to-face interactions. It is also a contact between a patient and a practitioner who has primary responsibility for assessing and treating the patient at a given contact, exercising independent judgment. This section may contain all encounters for the time period being summarized, but should include notable encounters.</body>
      </ownedComment>
      <ownedRule xmi:id="_pE_68N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pE_68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.22.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFId0N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFId0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFC-QN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCode" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFC-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFNWUN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalText" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFNWUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFSO0N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTitle" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFSO0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qs33sN6jEee0kIKIEebuqA" name="EncountersSectionEncounterActivities" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qs33sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::EncounterActivities))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_KVkvoBVgEeGQCvUGzi1kDQ" general="_4yj2wBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_pkUdgHauEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_qs33st6jEee0kIKIEebuqA" name="getConsolEncounterActivitiess" bodyCondition="_qs4ewd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qs4ewd6jEee0kIKIEebuqA" name="body" constrainedElement="_qs33st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qs4ewt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivities)).oclAsType(consol::EncounterActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qs33s96jEee0kIKIEebuqA" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qs4ewN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2LayQBSVEeGGzu7fmW9pXw" name="EncounterActivities">
      <ownedComment xmi:id="_PZy1MCwOEeGKLc4ckmfDag">
        <body>This clinical statement describes the interactions between the patient and clinicians. Interactions include in-person encounters, telephone conversations, and email exchanges.</body>
      </ownedComment>
      <ownedRule xmi:id="_a_2b4CwaEeGKLc4ckmfDag" name="EncounterActivitiesCodeOriginalText" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_dbyS0CwaEeGKLc4ckmfDag">
          <language>OCL</language>
          <body>not code.oclIsUndefined() implies not code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fTZ7wCwaEeGKLc4ckmfDag" name="EncounterActivitiesCodeOriginalTextReference" constrainedElement="_a_2b4CwaEeGKLc4ckmfDag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_h1T30CwaEeGKLc4ckmfDag">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_7xneQOM0EeGfv4R-kzpM0g" name="EncounterActivitiesReferenceValue" constrainedElement="_ktatYCwaEeGKLc4ckmfDag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_9wOgAOM0EeGfv4R-kzpM0g">
          <language>OCL</language>
          <body>not self.code.originalText.reference.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ktatYCwaEeGKLc4ckmfDag" name="EncounterActivitiesCodeOriginalTextReferenceValue" constrainedElement="_fTZ7wCwaEeGKLc4ckmfDag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_m7qtoCwaEeGKLc4ckmfDag">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_EywuoCwaEeGKLc4ckmfDag" name="EncounterActivitiesServiceDeliveryTypeCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_j0GLULflEea9we5PpRWq8g">
          <body>&lt;!--Due to this rule being prefaced by SHOULD such that it in the IG, severity is represented as SHOULD even though the message states SHALL--></body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_JwPVQCwaEeGKLc4ckmfDag">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_soEP8EglEeSfpbeq3Ftc1g" name="EncounterActivitiesSdtcDDCFromNUBCOrDD">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_soEP8UglEeSfpbeq3Ftc1g">
          <language>OCL</language>
          <body>(self.sDTCDischargeDispositionCode->isEmpty() or self.sDTCDischargeDispositionCode->exists(element | element.isNullFlavorUndefined())) implies (self.sDTCDischargeDispositionCode->forAll( element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and let value : datatypes::CE = element.oclAsType(datatypes::CE) in (value.codeSystem = '2.16.840.1.113883.6.301.5' or value.codeSystem = '2.16.840.1.113883.12.112') and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFVSIN6jEee0kIKIEebuqA" name="EncounterActivitiesTemplateId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFVSId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.49')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFfqMN6jEee0kIKIEebuqA" name="EncounterActivitiesClassCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFfqMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFjUkN6jEee0kIKIEebuqA" name="EncounterActivitiesMoodCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFjUkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentEncounterMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFm-8N6jEee0kIKIEebuqA" name="EncounterActivitiesId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFm-8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pFqpUN6jEee0kIKIEebuqA" name="EncounterActivitiesCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pFqpUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.12' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGHVQN6jEee0kIKIEebuqA" name="EncounterActivitiesEffectiveTime" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGHVQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGKYkN6jEee0kIKIEebuqA" name="EncounterActivitiesSDTCDischargeDispositionCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGKYkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.sDTCDischargeDispositionCode->isEmpty() or self.sDTCDischargeDispositionCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.sDTCDischargeDispositionCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGo5sN6jEee0kIKIEebuqA" name="EncounterActivitiesServiceDeliveryLocation" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGo5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p-6lgN6jEee0kIKIEebuqA" name="EncounterActivitiesIndication" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-6lgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sr4iEN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformer" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr4iEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_szgNAN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterDiagnosis" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_szgNAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EncounterDiagnosis))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_34gLgN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_34gLgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_34gykN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_34gykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2LttMBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_pGpgwN6jEee0kIKIEebuqA" name="getServiceDeliveryLocations" bodyCondition="_pGpgw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pGpgw96jEee0kIKIEebuqA" name="body" constrainedElement="_pGpgwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGpgxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pGpgwd6jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pGpgwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_p-7MkN6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_p-7Mk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p-7Mk96jEee0kIKIEebuqA" name="body" constrainedElement="_p-7MkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-7MlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p-7Mkd6jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p-7Mkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_szgNAt6jEee0kIKIEebuqA" name="getEncounterDiagnosiss" bodyCondition="_szg0Ed6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_szg0Ed6jEee0kIKIEebuqA" name="body" constrainedElement="_szgNAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_szg0Et6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EncounterDiagnosis)).oclAsType(consol::EncounterDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_szgNA96jEee0kIKIEebuqA" type="_Ker6MOM2EeGfv4R-kzpM0g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szg0EN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2LiHABSVEeGGzu7fmW9pXw" name="ServiceDeliveryLocation">
      <ownedRule xmi:id="_U1PlUB-ZEeGtfPlBCjHWkw" name="ServiceDeliveryLocationHasPlayingEntity" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_aYMQgB-ZEeGtfPlBCjHWkw">
          <language>OCL</language>
          <body>self.playingEntity->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_W3fw8B-ZEeGtfPlBCjHWkw" name="ServiceDeliveryLocationHasPlayingEntityClassCode" constrainedElement="_U1PlUB-ZEeGtfPlBCjHWkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_digQYB-ZEeGtfPlBCjHWkw">
          <language>OCL</language>
          <body>self.playingEntity->size()>0 implies self.playingEntity.classCode=vocab::EntityClassRoot::PLC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_X2UwsB-ZEeGtfPlBCjHWkw" name="ServiceDeliveryLocationHasPlayingEntityName" constrainedElement="_W3fw8B-ZEeGtfPlBCjHWkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gzccsB-ZEeGtfPlBCjHWkw">
          <language>OCL</language>
          <body>self.playingEntity->size()>0 implies self.playingEntity.name->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGpgxd6jEee0kIKIEebuqA" name="ServiceDeliveryLocationTemplateId" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGpgxt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.32')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGvnYN6jEee0kIKIEebuqA" name="ServiceDeliveryLocationClassCode" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGvnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::SDLOC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pGzRwN6jEee0kIKIEebuqA" name="ServiceDeliveryLocationCode" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pGzRwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.259' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHP9sN6jEee0kIKIEebuqA" name="ServiceDeliveryLocationAddr" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHQkwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.addr->isEmpty() or self.addr->exists(element | element.isNullFlavorUndefined())) implies (not self.addr->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHTBAN6jEee0kIKIEebuqA" name="ServiceDeliveryLocationTelecom" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHTBAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_c7QfoB-YEeGtfPlBCjHWkw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2L7voBSVEeGGzu7fmW9pXw" name="ImmunizationsSection">
      <ownedRule xmi:id="_pHVdQN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHVdQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.2.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHenMN6jEee0kIKIEebuqA" name="ImmunizationsSectionCodeP" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHenMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHYgkN6jEee0kIKIEebuqA" name="ImmunizationsSectionCode" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHZHoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHkGwN6jEee0kIKIEebuqA" name="ImmunizationsSectionTitle" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHkGwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pHoYMN6jEee0kIKIEebuqA" name="ImmunizationsSectionText" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pHoYMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pIEdEN6jEee0kIKIEebuqA" name="ImmunizationsSectionImmunization" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIEdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_QPw2IBVgEeGQCvUGzi1kDQ" general="_EuPloBVeEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_1T-tIHavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_pIFEIN6jEee0kIKIEebuqA" name="getImmunizations" bodyCondition="_pIFEI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pIFEI96jEee0kIKIEebuqA" name="body" constrainedElement="_pIFEIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIFEJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity)).oclAsType(consol::ImmunizationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pIFEId6jEee0kIKIEebuqA" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pIFEIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2MAoIBSVEeGGzu7fmW9pXw" name="ImmunizationActivity">
      <ownedComment xmi:id="_2MQfwhSVEeGGzu7fmW9pXw" annotatedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <body>&lt;p>An Immunization Activity describes immunization substance administrations that have actually occurred or are intended to occur. Immunization Activities in &quot;INT&quot; mood are reflections of immunizations a clinician intends a patient to receive. Immunization Activities in &quot;EVN&quot; mood reflect immunizations actually received.&lt;/p>

&lt;p>An Immunization Activity is very similar to a Medication Activity with some key differentiators. The drug code system is constrained to CVX codes. Administration timing is less complex. Patient refusal reasons should be captured. All vaccines administered should be fully documented in the patient's permanent medical record. Healthcare providers who administer vaccines covered by the National Childhood Vaccine Injury Act are required to ensure that the permanent medical record of the recipient indicates: &lt;/p>

&lt;ol>
&lt;li>Date of administration &lt;/li>
&lt;li>Vaccine manufacturer &lt;/li>
&lt;li>Vaccine lot number &lt;/li>
&lt;li>Name and title of the person who administered the vaccine and the address of the clinic or facility where the permanent record will reside &lt;/li>
&lt;li>Vaccine information statement (VIS) 
&lt;ol>
&lt;li>date printed on the VIS&lt;/li>
&lt;li>date VIS given to patient or parent/guardian.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ol></body>
      </ownedComment>
      <ownedRule xmi:id="_2MP4sxSVEeGGzu7fmW9pXw" name="ImmunizationActivityTextReference">
        <ownedComment xmi:id="_2MP4tBSVEeGGzu7fmW9pXw">
          <body>In a CDA document, the URI given in the value attribute of the 'reference' element points to an element in the narrative content that contains the complete text describing the immunization activity. In an HL7 message, the content of the text element shall contain the complete text describing the immunization activity.</body>
        </ownedComment>
        <ownedComment xmi:id="_2MP4tRSVEeGGzu7fmW9pXw">
          <body>UNIMPLEMENTABLE</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2MP4thSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_I32q0OMsEeGfv4R-kzpM0g" name="ImmunizationActivityReferenceValue" constrainedElement="_4_lrIEX6EeG6e5lG0YsSyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_MZZe8OMsEeGfv4R-kzpM0g">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_lrIEX6EeG6e5lG0YsSyQ" name="ImmunizationActivityTextReferenceValue" constrainedElement="_aXWsMCQ9EeG4DdjGPr5_Vg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_92QfIEX6EeG6e5lG0YsSyQ">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_COIeUEX7EeG6e5lG0YsSyQ" name="ImmunizationActivityDoseQuantityUnit" constrainedElement="_aXWsMCQ9EeG4DdjGPr5_Vg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_FOScoEX7EeG6e5lG0YsSyQ">
          <language>OCL</language>
          <body>not self.doseQuantity.oclIsUndefined() implies not self.doseQuantity.unit.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_aXWsMCQ9EeG4DdjGPr5_Vg" name="ImmunizationActivityInstructionInversion" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_i2pMsCQ9EeG4DdjGPr5_Vg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_bnbB0EX7EeG6e5lG0YsSyQ" name="ImmunizationActivityDrugVehicleTypeCode" constrainedElement="_aXWsMCQ9EeG4DdjGPr5_Vg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_hB9-8EX7EeG6e5lG0YsSyQ">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::DrugVehicle))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::CSM)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pIFEJd6jEee0kIKIEebuqA" name="ImmunizationActivityTemplateId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIFEJt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.52')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pINnAN6jEee0kIKIEebuqA" name="ImmunizationActivityClassCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pINnAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pIRRYN6jEee0kIKIEebuqA" name="ImmunizationActivityMoodCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIRRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pIukYN6jEee0kIKIEebuqA" name="ImmunizationActivityNegationInd" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIukYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pIzc4N6jEee0kIKIEebuqA" name="ImmunizationActivityId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pIzc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pI3uUN6jEee0kIKIEebuqA" name="ImmunizationActivityCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pI3uUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pI7_wN6jEee0kIKIEebuqA" name="ImmunizationActivityText" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pI7_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pI_DEN6jEee0kIKIEebuqA" name="ImmunizationActivityStatusCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pI_qIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pJCtcN6jEee0kIKIEebuqA" name="ImmunizationActivityEffectiveTime" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pJCtcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (self.effectiveTime->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pJFwwN6jEee0kIKIEebuqA" name="ImmunizationActivityRepeatNumber" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pJFwwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pJmHEN6jEee0kIKIEebuqA" name="ImmunizationActivityRouteCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pJmHEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pJJbIN6jEee0kIKIEebuqA" name="ImmunizationActivityRouteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pJJbId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pKCL8N6jEee0kIKIEebuqA" name="ImmunizationActivityApproachSiteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pKCL8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pKdpwN6jEee0kIKIEebuqA" name="ImmunizationActivityApproachSiteCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pKdpwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.approachSiteCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pLIYIN6jEee0kIKIEebuqA" name="ImmunizationActivityDoseQuantity" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pLIYId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pLpVgN6jEee0kIKIEebuqA" name="ImmunizationActivityAdministrationUnitCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pLpVgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pLMpkN6jEee0kIKIEebuqA" name="ImmunizationActivityAdministrationUnitCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pLMpkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and (value.code = 'C42887' or value.code = 'C42888' or value.code = 'C42960' or value.code = 'C42971' or value.code = 'C42889' or value.code = 'C42892' or value.code = 'C42890' or value.code = 'C43451' or value.code = 'C42891' or value.code = 'C25158' or value.code = 'C42895' or value.code = 'C42896' or value.code = 'C42917' or value.code = 'C42902' or value.code = 'C42904' or value.code = 'C42916' or value.code = 'C42928' or value.code = 'C42936' or value.code = 'C42954' or value.code = 'C45414' or value.code = 'C42678' or value.code = 'C60884' or value.code = 'C60891' or value.code = 'C42900' or value.code = 'C42919' or value.code = 'C28944' or value.code = 'C60897' or value.code = 'C42901' or value.code = 'C45415' or value.code = 'C47890' or value.code = 'C43525' or value.code = 'C42679' or value.code = 'C42763' or value.code = 'C17423' or value.code = 'C42912' or value.code = 'C42913' or value.code = 'C42915' or value.code = 'C42929' or value.code = 'C60926' or value.code = 'C42932' or value.code = 'C42920' or value.code = 'C42984' or value.code = 'C60927' or value.code = 'C60928' or value.code = 'C60929' or value.code = 'C42933' or value.code = 'C42934' or value.code = 'C42906' or value.code = 'C60930' or value.code = 'C48193' or value.code = 'C42937' or value.code = 'C45416' or value.code = 'C42938' or value.code = 'C42903' or value.code = 'C42909' or value.code = 'C42939' or value.code = 'C42940' or value.code = 'C42921' or value.code = 'C42941' or value.code = 'C42894' or value.code = 'C42978' or value.code = 'C42942' or value.code = 'C42944' or value.code = 'C60931' or value.code = 'C42946' or value.code = 'C42914' or value.code = 'C42950' or value.code = 'C42974' or value.code = 'C42976' or value.code = 'C42977' or value.code = 'C42959' or value.code = 'C42957' or value.code = 'C42958' or value.code = 'C42956' or value.code = 'C42945' or value.code = 'C42899' or value.code = 'C42995' or value.code = 'C42926' or value.code = 'C42951' or value.code = 'C42988' or value.code = 'C60933' or value.code = 'C42922' or value.code = 'C47915' or value.code = 'C42947' or value.code = 'C42948' or value.code = 'C47916' or value.code = 'C45413' or value.code = 'C42949' or value.code = 'C42952' or value.code = 'C42953' or value.code = 'C60934' or value.code = 'C29167' or value.code = 'C60957' or value.code = 'C60958' or value.code = 'C42955' or value.code = 'C29269' or value.code = 'C42965' or value.code = 'C42966' or value.code = 'C60984' or value.code = 'C47887' or value.code = 'C42967' or value.code = 'C42907' or value.code = 'C60985' or value.code = 'C42968' or value.code = 'C42923' or value.code = 'C42911' or value.code = 'C42969' or value.code = 'C42943' or value.code = 'C42918' or value.code = 'C25394' or value.code = 'C42970' or value.code = 'C47913' or value.code = 'C42972' or value.code = 'C42908' or value.code = 'C42973' or value.code = 'C42975' or value.code = 'C42961' or value.code = 'C60988' or value.code = 'C42979' or value.code = 'C42980' or value.code = 'C42981' or value.code = 'C42982' or value.code = 'C42983' or value.code = 'C42986' or value.code = 'C42898' or value.code = 'C42987' or value.code = 'C60994' or value.code = 'C42935' or value.code = 'C60992' or value.code = 'C47912' or value.code = 'C42989' or value.code = 'C42962' or value.code = 'C42990' or value.code = 'C42991' or value.code = 'C47914' or value.code = 'C42993' or value.code = 'C42924' or value.code = 'C42994' or value.code = 'C42925' or value.code = 'C60995' or value.code = 'C47889' or value.code = 'C47898' or value.code = 'C42996' or value.code = 'C42998' or value.code = 'C42893' or value.code = 'C42897' or value.code = 'C60997' or value.code = 'C42905' or value.code = 'C42997' or value.code = 'C42910' or value.code = 'C42927' or value.code = 'C42931' or value.code = 'C42930' or value.code = 'C61004' or value.code = 'C61005' or value.code = 'C42964' or value.code = 'C42963' or value.code = 'C42999' or value.code = 'C61006' or value.code = 'C42985' or value.code = 'C42992' or value.code = 'C47892' or value.code = 'C47897' or value.code = 'C43000' or value.code = 'C43001' or value.code = 'C43002' or value.code = 'C43003'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p_tPsN6jEee0kIKIEebuqA" name="ImmunizationActivityDrugVehicle" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p_tPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::DrugVehicle))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qAG4UN6jEee0kIKIEebuqA" name="ImmunizationActivityIndication" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qAG4Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qAf54N6jEee0kIKIEebuqA" name="ImmunizationActivityInstructions" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qAf54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qBHk8N6jEee0kIKIEebuqA" name="ImmunizationActivityMedicationDispense" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBHk8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationDispense) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qBh0oN6jEee0kIKIEebuqA" name="ImmunizationActivityReactionObservation" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBh0od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCrrMN6jEee0kIKIEebuqA" name="ImmunizationActivityImmunizationRefusalReason" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCsSQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ImmunizationRefusalReason) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qDx3YN6jEee0kIKIEebuqA" name="ImmunizationActivityConsumable" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qDx3Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qN9HEN6jEee0kIKIEebuqA" name="ImmunizationActivityPerformer" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qN9HEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qRKzIN6jEee0kIKIEebuqA" name="ImmunizationActivityMedicationSupplyOrder" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qRKzId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1SvDIN6jEee0kIKIEebuqA" name="ImmunizationActivityPrecondition" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1SvDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_348QYN6jEee0kIKIEebuqA" name="ImmunizationActivityConsumableImmunizationMedicationInformation" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_348QYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::ImmunizationMedicationInformation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_35WgEN6jEee0kIKIEebuqA" name="ImmunizationActivityPreconditionTypeCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_35WgEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_35XHIN6jEee0kIKIEebuqA" name="ImmunizationActivityPreconditionPreconditionForSubstanceAdministration" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_35XHId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2MQfwxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_p_t2wN6jEee0kIKIEebuqA" name="getDrugVehicle" bodyCondition="_p_t2w96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p_t2w96jEee0kIKIEebuqA" name="body" constrainedElement="_p_t2wN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p_t2xN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::DrugVehicle))->asSequence()->any(true).oclAsType(consol::DrugVehicle)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p_t2wd6jEee0kIKIEebuqA" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_t2wt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qAHfYN6jEee0kIKIEebuqA" name="getIndication" bodyCondition="_qAHfY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qAHfY96jEee0kIKIEebuqA" name="body" constrainedElement="_qAHfYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qAHfZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication))->asSequence()->any(true).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qAHfYd6jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qAHfYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qAgg8N6jEee0kIKIEebuqA" name="getInstructions" bodyCondition="_qAgg896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qAgg896jEee0kIKIEebuqA" name="body" constrainedElement="_qAgg8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qAgg9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qAgg8d6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qAgg8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qBHk8t6jEee0kIKIEebuqA" name="getMedicationDispense" bodyCondition="_qBIMAN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qBIMAN6jEee0kIKIEebuqA" name="body" constrainedElement="_qBHk8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBIMAd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense))->asSequence()->any(true).oclAsType(consol::MedicationDispense)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qBHk896jEee0kIKIEebuqA" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qBHk9N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qBh0ot6jEee0kIKIEebuqA" name="getReactionObservation" bodyCondition="_qBh0pd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qBh0pd6jEee0kIKIEebuqA" name="body" constrainedElement="_qBh0ot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBh0pt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation))->asSequence()->any(true).oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qBh0o96jEee0kIKIEebuqA" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qBh0pN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qCsSQd6jEee0kIKIEebuqA" name="getImmunizationRefusalReason" bodyCondition="_qCsSRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qCsSRN6jEee0kIKIEebuqA" name="body" constrainedElement="_qCsSQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCsSRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ImmunizationRefusalReason))->asSequence()->any(true).oclAsType(consol::ImmunizationRefusalReason)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qCsSQt6jEee0kIKIEebuqA" type="__qYdcBVNEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qCsSQ96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qRKzIt6jEee0kIKIEebuqA" name="getMedicationSupplyOrder" bodyCondition="_qRKzJd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qRKzJd6jEee0kIKIEebuqA" name="body" constrainedElement="_qRKzIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qRLaMN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qRKzI96jEee0kIKIEebuqA" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qRKzJN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2MV_UBSVEeGGzu7fmW9pXw" name="PayersSection">
      <ownedComment xmi:id="_2NICcBSVEeGGzu7fmW9pXw" annotatedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
The Payers section contains data on the patient s payers, whether a  third party  insurance, self-pay, &#xD;
other payer or guarantor, or some combination of payers, and is used to define which entity is the&#xD;
 responsible fiduciary for the financial aspects of a patient s care.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Each unique instance of a payer and all the pertinent data needed to contact, bill to, and collect from&#xD;
 that payer should be included. Authorization information that can be used to define pertinent referral, &#xD;
authorization tracking number, procedure, therapy, intervention, device, or similar authorizations for &#xD;
the patient or provider, or both should be included. At a minimum, the patient s pertinent current &#xD;
payment sources should be listed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The sources of payment are represented as a Coverage Activity, which identifies all of the insurance &#xD;
policies or government or other programs that cover some or all of the patient s healthcare expenses. &#xD;
The policies or programs are sequenced by preference. The Coverage Activity has a sequence number &#xD;
that represents the preference order. Each policy or program identifies the covered party &#xD;
with respect to the payer, so that the identifiers can be recorded.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_pMH2oN6jEee0kIKIEebuqA" name="PayersSectionTemplateId" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMIdsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.18')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMK58N6jEee0kIKIEebuqA" name="PayersSectionCode" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMK58d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMPycN6jEee0kIKIEebuqA" name="PayersSectionCodeP" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMPycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMUD4N6jEee0kIKIEebuqA" name="PayersSectionTitle" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMUD4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMXHMN6jEee0kIKIEebuqA" name="PayersSectionText" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMXHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p3-QAN6jEee0kIKIEebuqA" name="PayersSectionCoverageActivity" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p3-QAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::CoverageActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NICchSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_p3-3EN6jEee0kIKIEebuqA" name="getCoverageActivities" bodyCondition="_p3-3E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p3-3E96jEee0kIKIEebuqA" name="body" constrainedElement="_p3-3EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p3-3FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::CoverageActivity)).oclAsType(consol::CoverageActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p3-3Ed6jEee0kIKIEebuqA" type="_Cg3pkBUmEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p3-3Et6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NIpgBSVEeGGzu7fmW9pXw" name="MedicationsSection">
      <ownedRule xmi:id="_pMZjcd6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMaKgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.1.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMjUcN6jEee0kIKIEebuqA" name="MedicationsSectionCodeP" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMjUcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMd04N6jEee0kIKIEebuqA" name="MedicationsSectionCode" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMd04d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMo0AN6jEee0kIKIEebuqA" name="MedicationsSectionTitle" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMo0Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pMtFcN6jEee0kIKIEebuqA" name="MedicationsSectionText" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pMtFcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNJKUN6jEee0kIKIEebuqA" name="MedicationsSectionMedication" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNJKUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_UeEpoBVgEeGQCvUGzi1kDQ" general="_iAoXEBVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_4MdWIHavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_pNJxYN6jEee0kIKIEebuqA" name="getMedications" bodyCondition="_pNJxY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pNJxY96jEee0kIKIEebuqA" name="body" constrainedElement="_pNJxYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNJxZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pNJxYd6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pNJxYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NP-QxSVEeGGzu7fmW9pXw" name="PlanOfCareSection">
      <ownedComment xmi:id="_2N0mCRSVEeGGzu7fmW9pXw" annotatedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <body>The Plan of Care section contains data that defines pending orders, interventions, encounters, services, and procedures for the patient. It is limited to prospective, unfulfilled, or incomplete orders and requests only, which are indicated by the @moodCode of the entries within this section. All active, incomplete, or pending orders, appointments, referrals, procedures, services, or any other pending event of clinical significance to the current care of the patient should be listed unless constrained due to privacy issues. The plan may also contain information about ongoing care of the patient and information regarding goals and clinical reminders. Clinical reminders are placed here to provide prompts for disease prevention and management, patient safety, and health-care quality improvements, including widely accepted performance measures. The plan may also indicate that patient education was given or will be provided.</body>
      </ownedComment>
      <ownedRule xmi:id="_pNKYcN6jEee0kIKIEebuqA" name="PlanOfCareSectionTemplateId" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNKYcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.10')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNNbwN6jEee0kIKIEebuqA" name="PlanOfCareSectionCode" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNNbwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '18776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNRtMN6jEee0kIKIEebuqA" name="PlanOfCareSectionCodeP" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNRtMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNWlsN6jEee0kIKIEebuqA" name="PlanOfCareSectionTitle" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNWlsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNZB8N6jEee0kIKIEebuqA" name="PlanOfCareSectionText" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNZB8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pOZukN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityAct" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pOZukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlanOfCareActivityAct))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pPYmAN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityEncounter" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pPYmAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::PlanOfCareActivityEncounter))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pQYEgN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityObservation" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQYEgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PlanOfCareActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pRZYMN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityProcedure" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRZYMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pSlD8N6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivitySubstanceAdministration" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSlD8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::PlanOfCareActivitySubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pTnlwN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivitySupply" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pTnlwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::PlanOfCareActivitySupply))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_syan4N6jEee0kIKIEebuqA" name="PlanOfCareSectionInstructions" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_syan4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::Instructions))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_h0yLgBnTEeGs5a462vYX5Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_pOaVoN6jEee0kIKIEebuqA" name="getPlanOfCareActivityActs" bodyCondition="_pOaVo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pOaVo96jEee0kIKIEebuqA" name="body" constrainedElement="_pOaVoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pOaVpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlanOfCareActivityAct)).oclAsType(consol::PlanOfCareActivityAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pOaVod6jEee0kIKIEebuqA" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pOaVot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pPZNEN6jEee0kIKIEebuqA" name="getPlanOfCareActivityEncounters" bodyCondition="_pPZNE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pPZNE96jEee0kIKIEebuqA" name="body" constrainedElement="_pPZNEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pPZNFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::PlanOfCareActivityEncounter)).oclAsType(consol::PlanOfCareActivityEncounter)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pPZNEd6jEee0kIKIEebuqA" type="_2NWFBBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pPZNEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pQYrkN6jEee0kIKIEebuqA" name="getPlanOfCareActivityObservations" bodyCondition="_pQYrk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pQYrk96jEee0kIKIEebuqA" name="body" constrainedElement="_pQYrkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQYrlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PlanOfCareActivityObservation)).oclAsType(consol::PlanOfCareActivityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pQYrkd6jEee0kIKIEebuqA" type="_2NcLjhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pQYrkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pRZYMt6jEee0kIKIEebuqA" name="getPlanOfCareActivityProcedures" bodyCondition="_pRZ_Qt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pRZ_Qt6jEee0kIKIEebuqA" name="body" constrainedElement="_pRZYMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRZ_Q96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure)).oclAsType(consol::PlanOfCareActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pRZ_QN6jEee0kIKIEebuqA" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pRZ_Qd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pSlrAN6jEee0kIKIEebuqA" name="getPlanOfCareActivitySubstanceAdministrations" bodyCondition="_pSlrA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pSlrA96jEee0kIKIEebuqA" name="body" constrainedElement="_pSlrAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSlrBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlanOfCareActivitySubstanceAdministration)).oclAsType(consol::PlanOfCareActivitySubstanceAdministration)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pSlrAd6jEee0kIKIEebuqA" type="_2NoYwxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pSlrAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pTnlwt6jEee0kIKIEebuqA" name="getPlanOfCareActivitySupplies" bodyCondition="_pToM0t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pToM0t6jEee0kIKIEebuqA" name="body" constrainedElement="_pTnlwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pToM096jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::PlanOfCareActivitySupply)).oclAsType(consol::PlanOfCareActivitySupply)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pToM0N6jEee0kIKIEebuqA" type="_2NoY5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pToM0d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sybO8N6jEee0kIKIEebuqA" name="getInstructionss" bodyCondition="_sybO896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sybO896jEee0kIKIEebuqA" name="body" constrainedElement="_sybO8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sybO9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions)).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sybO8d6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sybO8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NWE5xSVEeGGzu7fmW9pXw" name="PlanOfCareActivityAct">
      <ownedRule xmi:id="_pNcFQN6jEee0kIKIEebuqA" name="PlanOfCareActivityActTemplateId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNcFQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.39')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNfIkN6jEee0kIKIEebuqA" name="PlanOfCareActivityActClassCode" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNfIkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pNiy8N6jEee0kIKIEebuqA" name="PlanOfCareActivityActMoodCode" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pNiy8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::INT or value = vocab::x_DocumentActMood::ARQ or value = vocab::x_DocumentActMood::PRMS or value = vocab::x_DocumentActMood::PRP or value = vocab::x_DocumentActMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pN_e4N6jEee0kIKIEebuqA" name="PlanOfCareActivityActId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pN_e4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NWE_RSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NWFBBSVEeGGzu7fmW9pXw" name="PlanOfCareActivityEncounter">
      <ownedRule xmi:id="_pOa8sN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterTemplateId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pOa8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.40')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pOeAAN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterClassCode" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pOeAAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pOhqYN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterMoodCode" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pOhqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentEncounterMood) and &#xD;
let value : vocab::x_DocumentEncounterMood = self.moodCode.oclAsType(vocab::x_DocumentEncounterMood) in &#xD;
value = vocab::x_DocumentEncounterMood::INT or value = vocab::x_DocumentEncounterMood::ARQ or value = vocab::x_DocumentEncounterMood::PRMS or value = vocab::x_DocumentEncounterMood::PRP or value = vocab::x_DocumentEncounterMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pO9vQN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pO9vQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NcLhxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NcLjhSVEeGGzu7fmW9pXw" name="PlanOfCareActivityObservation">
      <ownedRule xmi:id="_pPZNFd6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationTemplateId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pPZ0IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.44')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pPc3cN6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationClassCode" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pPc3cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pPgh0N6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationMoodCode" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pPhI4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_ActMoodDocumentObservation) and &#xD;
let value : vocab::x_ActMoodDocumentObservation = self.moodCode.oclAsType(vocab::x_ActMoodDocumentObservation) in &#xD;
value = vocab::x_ActMoodDocumentObservation::INT or value = vocab::x_ActMoodDocumentObservation::GOL or value = vocab::x_ActMoodDocumentObservation::PRMS or value = vocab::x_ActMoodDocumentObservation::PRP or value = vocab::x_ActMoodDocumentObservation::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pP9NwN6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pP9Nwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NiSIxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NiSKhSVEeGGzu7fmW9pXw" name="PlanOfCareActivityProcedure">
      <ownedRule xmi:id="_pQZSoN6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureTemplateId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQZSod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.41')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pQcV8N6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureClassCode" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQcV8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::PROC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pQgAUN6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureMoodCode" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQgAUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentProcedureMood) and &#xD;
let value : vocab::x_DocumentProcedureMood = self.moodCode.oclAsType(vocab::x_DocumentProcedureMood) in &#xD;
value = vocab::x_DocumentProcedureMood::INT or value = vocab::x_DocumentProcedureMood::ARQ or value = vocab::x_DocumentProcedureMood::PRMS or value = vocab::x_DocumentProcedureMood::PRP or value = vocab::x_DocumentProcedureMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pQ8sQN6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pQ8sQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NiSPhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_-jiisEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NoYwxSVEeGGzu7fmW9pXw" name="PlanOfCareActivitySubstanceAdministration">
      <ownedRule xmi:id="_pRZ_RN6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationTemplateId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRZ_Rd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.42')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pRdCkN6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationClassCode" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRdCkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pRhUAN6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationMoodCode" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRhUAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::INT or value = vocab::x_DocumentSubstanceMood::PRMS or value = vocab::x_DocumentSubstanceMood::PRP or value = vocab::x_DocumentSubstanceMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pR9_8N6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pR9_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NoY3RSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NoY5BSVEeGGzu7fmW9pXw" name="PlanOfCareActivitySupply">
      <ownedRule xmi:id="_pSlrBd6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyTemplateId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSlrBt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.43')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pSouUN6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyClassCode" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSouUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pSs_wN6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyMoodCode" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSs_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::INT or value = vocab::x_DocumentSubstanceMood::PRMS or value = vocab::x_DocumentSubstanceMood::PRP or value = vocab::x_DocumentSubstanceMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pTMH8N6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pTMH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NufZhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2N6soBSVEeGGzu7fmW9pXw" name="PregnancyObservation">
      <ownedComment xmi:id="_9RKMYDyWEeGOm9opnDhYAQ">
        <body>This clinical statement represents current and/or prior pregnancy dates enabling investigators to determine if the subject of the case report was pregnant during the course of a condition.</body>
      </ownedComment>
      <ownedRule xmi:id="_pToM1N6jEee0kIKIEebuqA" name="PregnancyObservationTemplateId" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pToM1d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.15.3.8')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pTrQIN6jEee0kIKIEebuqA" name="PregnancyObservationClassCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pTrQId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pTvhkN6jEee0kIKIEebuqA" name="PregnancyObservationMoodCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pTvhkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pT3dYN6jEee0kIKIEebuqA" name="PregnancyObservationCodeP" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pT4EcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pTzL8N6jEee0kIKIEebuqA" name="PregnancyObservationCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pTzL8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pT8V4N6jEee0kIKIEebuqA" name="PregnancyObservationStatusCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pT8V4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUBOYN6jEee0kIKIEebuqA" name="PregnancyObservationValue" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUBOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '77386006' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUGG4N6jEee0kIKIEebuqA" name="PregnancyObservationValueP" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUGG4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUKYUN6jEee0kIKIEebuqA" name="PregnancyObservationEffectiveTime" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUKYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYrwYN6jEee0kIKIEebuqA" name="PregnancyObservationEstimatedDateOfDelivery" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYrwYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::EstimatedDateOfDelivery) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2N6sxxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qYrwYt6jEee0kIKIEebuqA" name="getEstimatedDateOfDelivery" bodyCondition="_qYsXcd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qYsXcd6jEee0kIKIEebuqA" name="body" constrainedElement="_qYrwYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYsXct6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::EstimatedDateOfDelivery))->asSequence()->any(true).oclAsType(consol::EstimatedDateOfDelivery)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qYrwY96jEee0kIKIEebuqA" type="_vBswQBtpEeGT89b80j3MTg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qYsXcN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OAzQRSVEeGGzu7fmW9pXw" name="ProceduresSection">
      <ownedComment xmi:id="_2OfUahSVEeGGzu7fmW9pXw" annotatedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <body>This section defines all interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated. The section is intended to include notable procedures, but can contain all procedures for the period of time being summarized. The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore this section contains procedure templates represented with three RIM classes: Act. Observation, and Procedure. Procedure act is for procedures the alter that physical condition of a patient (Splenectomy). Observation act is for procedures that result in new information about a patient but do not cause physical alteration (EEG). Act is for all other types of procedures (dressing change).&#xD;
The length of an encounter is documented in the documentationOf/encompassingEncounter/effectiveTime and length of service in documentationOf/ServiceEvent/effectiveTime.</body>
      </ownedComment>
      <ownedRule xmi:id="_2OfUZxSVEeGGzu7fmW9pXw" name="ProceduresSectionHasProcedureActivity">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OfUaBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies self.getActs()->exists(a : cda::Act | a.oclIsKindOf(consol::ProcedureActivityAct)) or self.getObservations()->exists(o : cda::Observation | o.oclIsKindOf(consol::ProcedureActivityObservation)) or self.getProcedures()->exists(p : cda::Procedure | p.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUM0kd6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUM0kt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.7.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pURtEN6jEee0kIKIEebuqA" name="ProceduresSectionTitle" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pURtEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUbeEN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUbeEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUV-gN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUV-gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUg9oN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalText" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUg9od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sz7DwN6jEee0kIKIEebuqA" name="ProceduresSectionProcedureActivityProcedure" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sz7Dwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s0V6gN6jEee0kIKIEebuqA" name="ProceduresSectionProcedureActivityObservation" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0V6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProcedureActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s0wKMN6jEee0kIKIEebuqA" name="ProceduresSectionProcedureActivityAct" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0wKMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProcedureActivityAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gNO_cBVgEeGQCvUGzi1kDQ" general="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_G90uIHavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_sz7Dwt6jEee0kIKIEebuqA" name="getConsolProcedureActivityProcedures" bodyCondition="_sz7q0t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sz7q0t6jEee0kIKIEebuqA" name="body" constrainedElement="_sz7Dwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sz7q096jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure)).oclAsType(consol::ProcedureActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sz7q0N6jEee0kIKIEebuqA" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sz7q0d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s0V6gt6jEee0kIKIEebuqA" name="getConsolProcedureActivityObservations" bodyCondition="_s0Whkt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s0Whkt6jEee0kIKIEebuqA" name="body" constrainedElement="_s0V6gt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0Whk96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation)).oclAsType(consol::ProcedureActivityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s0WhkN6jEee0kIKIEebuqA" type="_Aj7JkBg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0Whkd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s0wKMt6jEee0kIKIEebuqA" name="getConsolProcedureActivityActs" bodyCondition="_s0wKNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s0wKNd6jEee0kIKIEebuqA" name="body" constrainedElement="_s0wKMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0wxQN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct)).oclAsType(consol::ProcedureActivityAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s0wKM96jEee0kIKIEebuqA" type="_awdH4Bg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wKNN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OG58RSVEeGGzu7fmW9pXw" name="ProcedureActivityProcedure">
      <ownedComment xmi:id="_w6NZEBxxEeGXP8PxDYviDg">
        <body>The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g. splenectomy). &#xD;
This clinical statement represents procedures whose immediate and primary outcome (post-condition) is the alteration of the physical condition of the patient. Examples of these procedures are an appendectomy, hip replacement and a creation of a gastrostomy.</body>
      </ownedComment>
      <ownedRule xmi:id="_qGzKgBrPEeGxIZCGAXKxsQ" name="ProcedureActivityProcedureCodeCodeSystems" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8J3uYBrPEeGxIZCGAXKxsQ">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' xor self.code.codeSystem = '2.16.840.1.113883.6.96' xor self.code.codeSystem = '2.16.840.1.113883.6.12' xor self.code.codeSystem = '2.16.840.1.113883.6.4'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_N4ba0BrQEeGxIZCGAXKxsQ" name="ProcedureActivityProcedureCodeOriginalText" constrainedElement="_qGzKgBrPEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VYc2sBrQEeGxIZCGAXKxsQ">
          <language>OCL</language>
          <body>not code.oclIsUndefined() implies not code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_WEQMwBrQEeGxIZCGAXKxsQ" name="ProcedureActivityProcedureOriginalTextReference" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Pp6KEBrREeGxIZCGAXKxsQ">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies self.code.originalText->one(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oeKDoOVwEeGpoIKFyl7L7w" name="ProcedureActivityProcedureOriginalTextReferenceValue" constrainedElement="_WEQMwBrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uftWYOVwEeGpoIKFyl7L7w">
          <language>OCL</language>
          <body>self.code.originalText.reference->size() = 1 implies self.code.originalText.reference.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_SSUWwBrREeGxIZCGAXKxsQ" name="ProcedureActivityProcedureReferenceValue" constrainedElement="_WEQMwBrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VD9X8BrREeGxIZCGAXKxsQ">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t6LqgBxZEeGXP8PxDYviDg" name="ProcedureActivityProcedureEncounterInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7DYVYBxZEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.encounter->size() > 0)->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_9s2SABxZEeGXP8PxDYviDg" name="ProcedureActivityProcedureProductInstanceTypeCode" constrainedElement="_t6LqgBxZEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_FdoGsBxaEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ProductInstance))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::DEV)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_JHSVABxaEeGXP8PxDYviDg" name="ProcedureActivityProcedureServiceDeliveryLocationTypeCode" constrainedElement="_9s2SABxZEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Pf0kYBxaEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5r5qcBxsEeGXP8PxDYviDg" name="ProcedureActivityProcedureInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5r5qcRxsEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUkA8N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTemplateId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUkoAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.14')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUwOMN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureClassCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUwOMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::PROC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pUz4kN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureMoodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pUz4kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentProcedureMood) and &#xD;
let value : vocab::x_DocumentProcedureMood = self.moodCode.oclAsType(vocab::x_DocumentProcedureMood) in &#xD;
value = vocab::x_DocumentProcedureMood::EVN or value = vocab::x_DocumentProcedureMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pVP9cN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pVP9cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pVSZsN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pVSZsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pVVdAN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureStatusCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pVVdAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pVxh4N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEffectiveTime" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pVxh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pWRRIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePriorityCodeP" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pWRRId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pV1zUN6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePriorityCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pV1zUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.7' and (value.code = 'A' or value.code = 'CR' or value.code = 'CS' or value.code = 'CSP' or value.code = 'CSR' or value.code = 'EL' or value.code = 'EM' or value.code = 'P' or value.code = 'PRN' or value.code = 'R' or value.code = 'RR' or value.code = 'S' or value.code = 'T' or value.code = 'UD' or value.code = 'UR'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pWukIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureMethodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pWukId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pXVoIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTargetSiteCodeP" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pXVoId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pW0DsN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTargetSiteCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pW0Dsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pZBqMN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureIndication" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pZCRQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pZfkQN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureSpecimen" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pZfkQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.specimen->exists(specimen : cda::Specimen | not specimen.oclIsUndefined() and specimen.oclIsKindOf(cda::Specimen))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pZ83QN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureServiceDeliveryLocation" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pZ83Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_paZjMN6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePerformer" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_paZjMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pbE4oN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureMedicationActivity" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbFfsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pbkA0N6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePatientInstruction" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbkA0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qTo4UN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProductInstance" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qTo4Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ProductInstance))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sxkTUN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationship" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sxk6YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_351oQN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureSpecimenSpecimenRole" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_351oQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.specimen->excluding(null)->reject(specimenRole->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_352PUN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureSpecimenSpecimentRoleId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_352PUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.specimen->excluding(null)->reject(specimenRole.id->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37As8N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37As8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37BUAN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationName" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37BUAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37B7EN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationTelecom" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37B7Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37CiIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationAddr" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37CiId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37DJMN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37DJMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37DwQN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37DwQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37DwQt6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37DwQ96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37EXUN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityRepresentedOrganization" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37EXUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_37E-YN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_37E-Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38AygN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterClassCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38Aygd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(classCode=vocab::ActClass::ENC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38CAoN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterMoodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38CAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(moodCode=vocab::x_DocumentEncounterMood::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38CnsN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38Cnsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38D10N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipInversionInd" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38D10d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(not inversionInd.oclIsUndefined() and inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38Ec4N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipTypeCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38Ec4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_38FrAN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_38FrAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(encounter->one(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2OZN6RSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_-jiisEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_pZCRQd6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_pZCRRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pZCRRN6jEee0kIKIEebuqA" name="body" constrainedElement="_pZCRQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pZCRRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pZCRQt6jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZCRQ96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pZ83Qt6jEee0kIKIEebuqA" name="getServiceDeliveryLocations" bodyCondition="_pZ9eUd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pZ9eUd6jEee0kIKIEebuqA" name="body" constrainedElement="_pZ83Qt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pZ9eUt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pZ83Q96jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZ9eUN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pbFfsd6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_pbFftN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pbFftN6jEee0kIKIEebuqA" name="body" constrainedElement="_pbFfsd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbFftd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pbFfst6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pbFfs96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pbkA0t6jEee0kIKIEebuqA" name="getPatientInstruction" bodyCondition="_pbkn4N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pbkn4N6jEee0kIKIEebuqA" name="body" constrainedElement="_pbkA0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbkn4d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pbkA096jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pbkA1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qTpfYN6jEee0kIKIEebuqA" name="getProductInstances" bodyCondition="_qTpfY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qTpfY96jEee0kIKIEebuqA" name="body" constrainedElement="_qTpfYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qTpfZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ProductInstance)).oclAsType(consol::ProductInstance)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qTpfYd6jEee0kIKIEebuqA" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qTpfYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OfUcxSVEeGGzu7fmW9pXw" name="VitalSignsSection">
      <ownedRule xmi:id="_pblO8d6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbl2AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.4.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pbw1IN6jEee0kIKIEebuqA" name="VitalSignsSectionCodeP" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbw1Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pbqugN6jEee0kIKIEebuqA" name="VitalSignsSectionCode" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pbqugd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pb2UsN6jEee0kIKIEebuqA" name="VitalSignsSectionText" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pb2Usd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pb70QN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTitle" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pb70Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfWUoN6jEee0kIKIEebuqA" name="VitalSignsSectionVitalSignsOrganizer" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfWUod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::VitalSignsOrganizer))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_px07IBVgEeGQCvUGzi1kDQ" general="_bRH8sBVeEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_GRGhIBxREeG8X6LmnKJ43Q">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_pfW7sN6jEee0kIKIEebuqA" name="getConsolVitalSignsOrganizers" bodyCondition="_pfW7s96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pfW7s96jEee0kIKIEebuqA" name="body" constrainedElement="_pfW7sN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfW7tN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::VitalSignsOrganizer)).oclAsType(consol::VitalSignsOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pfW7sd6jEee0kIKIEebuqA" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pfW7st6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OlbCRSVEeGGzu7fmW9pXw" name="VitalSignsOrganizer">
      <ownedComment xmi:id="_YFDPQBwiEeG_RY8fzJjtMw">
        <body>&lt;p>The Vital Signs Organizer groups vital signs, which is similar to the Result Organizer, but with further constraints. &lt;/p>&#xD;
&#xD;
&lt;p>An appropriate nullFlavor can be used when organizer/code or organizer/id is unknown.&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_pb_eoN6jEee0kIKIEebuqA" name="VitalSignsOrganizerTemplateId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pb_eod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.26')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcDwEN6jEee0kIKIEebuqA" name="VitalSignsOrganizerClassCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcDwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcIBgN6jEee0kIKIEebuqA" name="VitalSignsOrganizerMoodCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcIBgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcLr4N6jEee0kIKIEebuqA" name="VitalSignsOrganizerId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcLr4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcQkYN6jEee0kIKIEebuqA" name="VitalSignsOrganizerCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcQkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '46680005' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcWrAN6jEee0kIKIEebuqA" name="VitalSignsOrganizerCodeP" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcWrAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pchqIN6jEee0kIKIEebuqA" name="VitalSignsOrganizerStatusCodeP" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pchqId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pccKkN6jEee0kIKIEebuqA" name="VitalSignsOrganizerStatusCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pccKkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pcmioN6jEee0kIKIEebuqA" name="VitalSignsOrganizerEffectiveTime" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pcmiod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdFDwN6jEee0kIKIEebuqA" name="VitalSignsOrganizerVitalSignObservation" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdFDwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::VitalSignObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2O91oRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_pdFq0N6jEee0kIKIEebuqA" name="getVitalSignObservations" bodyCondition="_pdFq096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pdFq096jEee0kIKIEebuqA" name="body" constrainedElement="_pdFq0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdFq1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::VitalSignObservation)).oclAsType(consol::VitalSignObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pdFq0d6jEee0kIKIEebuqA" type="_2OrhsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pdFq0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OrhsRSVEeGGzu7fmW9pXw" name="VitalSignObservation">
      <ownedComment xmi:id="_y1fL4BwiEeG_RY8fzJjtMw">
        <body>Vital signs are represented as are other results, with additional vocabulary constraints.</body>
      </ownedComment>
      <ownedRule xmi:id="_X1YV8OJvEeG3cO7ebC3QuA" name="VitalSignObservationTextReference" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gOTIsOJvEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_acAZ8OJvEeG3cO7ebC3QuA" name="VitalSignObservationReferenceValue" constrainedElement="_X1YV8OJvEeG3cO7ebC3QuA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kVC7oOJvEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cfXY0OJvEeG3cO7ebC3QuA" name="VitalSignObservationTextReferenceValue" constrainedElement="_acAZ8OJvEeG3cO7ebC3QuA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lumvkOJvEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdGR4N6jEee0kIKIEebuqA" name="VitalSignObservationTemplateId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdGR4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.27')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdMYgN6jEee0kIKIEebuqA" name="VitalSignObservationClassCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdMYgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdQp8N6jEee0kIKIEebuqA" name="VitalSignObservationMoodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdQp8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdU7YN6jEee0kIKIEebuqA" name="VitalSignObservationId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdU7Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pd3t8N6jEee0kIKIEebuqA" name="VitalSignObservationCodeP" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pd3t8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pdZz4N6jEee0kIKIEebuqA" name="VitalSignObservationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pdZz4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_peW2IN6jEee0kIKIEebuqA" name="VitalSignObservationStatusCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_peW2Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pebuoN6jEee0kIKIEebuqA" name="VitalSignObservationStatusCodeP" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pebuod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pegnIN6jEee0kIKIEebuqA" name="VitalSignObservationEffectiveTime" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pegnId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pekRgN6jEee0kIKIEebuqA" name="VitalSignObservationValue" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pekRgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::PQ)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_peoi8N6jEee0kIKIEebuqA" name="VitalSignObservationInterpretationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_peoi8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.interpretationCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_permQN6jEee0kIKIEebuqA" name="VitalSignObservationMethodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_permQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pevQoN6jEee0kIKIEebuqA" name="VitalSignObservationTargetSiteCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pevQod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.targetSiteCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pe0wMN6jEee0kIKIEebuqA" name="VitalSignObservationText" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pe0wMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_syA_QN6jEee0kIKIEebuqA" name="VitalSignObservationAuthor" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_syA_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2O3u6BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PQJcxSVEeGGzu7fmW9pXw" name="HistoryOfPastIllnessSection">
      <ownedComment xmi:id="_2PWQBRSVEeGGzu7fmW9pXw" annotatedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <body>This section contains a record of the patient's past complaints, problems, and diagnoses. It contains data from the patient's past up to the patient's current complaint or reason for seeking medical care.</body>
      </ownedComment>
      <ownedRule xmi:id="_pfXiwN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionTemplateId" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfXiwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.20')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfbNIN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionCode" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfbNId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11348-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfgssN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionCodeP" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfgssd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfllMN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionTitle" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfllMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfpPkN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionText" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfpPkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qsDYUN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionProblemObservation" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qsDYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PWQBxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qsDYUt6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_qsDYVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qsDYVd6jEee0kIKIEebuqA" name="body" constrainedElement="_qsDYUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qsDYVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qsDYU96jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qsDYVN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PWQCBSVEeGGzu7fmW9pXw" name="ChiefComplaintSection">
      <ownedComment xmi:id="_2PWQFRSVEeGGzu7fmW9pXw" annotatedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <body>This section records the patient's chief complaint (the patient's own description).</body>
      </ownedComment>
      <ownedRule xmi:id="_pfrr0N6jEee0kIKIEebuqA" name="ChiefComplaintSectionTemplateId" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfrr0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pfv9QN6jEee0kIKIEebuqA" name="ChiefComplaintSectionCode" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfv9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10154-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pf1c0N6jEee0kIKIEebuqA" name="ChiefComplaintSectionCodeP" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pf1c0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pf7jcN6jEee0kIKIEebuqA" name="ChiefComplaintSectionText" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pf7jcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgAb8N6jEee0kIKIEebuqA" name="ChiefComplaintSectionTitle" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgBDAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PWQFhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PWQFxSVEeGGzu7fmW9pXw" name="ReasonForReferralSection">
      <ownedComment xmi:id="_2PcWrxSVEeGGzu7fmW9pXw" annotatedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <body>A Reason for Referral section records the reason the patient is being referred for a consultation by a provider. An optional Chief Complaint section may capture the patient's description of the reason for the consultation.</body>
      </ownedComment>
      <ownedRule xmi:id="_pgEtYN6jEee0kIKIEebuqA" name="ReasonForReferralSectionTemplateId" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgEtYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgIXwN6jEee0kIKIEebuqA" name="ReasonForReferralSectionCode" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgIXwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42349-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgNQQN6jEee0kIKIEebuqA" name="ReasonForReferralSectionCodeP" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgNQQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgTW4N6jEee0kIKIEebuqA" name="ReasonForReferralSectionTitle" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgTW4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgYPYN6jEee0kIKIEebuqA" name="ReasonForReferralSectionText" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgYPYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PcWsBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PcWsRSVEeGGzu7fmW9pXw" name="HistoryOfPresentIllnessSection">
      <ownedComment xmi:id="_2PidQBSVEeGGzu7fmW9pXw" annotatedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <body>The History of Present Illness section describes the history related to the reason for the encounter.  It contains the historical details leading up to and pertaining to the patient's current complaint or reason for seeking medical care.</body>
      </ownedComment>
      <ownedRule xmi:id="_pgaEkN6jEee0kIKIEebuqA" name="HistoryOfPresentIllnessSectionTemplateId" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgaEkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgeWAN6jEee0kIKIEebuqA" name="HistoryOfPresentIllnessSectionCode" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgeWAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10164-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgjOgN6jEee0kIKIEebuqA" name="HistoryOfPresentIllnessSectionCodeP" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgjOgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgoHAN6jEee0kIKIEebuqA" name="HistoryOfPresentIllnessSectionTitle" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgoHAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgsYcN6jEee0kIKIEebuqA" name="HistoryOfPresentIllnessSectionText" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgs_gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PidQRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PidQhSVEeGGzu7fmW9pXw" name="HospitalAdmissionDiagnosisSection">
      <ownedComment xmi:id="_2PidTxSVEeGGzu7fmW9pXw" annotatedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <body>The Hospital Admitting Diagnosis section contains a narrative description of the primary reason for admission to a hospital facility. The section includes an optional entry to record patient conditions.</body>
      </ownedComment>
      <ownedRule xmi:id="_pgvbwN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionTemplateId" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgvbwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.43')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgzGIN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionCode" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgzGId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pg3-oN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionCodeP" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pg3-od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pg-sUN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionTitle" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pg-sUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phEL4N6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionText" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phEL4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_soHcYN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionHospitalAdmissionDiagnosis" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_soHcYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HospitalAdmissionDiagnosis))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PidUBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_soHcYt6jEee0kIKIEebuqA" name="getHospitalAdmissionDiagnosis" bodyCondition="_soHcZd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_soHcZd6jEee0kIKIEebuqA" name="body" constrainedElement="_soHcYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_soHcZt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalAdmissionDiagnosis))->asSequence()->any(true).oclAsType(consol::HospitalAdmissionDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_soHcY96jEee0kIKIEebuqA" type="_5K6mAEFHEeGorO80f-Cppg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_soHcZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Poj5BSVEeGGzu7fmW9pXw" name="HospitalAdmissionMedicationsSectionEntriesOptional">
      <ownedComment xmi:id="_2Poj6xSVEeGGzu7fmW9pXw" annotatedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <body>The Hospital Admission Medications section defines the relevant medications administered prior to admission to the facility. The currently active medications must be listed.</body>
      </ownedComment>
      <ownedRule xmi:id="_phHPMN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phH2QN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.44')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phNV0N6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phNV0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phVRoN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalCodeP" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phVRod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phdNcN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phd0gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phiF8N6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phiF8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sJ6dcN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ6dcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AdmissionMedication))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Poj7BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sJ7EgN6jEee0kIKIEebuqA" name="getAdmissionMedications" bodyCondition="_sJ7Eg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sJ7Eg96jEee0kIKIEebuqA" name="body" constrainedElement="_sJ7EgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ7EhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AdmissionMedication)).oclAsType(consol::AdmissionMedication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sJ7Egd6jEee0kIKIEebuqA" type="_LNP08EFGEeGorO80f-Cppg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJ7Egt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Poj_BSVEeGGzu7fmW9pXw" name="MedicationsAdministeredSection">
      <ownedComment xmi:id="_2Pxt0BSVEeGGzu7fmW9pXw" annotatedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <body>The Medications Administered section defines medications and fluids administered during the procedure, encounter, or other activity excluding anesthetic medications. This guide recommends anesthesia medications be documented as described in the section on Anesthesia.</body>
      </ownedComment>
      <ownedRule xmi:id="_phlJQN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionTemplateId" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phlwUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.38')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phpasN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionCode" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phpasd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29549-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phuTMN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionCodeP" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phuTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_phzywN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionTitle" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_phzywd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ph4EMN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionText" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ph4EMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sohFAN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionMedicationActivity" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sohFAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Pxt0RSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sohsEN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_sohsE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sohsE96jEee0kIKIEebuqA" name="body" constrainedElement="_sohsEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sohsFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sohsEd6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sohsEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Pxt0hSVEeGGzu7fmW9pXw" name="PhysicalExamSection">
      <ownedComment xmi:id="_2RkdqBSVEeGGzu7fmW9pXw" annotatedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <body>The Physical Exam section includes direct observations made by the clinician. The examination may include the use of simple instruments and may also describe simple maneuvers performed directly on the patient's body. This section includes only observations made by the examining clinician using inspection, palpation, auscultation, and percussion; it does not include laboratory or imaging findings. The exam may be limited to pertinent body systems based on the patient's chief complaint or it may include a comprehensive examination. The examination may be reported as a collection of random clinical statements or it may be reported categorically. &#xD;
The Physical Exam section may contain multiple nested subsections: Vital Signs, General Status, and those listed in the Additional Physical Examination Subsections appendix.</body>
      </ownedComment>
      <ownedRule xmi:id="_ph6gcN6jEee0kIKIEebuqA" name="PhysicalExamSectionTemplateId" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ph7HgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.2.10')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ph-x4N6jEee0kIKIEebuqA" name="PhysicalExamSectionCode" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ph-x4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29545-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_piDqYN6jEee0kIKIEebuqA" name="PhysicalExamSectionCodeP" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piDqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_piJxAN6jEee0kIKIEebuqA" name="PhysicalExamSectionTitle" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piJxAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_piOpgN6jEee0kIKIEebuqA" name="PhysicalExamSectionText" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piOpgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_taNAoN6jEee0kIKIEebuqA" name="PhysicalExamSectionPressureUlcerObservation" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_taNAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PressureUlcerObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tampQN6jEee0kIKIEebuqA" name="PhysicalExamSectionNumberOfPressureUlcersObservation" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tampQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tbAR4N6jEee0kIKIEebuqA" name="PhysicalExamSectionHighestPressureUlcerStage" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tbAR4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::HighestPressureUlcerStage))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RkdqxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_taNnsN6jEee0kIKIEebuqA" name="getPressureUlcerObservations" bodyCondition="_taNns96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_taNns96jEee0kIKIEebuqA" name="body" constrainedElement="_taNnsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_taNntN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PressureUlcerObservation)).oclAsType(consol::PressureUlcerObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_taNnsd6jEee0kIKIEebuqA" type="_9rQowOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_taNnst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tampQt6jEee0kIKIEebuqA" name="getNumberOfPressureUlcersObservations" bodyCondition="_tanQUN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tanQUN6jEee0kIKIEebuqA" name="body" constrainedElement="_tampQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tanQUd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation)).oclAsType(consol::NumberOfPressureUlcersObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tampQ96jEee0kIKIEebuqA" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tampRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tbA48N6jEee0kIKIEebuqA" name="getHighestPressureUlcerStages" bodyCondition="_tbA4896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tbA4896jEee0kIKIEebuqA" name="body" constrainedElement="_tbA48N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tbA49N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HighestPressureUlcerStage)).oclAsType(consol::HighestPressureUlcerStage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tbA48d6jEee0kIKIEebuqA" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tbA48t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Pxt6xSVEeGGzu7fmW9pXw" name="GeneralStatusSection">
      <ownedComment xmi:id="_2Pxt7BSVEeGGzu7fmW9pXw" annotatedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <body>The General Status section describes general observations and readily observable attributes of the patient, including affect and demeanor, apparent age compared to actual age, gender, ethnicity, nutritional status based on appearance, body build and habitus (e.g., muscular, cachectic, obese), developmental or other deformities, gait and mobility, personal hygiene, evidence of distress, and voice quality and speech.</body>
      </ownedComment>
      <ownedRule xmi:id="_piRFwN6jEee0kIKIEebuqA" name="GeneralStatusSectionTemplateId" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piRs0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.2.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_piVXMN6jEee0kIKIEebuqA" name="GeneralStatusSectionCode" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piVXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10210-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pia2wN6jEee0kIKIEebuqA" name="GeneralStatusSectionCodeP" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pia2wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pifvQN6jEee0kIKIEebuqA" name="GeneralStatusSectionTitle" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pifvQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_piiykN6jEee0kIKIEebuqA" name="GeneralStatusSectionText" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_piiykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2P7e0BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2RqkMBSVEeGGzu7fmW9pXw" name="ReviewOfSystemsSection">
      <ownedComment xmi:id="_2RqkOBSVEeGGzu7fmW9pXw" annotatedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <body>The Review of Systems section contains a relevant collection of symptoms and functions systematically gathered by a clinician. It includes symptoms the patient is currently experiencing, some of which were not elicited during the history of present illness, as well as a potentially large number of pertinent negatives, for example, symptoms that the patient denied experiencing.</body>
      </ownedComment>
      <ownedRule xmi:id="_pilO0N6jEee0kIKIEebuqA" name="ReviewOfSystemsSectionTemplateId" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pilO0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.18')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pio5MN6jEee0kIKIEebuqA" name="ReviewOfSystemsSectionCode" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pio5Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10187-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pitKoN6jEee0kIKIEebuqA" name="ReviewOfSystemsSectionCodeP" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pitxsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pizRQN6jEee0kIKIEebuqA" name="ReviewOfSystemsSectionTitle" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pizRQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pi4JwN6jEee0kIKIEebuqA" name="ReviewOfSystemsSectionText" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pi4Jwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RqkOhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Rwq0BSVEeGGzu7fmW9pXw" name="AssessmentAndPlanSection">
      <ownedComment xmi:id="_2Rwq8BSVEeGGzu7fmW9pXw" annotatedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <body>The Assessment and Plan sections may be combined or separated to meet local policy requirements.&#xD;
The Assessment and Plan section represents both the clinician's conclusions and working assumptions that will guide treatment of the patient (see Assessment Section above) and pending orders, interventions, encounters, services, and procedures for the patient (see Plan of Care Section below).</body>
      </ownedComment>
      <ownedRule xmi:id="_pi5-8N6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionTemplateId" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pi6mAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.9')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pi9pUN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionCode" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pi9pUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '51847-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjDv8N6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionCodeP" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjDv8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjIocN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionText" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjIocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qrpIoN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionPlanOfCareActivityAct" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qrpIod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlanOfCareActivityAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Rwq8hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qrpvsN6jEee0kIKIEebuqA" name="getPlanOfCareActivityActs" bodyCondition="_qrpvs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qrpvs96jEee0kIKIEebuqA" name="body" constrainedElement="_qrpvsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qrpvtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlanOfCareActivityAct)).oclAsType(consol::PlanOfCareActivityAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qrpvsd6jEee0kIKIEebuqA" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qrpvst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2SC-sBSVEeGGzu7fmW9pXw" name="FamilyHistoryDeathObservation">
      <ownedComment xmi:id="_fqbbcCHkEeGFLIX-2_sWzA">
        <body>This clinical statement records whether the family member is deceased</body>
      </ownedComment>
      <ownedRule xmi:id="_pjLEsN6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationTemplateId" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjLEsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.47')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjOvEN6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationClassCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjOvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjTnkN6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationMoodCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjTnkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjXR8N6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjXR8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjd_oN6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationStatusCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjd_od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjlUYN6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationValue" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjlUYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '419099009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjqz8N6jEee0kIKIEebuqA" name="FamilyHistoryDeathObservationValueP" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjqz8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2SPMABSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_luQh8DVzEeGaW4kr-GbV8Q" name="SurgicalDrainsSection">
      <ownedComment xmi:id="_SOgPAEE3EeGdmoWy_aLP0Q">
        <body>The Surgical Drains section may be used to record drains placed during the surgical procedure. Optionally, surgical drain placement may be represented with a text element in the Procedure Description Section.</body>
      </ownedComment>
      <ownedRule xmi:id="_pjvscN6jEee0kIKIEebuqA" name="SurgicalDrainsSectionTemplateId" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjvscd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.7.13')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pjz94N6jEee0kIKIEebuqA" name="SurgicalDrainsSectionCode" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pjz94d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11537-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pj42YN6jEee0kIKIEebuqA" name="SurgicalDrainsSectionCodeP" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pj42Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pj-V8N6jEee0kIKIEebuqA" name="SurgicalDrainsSectionText" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pj-V8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pkCnYN6jEee0kIKIEebuqA" name="SurgicalDrainsSectionTitle" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkCnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_luQh8TVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2TeiIRSVEeGGzu7fmW9pXw" name="UnstructuredDocument">
      <ownedComment xmi:id="_2T9DPhSVEeGGzu7fmW9pXw" annotatedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <body>An unstructured document is a document which is used when the patient record is captured in an unstructured format that is encapsulated within an image file or as unstructured text in an electronic file such as a word processing or Portable Document Format (PDF) document. &#xD;
There is a need to raise the level of interoperability for these documents to provide full access to the longitudinal patient record across a continuum of care. Until this gap is addressed, image and multi-media files will continue to be a portion of the patient record that remains difficult to access and share with all participants in a patient's care. The Unstructured Document type addresses this gap by providing consistent guidance on the use of CDA for such documents.&#xD;
An Unstructured Document (UD) document type can (1) include unstructured content, such as a graphic, directly in a text element with a mediaType attribute, or (2) reference a single document file, such as a word-processing document, using a text/reference element.&#xD;
For guidance on how to handle multiple files, on the selection of media types for this IG, and on the identification of external files, see the subsections which follow the constraints below.&#xD;
IHE's XDS-SD (Cross-Transaction Specifications and Content Specifications, Scanned Documents Module) profile addresses a similar, more restricted use case, specifically for scanned documents or documents electronically created from existing text sources, and limits content to PDF-A or text. This Unstructured Documents implementation guide is applicable not only for scanned documents in non-PDF formats, but also for clinical documents produced through word processing applications, etc. &#xD;
For conformance with both specifications, please review the appendix on XDS-SD and US Realm Clinical Document Header Comparison and ensure that your documents at a minimum conform to all the SHALL constraints from either specification .</body>
      </ownedComment>
      <ownedRule xmi:id="_pkFqsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkGRwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.10')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sBEDcN6jEee0kIKIEebuqA" name="UnstructuredDocumentRecordTarget" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sBEDcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->one(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sBgvYN6jEee0kIKIEebuqA" name="UnstructuredDocumentAuthor" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sBgvYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sC-H8N6jEee0kIKIEebuqA" name="UnstructuredDocumentComponent" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sC-H8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->one(component : cda::Component2 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sD4t8N6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodian" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sD5VAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_39NsYN6jEee0kIKIEebuqA" name="UnstructuredDocumentRecordTargetPatientRole2Id" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_39NsYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_39OTcN6jEee0kIKIEebuqA" name="UnstructuredDocumentRecordTargetPatientRole2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_39OTcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null)->reject(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3-HEQN6jEee0kIKIEebuqA" name="UnstructuredDocumentAuthorAssignedAuthor2Addr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3-HEQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3-HrUN6jEee0kIKIEebuqA" name="UnstructuredDocumentAuthorAssignedAuthor2Telecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3-HrUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3-ISYN6jEee0kIKIEebuqA" name="UnstructuredDocumentAuthorAssignedAuthor2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3-ISYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_1ikN6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_2JoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_2Jod6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_2Jot6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_2wsN6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_2wsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_3XwN6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_3Xwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((telecom.oclIsUndefined() or telecom.isNullFlavorUndefined()) implies (not telecom.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_3-0N6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_3-0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null)->reject(representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(cda::CustodianOrganization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3_4l4N6jEee0kIKIEebuqA" name="UnstructuredDocumentCustodianAssignedCustodian2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3_4l4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null)->reject(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2T9DPxSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2T9DQBSVEeGGzu7fmW9pXw" name="MedicationInformation">
      <ownedComment xmi:id="_RzpgUCAMEeGKirKJsFylGA">
        <body>The medication can be recorded as a precoordinated product strength, product form, or product concentration (e.g. &quot;metoprolol 25mg tablet&quot;, &quot;amoxicillin 400mg/5mL suspension&quot;); or not pre-coordinated (e.g. &quot;metoprolol product&quot;).</body>
      </ownedComment>
      <ownedRule xmi:id="_pkqScN6jEee0kIKIEebuqA" name="MedicationInformationTemplateId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkq5gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.23')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pkt80N6jEee0kIKIEebuqA" name="MedicationInformationId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkt80d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pkxnMN6jEee0kIKIEebuqA" name="MedicationInformationClassCode" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pkxnMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassManufacturedProduct::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qZ5RUN6jEee0kIKIEebuqA" name="MedicationInformationManufacturerOrganization" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qZ5RUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sTw9AN6jEee0kIKIEebuqA" name="MedicationInformationManufacturedMaterial" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sTw9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4AUqwN6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AUqwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4AVR0N6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialReference" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AVR0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1 implies code.originalText->one(reference->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4AV44N6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AV44d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText.reference->size() = 1 implies code.originalText.reference.value->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4AV44t6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AV4496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code->size() = 1 implies code.translation->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4AWf8N6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCode" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AWf8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.88' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2UJQdxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_p6Zs8EcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2UnxkRSVEeGGzu7fmW9pXw" name="DischargeSummary">
      <ownedRule xmi:id="_43rsEGjHEeGNoZ3kEkcY2A" name="DischargeSummaryDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43rsEWjHEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>( self.getAllSections()->exists(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection)) ) implies not ( self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection)) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_plYEIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_plYEId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.8')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pmEnsN6jEee0kIKIEebuqA" name="DischargeSummaryCodeP" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pmEnsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pleKwN6jEee0kIKIEebuqA" name="DischargeSummaryCode" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pleKwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '18842-5' or value.code = '11490-0' or value.code = '28655-9' or value.code = '29761-4' or value.code = '34745-0' or value.code = '34105-7' or value.code = '34106-5'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pnRhkN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalAdmissionMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pnRhkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pns_YN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalAdmissionDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pns_Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_poK5cN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalDischargeDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_poK5cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_po218N6jEee0kIKIEebuqA" name="DischargeSummaryDischargeDietSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_po218d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ppUI8N6jEee0kIKIEebuqA" name="DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ppUI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ppvmwN6jEee0kIKIEebuqA" name="DischargeSummaryFunctionalStatusSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ppvmwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pqQkIN6jEee0kIKIEebuqA" name="DischargeSummaryHistoryOfPresentIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pqQkId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pqtQEN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalCourseSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pqtQEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_prLxMN6jEee0kIKIEebuqA" name="DischargeSummaryPlanOfCareSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_prLxMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_prodIN6jEee0kIKIEebuqA" name="DischargeSummaryHistoryOfPastIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_prodId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rE254N6jEee0kIKIEebuqA" name="DischargeSummaryComponentOf" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rE254d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rGc1UN6jEee0kIKIEebuqA" name="DischargeSummaryChiefComplaintAndReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rGc1Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rG124N6jEee0kIKIEebuqA" name="DischargeSummaryChiefComplaintSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rG124d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rHQGkN6jEee0kIKIEebuqA" name="DischargeSummaryFamilyHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rHQGkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rHpIIN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalConsultationsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rHpIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rID-4N6jEee0kIKIEebuqA" name="DischargeSummaryHospitalDischargeInstructionsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rIEl8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rIdAcN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalDischargePhysicalSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rIdAcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rI6TcN6jEee0kIKIEebuqA" name="DischargeSummaryHospitalDischargeStudiesSummarySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rI6Tcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rJTVAN6jEee0kIKIEebuqA" name="DischargeSummaryImmunizationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rJTVAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rJwA8N6jEee0kIKIEebuqA" name="DischargeSummaryProblemSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rJwA8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rKMF0N6jEee0kIKIEebuqA" name="DischargeSummaryProceduresSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rKMF0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rKlHYN6jEee0kIKIEebuqA" name="DischargeSummaryReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rKlucN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rK_-IN6jEee0kIKIEebuqA" name="DischargeSummaryReviewOfSystemsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rK_-Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rLY_sN6jEee0kIKIEebuqA" name="DischargeSummarySocialHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rLY_sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tpsOIN6jEee0kIKIEebuqA" name="DischargeSummaryAllergiesSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tpsOId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tqI6EN6jEee0kIKIEebuqA" name="DischargeSummaryVitalSignsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tqI6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Bl2EN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Bl2Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4BmdIN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4BmdId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->exists(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CDwIN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CDwId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CEXMN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CEXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->exists(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CE-QN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CE-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CE-Qt6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CE-Q96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CFlUN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeValueSet" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CFlUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(dischargeDispositionCode.oclIsUndefined() or dischargeDispositionCode.isNullFlavorUndefined() implies let value : datatypes::CE = dischargeDispositionCode.oclAsType(datatypes::CE) in value.codeSystem &lt;> '2.16.840.1.113883.12.112' implies value.codeSystem = '2.16.840.1.113883.6.301.5' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CGMYN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeCodeSystem" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CGMYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(dischargeDispositionCode.oclIsUndefined() or dischargeDispositionCode.isNullFlavorUndefined() implies let value : datatypes::CE = dischargeDispositionCode.oclAsType(datatypes::CE) in value.codeSystem &lt;> '2.16.840.1.113883.6.301.5' implies value.codeSystem = '2.16.840.1.113883.12.112' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CGzcN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CGzcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((dischargeDispositionCode.oclIsUndefined() or dischargeDispositionCode.isNullFlavorUndefined()) implies (not dischargeDispositionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CHagN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CHagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CHagt6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CHag96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CIBkN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CIBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CIooN6jEee0kIKIEebuqA" name="DischargeSummaryComponentOfEncompassingEncounter" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4CIood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2U6FfBSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_pnRhkt6jEee0kIKIEebuqA" name="getHospitalAdmissionMedicationsSectionEntriesOptional" bodyCondition="_pnRhld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pnRhld6jEee0kIKIEebuqA" name="body" constrainedElement="_pnRhkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pnSIoN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionMedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::HospitalAdmissionMedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pnRhk96jEee0kIKIEebuqA" type="_2Poj5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pnRhlN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pntmcN6jEee0kIKIEebuqA" name="getHospitalAdmissionDiagnosisSection" bodyCondition="_pntmc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pntmc96jEee0kIKIEebuqA" name="body" constrainedElement="_pntmcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pntmdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionDiagnosisSection))->asSequence()->any(true).oclAsType(consol::HospitalAdmissionDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pntmcd6jEee0kIKIEebuqA" type="_2PidQhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pntmct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_poK5ct6jEee0kIKIEebuqA" name="getHospitalDischargeDiagnosisSection" bodyCondition="_poLggN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_poLggN6jEee0kIKIEebuqA" name="body" constrainedElement="_poK5ct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_poLggd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeDiagnosisSection))->asSequence()->any(true).oclAsType(consol::HospitalDischargeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_poK5c96jEee0kIKIEebuqA" type="_2PidURSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_poK5dN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_po3dAN6jEee0kIKIEebuqA" name="getDischargeDietSection" bodyCondition="_po3dA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_po3dA96jEee0kIKIEebuqA" name="body" constrainedElement="_po3dAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_po3dBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))->asSequence()->any(true).oclAsType(consol::DischargeDietSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_po3dAd6jEee0kIKIEebuqA" type="_2Uz-4xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_po3dAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ppUwAN6jEee0kIKIEebuqA" name="getHospitalDischargeMedicationsSectionEntriesOptional" bodyCondition="_ppUwA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ppUwA96jEee0kIKIEebuqA" name="body" constrainedElement="_ppUwAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ppUwBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeMedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::HospitalDischargeMedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ppUwAd6jEee0kIKIEebuqA" type="_2Poj7RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ppUwAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ppwN0N6jEee0kIKIEebuqA" name="getFunctionalStatusSection" bodyCondition="_ppwN096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ppwN096jEee0kIKIEebuqA" name="body" constrainedElement="_ppwN0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ppwN1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ppwN0d6jEee0kIKIEebuqA" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ppwN0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pqRLMN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_pqRLM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pqRLM96jEee0kIKIEebuqA" name="body" constrainedElement="_pqRLMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pqRLNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pqRLMd6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pqRLMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_pqt3IN6jEee0kIKIEebuqA" name="getHospitalCourseSection" bodyCondition="_pqt3I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_pqt3I96jEee0kIKIEebuqA" name="body" constrainedElement="_pqt3IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_pqt3JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))->asSequence()->any(true).oclAsType(consol::HospitalCourseSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_pqt3Id6jEee0kIKIEebuqA" type="_2RqkOxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pqt3It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_prLxMt6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_prLxNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_prLxNd6jEee0kIKIEebuqA" name="body" constrainedElement="_prLxMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_prLxNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_prLxM96jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_prLxNN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_prodIt6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection" bodyCondition="_prpEMN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_prpEMN6jEee0kIKIEebuqA" name="body" constrainedElement="_prodIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_prpEMd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_prodI96jEee0kIKIEebuqA" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_prodJN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rGc1Ut6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_rGdcYd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rGdcYd6jEee0kIKIEebuqA" name="body" constrainedElement="_rGc1Ut6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rGdcYt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rGc1U96jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rGdcYN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rG2d8N6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_rG2d896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rG2d896jEee0kIKIEebuqA" name="body" constrainedElement="_rG2d8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rG2d9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rG2d8d6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rG2d8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rHQtoN6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_rHQto96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rHQto96jEee0kIKIEebuqA" name="body" constrainedElement="_rHQtoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rHQtpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rHQtod6jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rHQtot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rHpvMN6jEee0kIKIEebuqA" name="getHospitalConsultationsSection" bodyCondition="_rHpvM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rHpvM96jEee0kIKIEebuqA" name="body" constrainedElement="_rHpvMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rHpvNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection))->asSequence()->any(true).oclAsType(consol::HospitalConsultationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rHpvMd6jEee0kIKIEebuqA" type="_eKFbUDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rHpvMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rIEl8d6jEee0kIKIEebuqA" name="getHospitalDischargeInstructionsSection" bodyCondition="_rIEl9N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rIEl9N6jEee0kIKIEebuqA" name="body" constrainedElement="_rIEl8d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rIEl9d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))->asSequence()->any(true).oclAsType(consol::HospitalDischargeInstructionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rIEl8t6jEee0kIKIEebuqA" type="_lBergCUMEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rIEl896jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rIdngN6jEee0kIKIEebuqA" name="getHospitalDischargePhysicalSection" bodyCondition="_rIdng96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rIdng96jEee0kIKIEebuqA" name="body" constrainedElement="_rIdngN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rIdnhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))->asSequence()->any(true).oclAsType(consol::HospitalDischargePhysicalSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rIdngd6jEee0kIKIEebuqA" type="_WikGsCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rIdngt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rI6Tct6jEee0kIKIEebuqA" name="getHospitalDischargeStudiesSummarySection" bodyCondition="_rI6Tdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rI6Tdd6jEee0kIKIEebuqA" name="body" constrainedElement="_rI6Tct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rI6Tdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))->asSequence()->any(true).oclAsType(consol::HospitalDischargeStudiesSummarySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rI6Tc96jEee0kIKIEebuqA" type="_38AXoCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rI6TdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rJT8EN6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional" bodyCondition="_rJT8E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rJT8E96jEee0kIKIEebuqA" name="body" constrainedElement="_rJT8EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rJT8FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rJT8Ed6jEee0kIKIEebuqA" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rJT8Et6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rJwoAN6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional" bodyCondition="_rJwoA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rJwoA96jEee0kIKIEebuqA" name="body" constrainedElement="_rJwoAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rJwoBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rJwoAd6jEee0kIKIEebuqA" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rJwoAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rKMF0t6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional" bodyCondition="_rKMF1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rKMF1d6jEee0kIKIEebuqA" name="body" constrainedElement="_rKMF0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rKMF1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rKMF096jEee0kIKIEebuqA" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rKMF1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rKlucd6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_rKludN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rKludN6jEee0kIKIEebuqA" name="body" constrainedElement="_rKlucd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rKludd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rKluct6jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rKluc96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rK_-It6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_rK_-Jd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rK_-Jd6jEee0kIKIEebuqA" name="body" constrainedElement="_rK_-It6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rK_-Jt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rK_-I96jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rK_-JN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rLY_st6jEee0kIKIEebuqA" name="getSocialHistorySection" bodyCondition="_rLY_td6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rLY_td6jEee0kIKIEebuqA" name="body" constrainedElement="_rLY_st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rLY_tt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->any(true).oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rLY_s96jEee0kIKIEebuqA" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rLY_tN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tps1MN6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional" bodyCondition="_tps1M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tps1M96jEee0kIKIEebuqA" name="body" constrainedElement="_tps1MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tps1NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tps1Md6jEee0kIKIEebuqA" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tps1Mt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tqI6Et6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional" bodyCondition="_tqJhIt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tqJhIt6jEee0kIKIEebuqA" name="body" constrainedElement="_tqI6Et6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tqJhI96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tqJhIN6jEee0kIKIEebuqA" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqJhId6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_sHrUoBUSEeG6PvUxSTZnaw" name="Indication">
      <ownedComment xmi:id="_CjRfQB-YEeGtfPlBCjHWkw">
        <body>The Indication Observation documents the rationale for an activity. It can do this with the id element to reference a problem recorded elsewhere in the document or with a code and value to record the problem type and problem within the Indication. For example, the indication for a prescription of a painkiller might be a headache that is documented in the Problems Section</body>
      </ownedComment>
      <ownedRule xmi:id="_MtdoIB7kEeGEaLkc3UAsAg" name="IndicationCodeNullFlavor" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_RK-VQB7kEeGEaLkc3UAsAg">
          <language>OCL</language>
          <body>self.value.nullFlavor->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_prpEMt6jEee0kIKIEebuqA" name="IndicationTemplateId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_prpEM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.19')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_prujwN6jEee0kIKIEebuqA" name="IndicationClassCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_prvK0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_przcQN6jEee0kIKIEebuqA" name="IndicationMoodCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pr0DUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pr3tsN6jEee0kIKIEebuqA" name="IndicationId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pr3tsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_psbuYN6jEee0kIKIEebuqA" name="IndicationCodeP" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_psbuYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pr9NQN6jEee0kIKIEebuqA" name="IndicationCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pr9NQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '404684003' or value.code = '409586006' or value.code = '282291009' or value.code = '64572001' or value.code = '248536006' or value.code = '418799008' or value.code = '55607006' or value.code = '373930000'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ps8EsN6jEee0kIKIEebuqA" name="IndicationStatusCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ps8Esd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ptCLUN6jEee0kIKIEebuqA" name="IndicationEffectiveTime" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ptCLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ptHD0N6jEee0kIKIEebuqA" name="IndicationValue" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ptHD0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ptmMAN6jEee0kIKIEebuqA" name="IndicationValueP" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ptmzEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty())  and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_sHrUoRUSEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_VBXq8BUTEeG6PvUxSTZnaw" name="DrugVehicle">
      <ownedRule xmi:id="_G1AaMBq2EeGo461UQq-B1g" name="DrugVehiclePlayingEntityCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <ownedComment xmi:id="_rjDdYOMSEeGfv4R-kzpM0g">
          <body>This playingEntity/code is used to supply a coded term for the drug vehicle.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_IGiTgBq2EeGo461UQq-B1g">
          <language>OCL</language>
          <body>not self.playingEntity.oclIsUndefined() implies (self.playingEntity.code.isNullFlavorDefined() or self.playingEntity.code->size() =1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_WgMgsBq2EeGo461UQq-B1g" name="DrugVehiclePlayingEntityName" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Y9oMcBq2EeGo461UQq-B1g">
          <language>OCL</language>
          <body>not self.playingEntity.oclIsUndefined() implies self.playingEntity.name->size() =1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pugyAd6jEee0kIKIEebuqA" name="DrugVehicleTemplateId" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pugyAt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.24')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pumRkN6jEee0kIKIEebuqA" name="DrugVehicleClassCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pumRkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pup78N6jEee0kIKIEebuqA" name="DrugVehicleCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pup78d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '412307009' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOWIoN6jEee0kIKIEebuqA" name="DrugVehiclePlayingEntity" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOWIod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_VBXq8RUTEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_DpoGkBUUEeG6PvUxSTZnaw" name="MedicationDispense">
      <ownedRule xmi:id="_M6fUoDsiEeKK96MV1iYPgQ" name="MedicationDispenseContainsMedicationOrImmunization" constrainedElement="_iZPioB7lEeGEaLkc3UAsAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_M6fUoTsiEeKK96MV1iYPgQ">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation) xor self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_puu0cN6jEee0kIKIEebuqA" name="MedicationDispenseTemplateId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_puu0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.18')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pu0UAN6jEee0kIKIEebuqA" name="MedicationDispenseClassCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pu0UAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pu5MgN6jEee0kIKIEebuqA" name="MedicationDispenseEffectiveTime" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pu5Mgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (( not self.effectiveTime->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pu9d8N6jEee0kIKIEebuqA" name="MedicationDispenseId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pu9d8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pvAhQN6jEee0kIKIEebuqA" name="MedicationDispenseMoodCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pvAhQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentSubstanceMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pvEysN6jEee0kIKIEebuqA" name="MedicationDispenseRepeatNumber" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pvEysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pvIdEN6jEee0kIKIEebuqA" name="MedicationDispenseStatusCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pvIdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pvr2sN6jEee0kIKIEebuqA" name="MedicationDispenseQuantity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pvr2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qP9SMN6jEee0kIKIEebuqA" name="MedicationDispenseMedicationSupplyOrder" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qP9SMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_svMUwN6jEee0kIKIEebuqA" name="MedicationDispensePerformer" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_svMUwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DFq4N6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DFq4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DG5AN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DG5Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DHgEN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DHgEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DIHIN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DIHId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DJVQN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DJVQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DJ8UN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DJ8Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DKjYN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DKjYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DLKcN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DLKcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DLxgN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntityAddr" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DLxgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4DMYkN6jEee0kIKIEebuqA" name="MedicationDispensePerformerMedicationDispenseAssignedEntity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4DMYkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_DpoGkRUUEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_qP95QN6jEee0kIKIEebuqA" name="getMedicationSupplyOrder" bodyCondition="_qP95Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qP95Q96jEee0kIKIEebuqA" name="body" constrainedElement="_qP95QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qP95RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qP95Qd6jEee0kIKIEebuqA" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qP95Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_chEhQBUUEeG6PvUxSTZnaw" name="PreconditionForSubstanceAdministration">
      <ownedRule xmi:id="_pwcEod6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationTemplateId" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwcEot6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.25')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pwfH8N6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationCode" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwfH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pwiyUN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationText" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwiyUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pwmcsN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationValue" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pwmcsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value.oclIsUndefined() or self.value.isNullFlavorUndefined()) implies (self.value.oclIsTypeOf(datatypes::CD))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_chEhQRUUEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_hKgxMEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_PZBdMBUlEeGvPruliC3crg" name="PolicyActivity">
      <ownedComment xmi:id="_p8E5gFzAEeGt2doqSDULjA">
        <body>A policy activity represents the policy or program providing the coverage.</body>
      </ownedComment>
      <ownedRule xmi:id="_pxIBJN6jEee0kIKIEebuqA" name="PolicyActivityTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxIoMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.61')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pxM5oN6jEee0kIKIEebuqA" name="PolicyActivityClassCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxM5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pxQkAN6jEee0kIKIEebuqA" name="PolicyActivityMoodCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxQkAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pxU1cN6jEee0kIKIEebuqA" name="PolicyActivityId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxU1cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_px6EQN6jEee0kIKIEebuqA" name="PolicyActivityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_px6EQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pxZt8N6jEee0kIKIEebuqA" name="PolicyActivityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pxZt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '12' or value.code = '13' or value.code = '14' or value.code = '15' or value.code = '16' or value.code = '41' or value.code = '42' or value.code = '43' or value.code = '47' or value.code = 'AP' or value.code = 'C1' or value.code = 'CO' or value.code = 'CP' or value.code = 'D' or value.code = 'DB' or value.code = 'EP' or value.code = 'FF' or value.code = 'GP' or value.code = 'HM' or value.code = 'HN' or value.code = 'HS' or value.code = 'IN' or value.code = 'IP' or value.code = 'LC' or value.code = 'LD' or value.code = 'LI' or value.code = 'LT' or value.code = 'MA' or value.code = 'MB' or value.code = 'MC' or value.code = 'MH' or value.code = 'MI' or value.code = 'MP' or value.code = 'OT' or value.code = 'PE' or value.code = 'PL' or value.code = 'PP' or value.code = 'PR' or value.code = 'PS' or value.code = 'QM' or value.code = 'RP' or value.code = 'SP' or value.code = 'TF' or value.code = 'WC' or value.code = 'WU')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pyaakN6jEee0kIKIEebuqA" name="PolicyActivityStatusCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pyaakd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_slqlUN6jEee0kIKIEebuqA" name="PolicyActivityPayer" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_slqlUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->select(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_smg54N6jEee0kIKIEebuqA" name="PolicyActivityGuarantor" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_smg54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->select(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_spVkYN6jEee0kIKIEebuqA" name="PolicyActivityCoverage" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_spVkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::COV)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sqok4N6jEee0kIKIEebuqA" name="PolicyActivityHolder" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sqok4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::HLD)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s4xHgN6jEee0kIKIEebuqA" name="PolicyActivityEntryRelationship" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s4xukN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EKo8N6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EKo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ELQAN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ELQAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EMeIN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EMeId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ENFMN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ENFMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ENsQN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ENsQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EOTUN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EOTUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EPhcN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EPhcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EQIgN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EQIgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Es0cN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityPayerOrganizationName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EtbgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Etbgd6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Etbgt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EuCkN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EuCkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EupoN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Eupod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.110' and (value.code = 'AFFL' or value.code = 'AGNT' or value.code = 'CIT' or value.code = 'CRINV' or value.code = 'CRSPNSR' or value.code = 'SPNSR' or value.code = 'COVPTY' or value.code = 'EMP' or value.code = 'GUAR' or value.code = 'INVSBJ' or value.code = 'PAYOR' or value.code = 'LIC' or value.code = 'PAT' or value.code = 'PAYEE' or value.code = 'POLHOLD' or value.code = 'QUAL' or value.code = 'STD' or value.code = 'UNDWRT')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EvQsN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EvQsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Ev3wN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityTelecom" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Ev3wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Ev3wt6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityPayerOrganization" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Ev3w96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Ewe0N6jEee0kIKIEebuqA" name="PolicyActivityPayerTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Ewe0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ExF4N6jEee0kIKIEebuqA" name="PolicyActivityPayerTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ExF4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->reject(isDefined('typeCode') and typeCode=vocab::ParticipationPhysicalPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4EyUAN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4EyUAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FoBgN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FoBgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FookN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fookd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Fp2sN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fp2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FqdwN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fqdwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FrE0N6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FrE0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FsS8N6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FsS8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Fs6AN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fs6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FthEN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FthEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FuIIN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FuIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((performer.assignedEntity.assignedPerson->exists(not oclIsUndefined()) and performer.assignedEntity.assignedPerson.name->size() >0) or (performer.assignedEntity.representedOrganization->exists(not oclIsUndefined()) and performer.assignedEntity.representedOrganization.name->size() >0 ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FuvMN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FuvMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.code = 'GUAR' and value.codeSystem = '2.16.840.1.113883.5.110'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FvWQN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FvWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FvWQt6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FvWQ96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Fv9UN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityTelecom" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fv9Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FwkYN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FwkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FxLcN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FxLcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FxygN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Fxygd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(typeCode=vocab::ParticipationPhysicalPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4FzAoN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4FzAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Gm48N6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Gm48d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GoHEN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4GoHEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GouIN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4GouId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GpVMN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4GpVMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GqjUN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4GqjUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GrKYN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4GrKYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4GrxcN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Grxcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Gs_kN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Gs_kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HGBIN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HGoMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HGoMd6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HHPQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HHPQd6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HHPQt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and (value.code = 'FAMDEP' or value.code = 'FSTUD' or value.code = 'HANDIC' or value.code = 'INJ' or value.code = 'PSTUD' or value.code = 'SELF' or value.code = 'SPON' or value.code = 'STUD')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HH2UN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HH2Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HIdYN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HIdYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HJEcN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HJEcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HJrgN6jEee0kIKIEebuqA" name="PolicyActivityCoverageLowTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HJrgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(not time.oclIsUndefined() implies not time.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HKSkN6jEee0kIKIEebuqA" name="PolicyActivityCoverageHighTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HKSkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(not time.oclIsUndefined() implies not time.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HK5oN6jEee0kIKIEebuqA" name="PolicyActivityCoverageTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HK5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.89'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HLgsN6jEee0kIKIEebuqA" name="PolicyActivityCoverageTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HLgsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(typeCode=vocab::ParticipationType::COV)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HMu0N6jEee0kIKIEebuqA" name="PolicyActivityCoverageTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HMu0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4HNV4N6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRole" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4HNV4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ICcUN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ICcUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IDDYN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IDDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IDqcN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IDqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IE4kN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IE4kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IFfoN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IFfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IGGsN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IGGsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IHU0N6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IHU0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IH74N6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IH74d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IIi8N6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IIi8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IJKAN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRoleAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IJKAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IKYIN6jEee0kIKIEebuqA" name="PolicyActivityHolderTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IKYId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD)->select(typeCode=vocab::ParticipationType::HLD)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.90'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IK_MN6jEee0kIKIEebuqA" name="PolicyActivityHolderTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IK_Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD)->select(typeCode=vocab::ParticipationType::HLD)->reject(typeCode=vocab::ParticipationType::HLD)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ILmQN6jEee0kIKIEebuqA" name="PolicyActivityHolderTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ILmQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD)->select(typeCode=vocab::ParticipationType::HLD)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4IMNUN6jEee0kIKIEebuqA" name="PolicyActivityHolderHolderRole" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4IMNUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::HLD)->select(typeCode=vocab::ParticipationType::HLD)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ImdAN6jEee0kIKIEebuqA" name="PolicyActivityEntryRelationshipTargetActActivity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ImdAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->reject(act->one(a : cda::Act | a.oclIsTypeOf(consol::AuthorizationActivity) or (a.classCode=vocab::x_ActClassDocumentEntryAct::ACT and a.moodCode=vocab::x_DocumentActMood::DEF)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4InEEN6jEee0kIKIEebuqA" name="PolicyActivityEntryRelationshipDescriptionCoveragePlan" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4InEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->reject(act->select(a : cda::Act | a.classCode=vocab::x_ActClassDocumentEntryAct::ACT and (a.moodCode=vocab::x_DocumentActMood::DEF))->forAll(id->size() > 0 and text->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4InrIN6jEee0kIKIEebuqA" name="PolicyActivityEntryRelationshipTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4InrId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_PZBdMRUlEeGvPruliC3crg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Cg3pkBUmEeGvPruliC3crg" name="CoverageActivity">
      <ownedRule xmi:id="_xtqFkDZXEeGUovy31cP2ng" name="CoverageActivityCoverageActivityRelationshipSequenceNumber" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gLV0DZXEeGUovy31cP2ng">
          <language>OCL</language>
          <body>self.entryRelationship->forAll(er : cda::EntryRelationship | not er.sequenceNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p2j6wN6jEee0kIKIEebuqA" name="CoverageActivityTemplateId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p2j6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.60')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p2ozQN6jEee0kIKIEebuqA" name="CoverageActivityClassCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p2ozQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p2trwN6jEee0kIKIEebuqA" name="CoverageActivityMoodCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p2trwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p2ykQN6jEee0kIKIEebuqA" name="CoverageActivityId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p2ykQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p221sN6jEee0kIKIEebuqA" name="CoverageActivityCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p221sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p288UN6jEee0kIKIEebuqA" name="CoverageActivityStatusCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p288Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p3g9AN6jEee0kIKIEebuqA" name="CoverageActivityPolicyActivity" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p3g9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PolicyActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Cg3pkRUmEeGvPruliC3crg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_p3hkEN6jEee0kIKIEebuqA" name="getPolicyActivities" bodyCondition="_p3hkE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p3hkE96jEee0kIKIEebuqA" name="body" constrainedElement="_p3hkEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p3hkFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PolicyActivity)).oclAsType(consol::PolicyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p3hkEd6jEee0kIKIEebuqA" type="_PZBdMBUlEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p3hkEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_5Ha7ABUyEeGbmN_W114JUw" name="ProblemObservation">
      <ownedComment xmi:id="_-wq7oCAsEeGetMjKLkqR8g">
        <body>&lt;p>A problem is a clinical statement that a clinician has noted. In health care it is a condition that requires monitoring or diagnostic, therapeutic, or educational action. It also refers to any unmet or partially met basic human need.&lt;/p>&#xD;
&lt;p>A Problem Observation is required to be wrapped in an act wrapper in locations such as the Problem Section, Allergies Section, and Hospital Discharge Diagnosis Section, where the type of problem needs to be identified or the condition tracked. A Problem Observation can be a valid &quot;standalone&quot; template instance in cases where a simple problem observation is to be sent.&lt;/p>&#xD;
&lt;p>The negationInd attribute, if true, specifies that the problem indicated was observed to not have occurred (which is subtly but importantly different from having not been observed). NegationInd='true' is an acceptable way to make a clinical assertion that something did not occur, for example, &quot;no diabetes&quot;.&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_vaH7gCBEEeG938evaWkvcA" name="ProblemObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vaH7gSBEEeG938evaWkvcA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_IO0RwOJkEeG3cO7ebC3QuA" name="ProblemObservationTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_WnbWEOJkEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_TFQWECf3EeGO5_JBy9h6BA" name="ProblemObservationHasTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VepPUCf3EeGO5_JBy9h6BA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_4wYCAwEeGetMjKLkqR8g" name="ProblemObservationHasOnsetDate">
        <ownedComment xmi:id="_C2lzYOJlEeG3cO7ebC3QuA">
          <body>This field represents the onset date (CONF:16882)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_4wYSAwEeGetMjKLkqR8g">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6nx20CAwEeGetMjKLkqR8g" name="ProblemObservationHasResolutionDate">
        <ownedComment xmi:id="_J5q0kOJlEeG3cO7ebC3QuA">
          <body>If the problem is resolved, record the resolution date in effectiveTime/high. If the problem is known to be resolved but the resolution date is not known, use @nullFlavor=&quot;UNK&quot; (CONF:16883)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6nx20SAwEeGetMjKLkqR8g">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_jlZuoCf3EeGO5_JBy9h6BA" name="ProblemObservationValueNullFlavor" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1sJ0Cf3EeGO5_JBy9h6BA">
          <language>OCL</language>
          <body>self.value->forAll(val | not val.isNullFlavorUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1fQFECf3EeGO5_JBy9h6BA" name="ProblemObservationAgeObservationInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48XFICf3EeGO5_JBy9h6BA">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | not er.observation.oclIsUndefined() and er.observation.oclIsKindOf(consol::AgeObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_nck40OJlEeG3cO7ebC3QuA" name="ProblemObservationValueTranslation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYoaQOJlEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).translation->size()>0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uQVroOJlEeG3cO7ebC3QuA" name="ProblemObservationValueTranslationCode" constrainedElement="_nck40OJlEeG3cO7ebC3QuA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v91IMOJlEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).translation->size()>0 implies self.value.oclAsType(datatypes::CD).translation->forAll(code->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p4fNYN6jEee0kIKIEebuqA" name="ProblemObservationTemplateId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p4fNYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p4vFAN6jEee0kIKIEebuqA" name="ProblemObservationClassCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p4vFAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p40kkN6jEee0kIKIEebuqA" name="ProblemObservationMoodCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p40kkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p46EIN6jEee0kIKIEebuqA" name="ProblemObservationNegationInd" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p46EId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p4-8oN6jEee0kIKIEebuqA" name="ProblemObservationId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p4-8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p5jkYN6jEee0kIKIEebuqA" name="ProblemObservationCodeP" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p5jkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p5CnAN6jEee0kIKIEebuqA" name="ProblemObservationCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p5CnAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '404684003' or value.code = '409586006' or value.code = '282291009' or value.code = '64572001' or value.code = '248536006' or value.code = '418799008' or value.code = '55607006' or value.code = '373930000'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p6Fv4N6jEee0kIKIEebuqA" name="ProblemObservationText" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p6Fv4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p6KBUN6jEee0kIKIEebuqA" name="ProblemObservationStatusCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p6KBUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p6Pg4N6jEee0kIKIEebuqA" name="ProblemObservationEffectiveTime" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p6Pg4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p6TyUN6jEee0kIKIEebuqA" name="ProblemObservationValue" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p6TyUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p6_HwN6jEee0kIKIEebuqA" name="ProblemObservationValueP" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p6_Hwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p79YIN6jEee0kIKIEebuqA" name="ProblemObservationAgeObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p79YId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AgeObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p8x3gN6jEee0kIKIEebuqA" name="ProblemObservationHealthStatusObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8x3gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::HealthStatusObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p-Dp4N6jEee0kIKIEebuqA" name="ProblemObservationProblemStatus" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-Dp4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemStatus) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_5Ha7ARUyEeGbmN_W114JUw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_p79YIt6jEee0kIKIEebuqA" name="getAgeObservation" bodyCondition="_p79YJd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p79YJd6jEee0kIKIEebuqA" name="body" constrainedElement="_p79YIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p79YJt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AgeObservation))->asSequence()->any(true).oclAsType(consol::AgeObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p79YI96jEee0kIKIEebuqA" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p79YJN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_p8yekN6jEee0kIKIEebuqA" name="getHealthStatusObservation" bodyCondition="_p8yek96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p8yek96jEee0kIKIEebuqA" name="body" constrainedElement="_p8yekN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8yelN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation))->asSequence()->any(true).oclAsType(consol::HealthStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p8yekd6jEee0kIKIEebuqA" type="_2ExXsBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p8yekt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_p-EQ8N6jEee0kIKIEebuqA" name="getProblemStatus" bodyCondition="_p-EQ896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_p-EQ896jEee0kIKIEebuqA" name="body" constrainedElement="_p-EQ8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_p-EQ9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemStatus))->asSequence()->any(true).oclAsType(consol::ProblemStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_p-EQ8d6jEee0kIKIEebuqA" type="_SjN_8BUzEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p-EQ8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_SjN_8BUzEeGbmN_W114JUw" name="ProblemStatus">
      <ownedComment xmi:id="_DRGcECA8EeG9GZYpu7WBOQ">
        <body>&lt;p>&#xD;
The Problem Status records whether the indicated problem is active, inactive, or resolved.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
THIS TEMPLATE HAS BEEN DEPRECATED IN C-CDA R2 AND MAY BE DELETED FROM A FUTURE RELEASE OF THIS IMPLEMENTATION GUIDE. USE OF THIS TEMPLATE IS NOT RECOMMENDED.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Reason for deprecation: Per the explanation in Volume 1, Section 3.2 &quot;Determining a Clinical Statement's Status&quot;, the status of a problem is determined based on attributes of the Problem Observation&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_NGUbACp_EeGiFpKeZIy4Pg" name="ProblemStatusTextReference" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_QDaeQCp_EeGiFpKeZIy4Pg">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z76qMOJsEeG3cO7ebC3QuA" name="ProblemStatusReferenceValue" constrainedElement="_NGUbACp_EeGiFpKeZIy4Pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4LlIkOJsEeG3cO7ebC3QuA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_S6G-kCp_EeGiFpKeZIy4Pg" name="ProblemStatusTextReferenceValue" constrainedElement="_NGUbACp_EeGiFpKeZIy4Pg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_UfbWkCp_EeGiFpKeZIy4Pg">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p8yeld6jEee0kIKIEebuqA" name="ProblemStatusTemplateId" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8yelt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p84lMN6jEee0kIKIEebuqA" name="ProblemStatusClassCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p84lMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p88PkN6jEee0kIKIEebuqA" name="ProblemStatusMoodCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p88Pkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p8_58N6jEee0kIKIEebuqA" name="ProblemStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p8_58d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p9GAkN6jEee0kIKIEebuqA" name="ProblemStatusText" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p9GAkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p9JD4N6jEee0kIKIEebuqA" name="ProblemStatusStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p9Jq8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p9PKgN6jEee0kIKIEebuqA" name="ProblemStatusValue" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p9PKgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '55561003' or value.code = '73425007' or value.code = '413322009')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_SjN_8RUzEeGbmN_W114JUw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="__qYdcBVNEeGbmN_W114JUw" name="ImmunizationRefusalReason">
      <ownedRule xmi:id="_qBibsN6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonTemplateId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBjCwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.53')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qBmGEN6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonClassCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBmGEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qBpwcN6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qBpwcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.8' and (value.code = 'IMMUNE' or value.code = 'MEDPREC' or value.code = 'OSTOCK' or value.code = 'PATOBJ' or value.code = 'PHILISOP' or value.code = 'RELIG' or value.code = 'VACEFF' or value.code = 'VACSAF'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCFOQN6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCFOQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCIRkN6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonMoodCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCIRkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCL78N6jEee0kIKIEebuqA" name="ImmunizationRefusalReasonStatusCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCL78d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__qr_cBVNEeGbmN_W114JUw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_daTqABVOEeGbmN_W114JUw" name="ImmunizationMedicationInformation">
      <ownedComment xmi:id="_JOE1QBq0EeGo461UQq-B1g">
        <body>The Immunization Medication Information represents product information about the immunization substance. The vaccine manufacturer and vaccine lot number are typically recorded in the medical record and should be included if known.</body>
      </ownedComment>
      <ownedRule xmi:id="_qCs5UN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationTemplateId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCs5Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.54')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCv8oN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationClassCode" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCv8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassManufacturedProduct::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qCy_8N6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qCy_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qRj0sN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationManufacturerOrganization" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qRj0sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sUjnMN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationManufacturedMaterial" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sUjnMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4NZdcN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4NZdcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4NaEgN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4NaEgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1 implies code.originalText->one(reference->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4NarkN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Narkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText.reference->size() = 1 implies code.originalText.reference.value->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4NbSoN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4NbSod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code->size() = 1 implies code.translation->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4NbSot6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4NbSo96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.12.292' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Nb5sN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Nb5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((lotNumberText.oclIsUndefined() or lotNumberText.isNullFlavorUndefined()) implies (not lotNumberText.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_daTqARVOEeGbmN_W114JUw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_p6Zs8EcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_bGzYgBVdEeGQCvUGzi1kDQ" name="AllergiesSectionEntriesOptional">
      <ownedComment xmi:id="_bGzYgRVdEeGQCvUGzi1kDQ" annotatedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <body>This section lists and describes any medication allergies, adverse reactions, idiosyncratic reactions, anaphylaxis/anaphylactoid reactions to food items, and metabolic variations or adverse reactions/allergies to other substances (such as latex, iodine, tape adhesives) used to assure the safety of health care delivery. At a minimum, it should list currently active and any relevant historical allergies and adverse reactions.</body>
      </ownedComment>
      <ownedRule xmi:id="_qENVMN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qENVMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEQYgN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEQYgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEVRAN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCodeP" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEVRAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEZicN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalTitle" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEZicd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEdM0N6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalText" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEdM0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qZGAEN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalAllergyProblemAct" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qZGAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AllergyProblemAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_FHCOMBVgEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qZGAEt6jEee0kIKIEebuqA" name="getAllergyProblemActs" bodyCondition="_qZGAFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qZGAFd6jEee0kIKIEebuqA" name="body" constrainedElement="_qZGAEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qZGnIN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AllergyProblemAct)).oclAsType(consol::AllergyProblemAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qZGAE96jEee0kIKIEebuqA" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qZGAFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_iAoXEBVdEeGQCvUGzi1kDQ" name="MedicationsSectionEntriesOptional">
      <ownedComment xmi:id="_S0qoIB-uEeGKirKJsFylGA">
        <body>The Medications section defines a patient's current medications and pertinent medication history. At a minimum, the currently active medications are to be listed, with an entire medication history as an option. The section may also include a patient's prescription and dispense history.&#xD;
This section requires that there be either an entry indicating the subject is not known to be on any medications, or that there be entries summarizing the subject's medications.</body>
      </ownedComment>
      <ownedRule xmi:id="_qEfCAN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEfCAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEisYN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEisYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEnk4N6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCodeP" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEnk4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEr2UN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalTitle" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEr2Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qEvgsN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalText" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qEvgsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qZfosN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalMedicationActivity" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qZfosd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_iAoXIhVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qZgPwN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_qZgPw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qZgPw96jEee0kIKIEebuqA" name="body" constrainedElement="_qZgPwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qZgPxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qZgPwd6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qZgPwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_naxrkBVdEeGQCvUGzi1kDQ" name="ProblemSectionEntriesOptional">
      <ownedComment xmi:id="_meK94CAoEeGetMjKLkqR8g">
        <body>This section lists and describes all relevant clinical problems at the time the document is generated. At a minimum, all pertinent current and historical problems should be listed.</body>
      </ownedComment>
      <ownedRule xmi:id="_qExV4N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qExV4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qE0ZMN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCode" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qE0ZMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qE4qoN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qE4qod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qE88EN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTitle" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qE88Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFAmcN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalText" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFAmcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qbga4N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qbga4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProblemConcernAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_naxrlxVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qbhB8N6jEee0kIKIEebuqA" name="getProblemConcerns" bodyCondition="_qbhB896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qbhB896jEee0kIKIEebuqA" name="body" constrainedElement="_qbhB8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qbhB9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct)).oclAsType(consol::ProblemConcernAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qbhB8d6jEee0kIKIEebuqA" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qbhB8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_s9Ig4BVdEeGQCvUGzi1kDQ" name="ProceduresSectionEntriesOptional">
      <ownedComment xmi:id="_s9Ig4RVdEeGQCvUGzi1kDQ" annotatedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <body>This section defines all interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated. The section is intended to include notable procedures, but can contain all procedures for the period of time being summarized. The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore this section contains procedure templates represented with three RIM classes: Act. Observation, and Procedure. Procedure act is for procedures the alter that physical condition of a patient (Splenectomy). Observation act is for procedures that result in new information about a patient but do not cause physical alteration (EEG). Act is for all other types of procedures (dressing change).&#xD;
The length of an encounter is documented in the documentationOf/encompassingEncounter/effectiveTime and length of service in documentationOf/ServiceEvent/effectiveTime.</body>
      </ownedComment>
      <ownedRule xmi:id="_qFCboN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFCbod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.7')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFFe8N6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFFe8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFJwYN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFJwYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFOB0N6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalTitle" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFOB0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFRFIN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalText" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFRFId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qSBuwN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityProcedure" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qSBuwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qSb-cN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityObservation" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qSb-cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProcedureActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qS1nEN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityAct" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qS1nEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProcedureActivityAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_s9Ig6RVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qSCV0N6jEee0kIKIEebuqA" name="getProcedureActivityProcedures" bodyCondition="_qSCV096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qSCV096jEee0kIKIEebuqA" name="body" constrainedElement="_qSCV0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qSCV1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure)).oclAsType(consol::ProcedureActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qSCV0d6jEee0kIKIEebuqA" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qSCV0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qSb-ct6jEee0kIKIEebuqA" name="getProcedureActivityObservations" bodyCondition="_qSb-dd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qSb-dd6jEee0kIKIEebuqA" name="body" constrainedElement="_qSb-ct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qSb-dt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation)).oclAsType(consol::ProcedureActivityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qSb-c96jEee0kIKIEebuqA" type="_Aj7JkBg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qSb-dN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qS1nEt6jEee0kIKIEebuqA" name="getProcedureActivityActs" bodyCondition="_qS1nFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qS1nFd6jEee0kIKIEebuqA" name="body" constrainedElement="_qS1nEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qS1nFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct)).oclAsType(consol::ProcedureActivityAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qS1nE96jEee0kIKIEebuqA" type="_awdH4Bg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qS1nFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_xGqiEBVdEeGQCvUGzi1kDQ" name="ResultsSectionEntriesOptional">
      <ownedComment xmi:id="_xGqiERVdEeGQCvUGzi1kDQ" annotatedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <body>&lt;p>
The Results section contains the results of observations generated by laboratories, imaging procedures, and other procedures. The scope includes observations such as hematology, chemistry, serology, virology, toxicology, microbiology, plain x-ray, ultrasound, CT, MRI, angiography, echocardiography, nuclear medicine, pathology, and procedure observations. The section often includes notable results such as abnormal values or relevant trends, and could contain all results for the period of time being documented.
&lt;/p>
&lt;p>
Laboratory results are typically generated by laboratories providing analytic services in areas such as chemistry, hematology, serology, histology, cytology, anatomic pathology, microbiology, and/or virology. These observations are based on analysis of specimens obtained from the patient and submitted to the laboratory.
&lt;/p>
&lt;p>
Imaging results are typically generated by a clinician reviewing the output of an imaging procedure, such as where a cardiologist reports the left ventricular ejection fraction based on the review of a cardiac echocardiogram.
Procedure results are typically generated by a clinician to provide more granular information about component observations made during  a procedure, such as where a gastroenterologist reports the size of a polyp observed during a colonoscopy.
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_qFS6UN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFS6Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.3')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFV9oN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCode" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFV9od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFaPEN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFaPEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFeggN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTitle" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFeggd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFiK4N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalText" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFiK4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qaSS4N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalResultOrganizer" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qaSS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::ResultOrganizer))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_xGqiFRVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qaS58N6jEee0kIKIEebuqA" name="getResultOrganizers" bodyCondition="_qaS5896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qaS5896jEee0kIKIEebuqA" name="body" constrainedElement="_qaS58N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qaS59N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer)).oclAsType(consol::ResultOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qaS58d6jEee0kIKIEebuqA" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qaS58t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_1RZdIBVdEeGQCvUGzi1kDQ" name="AdvanceDirectivesSectionEntriesOptional">
      <ownedComment xmi:id="_1RZdIRVdEeGQCvUGzi1kDQ" annotatedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <body>&lt;p>
This section contains data defining the patient's advance directives and any reference to supporting documentation. The most recent and up-to-date directives are required, if known, and should be listed in as much detail as possible. This section contains data such as the existence of living wills, healthcare proxies, and CPR and resuscitation status. If referenced documents are available, they can be included in the CCD exchange package. 
&lt;/p>
&lt;p>
NOTE: The descriptions in this section differentiate between &quot;advance directives&quot; and &quot;advance directive documents&quot;. The former are the directions whereas the latter are legal documents containing those directions. Thus, an advance directive might be &quot;no cardiopulmonary resuscitation&quot;, and this directive might be stated in a legal advance directive document.
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_qFkAEN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFkAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.21')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFnqcN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFnqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFr74N6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCodeP" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFsi8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFw0YN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalTitle" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFw0Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qFz3sN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalText" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qFz3sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qfLZ8N6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qfLZ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AdvanceDirectiveObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_1RZdJhVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qfLZ8t6jEee0kIKIEebuqA" name="getAdvanceDirectiveObservations" bodyCondition="_qfLZ9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qfLZ9d6jEee0kIKIEebuqA" name="body" constrainedElement="_qfLZ8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qfLZ9t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation)).oclAsType(consol::AdvanceDirectiveObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qfLZ896jEee0kIKIEebuqA" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qfLZ9N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4yj2wBVdEeGQCvUGzi1kDQ" name="EncountersSectionEntriesOptional">
      <ownedComment xmi:id="_4yj2wRVdEeGQCvUGzi1kDQ" annotatedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <body>This section lists and describes any healthcare encounters pertinent to the patient's current health status or historical health history. An Encounter is an interaction, regardless of the setting, between a patient and a practitioner who is vested with primary responsibility for diagnosing, evaluating, or treating the patient's condition. It may include visits, appointments, as well as non face-to-face interactions. It is also a contact between a patient and a practitioner who has primary responsibility for assessing and treating the patient at a given contact, exercising independent judgment. This section may contain all encounters for the time period being summarized, but should include notable encounters.</body>
      </ownedComment>
      <ownedRule xmi:id="_qF1s4N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qF2T8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.22')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qF5XQN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCode" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qF5XQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qF9osN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qF9osd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGB6IN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTitle" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGB6Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGFkgN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalText" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGFkgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qtRgUN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalEncounterActivities" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qtRgUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::EncounterActivities))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4yj2xxVdEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qtSHYN6jEee0kIKIEebuqA" name="getEncounterActivitiess" bodyCondition="_qtSHY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qtSHY96jEee0kIKIEebuqA" name="body" constrainedElement="_qtSHYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qtSHZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivities)).oclAsType(consol::EncounterActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qtSHYd6jEee0kIKIEebuqA" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qtSHYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_EuPloBVeEeGQCvUGzi1kDQ" name="ImmunizationsSectionEntriesOptional">
      <ownedComment xmi:id="_eb3_0BqgEeGo461UQq-B1g">
        <body>The Immunizations section defines a patient's current immunization status and pertinent immunization history. The primary use case for the Immunization section is to enable communication of a patient's immunization status. The section should include current immunization status, and may contain the entire immunization history that is relevant to the period of time being summarized.</body>
      </ownedComment>
      <ownedRule xmi:id="_qGHZsN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGHZsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGKdAN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGKdAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGOucN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCodeP" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGOucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGS_4N6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalTitle" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGS_4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGWqQN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalText" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGWqQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qbGyQN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalImmunizationActivity" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qbGyQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_EuPlsBVeEeGQCvUGzi1kDQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qbHZUN6jEee0kIKIEebuqA" name="getImmunizationActivities" bodyCondition="_qbHZU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qbHZU96jEee0kIKIEebuqA" name="body" constrainedElement="_qbHZUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qbHZVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity)).oclAsType(consol::ImmunizationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qbHZUd6jEee0kIKIEebuqA" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qbHZUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_bRH8sBVeEeGQCvUGzi1kDQ" name="VitalSignsSectionEntriesOptional">
      <ownedComment xmi:id="_LjYecBwiEeG_RY8fzJjtMw">
        <body>&lt;p>The Vital Signs section contains relevant vital signs for the context and use case of the document type, such as blood pressure, heart rate, respiratory rate, height, weight, body mass index, head circumference, and pulse oximetry. The section should include notable vital signs such as the most recent, maximum and/or minimum, baseline, or relevant trends.&lt;/p>

&lt;p>Vital signs are represented in the same way as other results, but are aggregated into their own section to follow clinical conventions.&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_qGYfcN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGYfcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGbiwN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGbiwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGgbQN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCodeP" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGgbQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGkssN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTitle" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGkssd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGoXEN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalText" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGoXEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qTPPsN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalVitalSignsOrganizer" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qTPPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::VitalSignsOrganizer))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_bRH8uhVeEeGQCvUGzi1kDQ">
        <ownedComment xmi:id="_sTsugBxREeG8X6LmnKJ43Q">
          <body>skip</body>
        </ownedComment>
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qTPPst6jEee0kIKIEebuqA" name="getVitalSignsOrganizers" bodyCondition="_qTP2wN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qTP2wN6jEee0kIKIEebuqA" name="body" constrainedElement="_qTPPst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qTP2wd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::VitalSignsOrganizer)).oclAsType(consol::VitalSignsOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qTPPs96jEee0kIKIEebuqA" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qTPPtN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Aj7JkBg4EeGs5a462vYX5Q" name="ProcedureActivityObservation">
      <ownedComment xmi:id="_RlVIQBxuEeGXP8PxDYviDg">
        <body>The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g. splenectomy). &#xD;
This clinical statement represents procedures that result in new information about the patient that cannot be classified as a procedure according to the HL7 RIM. Examples of these procedures are diagnostic imaging procedures, EEGs and EKGs.</body>
      </ownedComment>
      <ownedRule xmi:id="_-WpQYBxuEeGXP8PxDYviDg" name="ProcedureActivityObservationCodeCodeSystems" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-WpQYRxuEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' xor self.code.codeSystem = '2.16.840.1.113883.6.96' xor self.code.codeSystem = '2.16.840.1.113883.6.12' xor self.code.codeSystem = '2.16.840.1.113883.6.4'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gpDwsBxvEeGXP8PxDYviDg" name="ProcedureActivityObservationCodeOriginalText" constrainedElement="_qGzKgBrPEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gpDwsRxvEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not code.oclIsUndefined() implies not code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_iKsikBxvEeGXP8PxDYviDg" name="ProcedureActivityObservationOriginalTextReference" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_iKsikRxvEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies self.code.originalText->one(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Q_qfQOV4EeGpoIKFyl7L7w" name="ProcedureActivityObservationOriginalTextReferenceValue" constrainedElement="_iKsikBxvEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VVR0oOV4EeGpoIKFyl7L7w">
          <language>OCL</language>
          <body>self.code.originalText.reference->size() = 1 implies self.code.originalText.reference.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_jzsgsBxvEeGXP8PxDYviDg" name="ProcedureActivityObservationReferenceValue" constrainedElement="_WEQMwBrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_jzsgsRxvEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oJm7kBxwEeGXP8PxDYviDg" name="ProcedureActivityObservationEncounterInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oJm7kRxwEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.encounter->size() > 0)->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_p26x8BxwEeGXP8PxDYviDg" name="ProcedureActivityObservationServiceDeliveryLocationTypeCode" constrainedElement="_9s2SABxZEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_p26x8RxwEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rOfo4BxwEeGXP8PxDYviDg" name="ProcedureActivityObservationInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rOfo4RxwEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qGqMQN6jEee0kIKIEebuqA" name="ProcedureActivityObservationTemplateId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qGqzUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.13')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qG1ycN6jEee0kIKIEebuqA" name="ProcedureActivityObservationClassCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qG1ycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qG5c0N6jEee0kIKIEebuqA" name="ProcedureActivityObservationMoodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qG5c0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_ActMoodDocumentObservation) and &#xD;
let value : vocab::x_ActMoodDocumentObservation = self.moodCode.oclAsType(vocab::x_ActMoodDocumentObservation) in &#xD;
value = vocab::x_ActMoodDocumentObservation::EVN or value = vocab::x_ActMoodDocumentObservation::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qHVhsN6jEee0kIKIEebuqA" name="ProcedureActivityObservationId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qHVhsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qHYlAN6jEee0kIKIEebuqA" name="ProcedureActivityObservationCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qHYlAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qHboUN6jEee0kIKIEebuqA" name="ProcedureActivityObservationStatusCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qHboUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qH3tMN6jEee0kIKIEebuqA" name="ProcedureActivityObservationEffectiveTime" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qH3tMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qIW1YN6jEee0kIKIEebuqA" name="ProcedureActivityObservationPriorityCodeP" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qIW1Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qH7XkN6jEee0kIKIEebuqA" name="ProcedureActivityObservationPriorityCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qH7Xkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.7' and (value.code = 'A' or value.code = 'CR' or value.code = 'CS' or value.code = 'CSP' or value.code = 'CSR' or value.code = 'EL' or value.code = 'EM' or value.code = 'P' or value.code = 'PRN' or value.code = 'R' or value.code = 'RR' or value.code = 'S' or value.code = 'T' or value.code = 'UD' or value.code = 'UR'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qIyTMN6jEee0kIKIEebuqA" name="ProcedureActivityObservationValue" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qIyTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qI19kN6jEee0kIKIEebuqA" name="ProcedureActivityObservationMethodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qI19kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qJUesN6jEee0kIKIEebuqA" name="ProcedureActivityObservationTargetSiteCodeP" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qJUesd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qI5n8N6jEee0kIKIEebuqA" name="ProcedureActivityObservationTargetSiteCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qI5n8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qWSjsN6jEee0kIKIEebuqA" name="ProcedureActivityObservationPerformer" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qWSjsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qWrlQN6jEee0kIKIEebuqA" name="ProcedureActivityObservationServiceDeliveryLocation" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qWsMUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qXF08N6jEee0kIKIEebuqA" name="ProcedureActivityObservationInstructions" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qXF08d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qXjvAN6jEee0kIKIEebuqA" name="ProcedureActivityObservationIndication" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qXjvAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qX8wkN6jEee0kIKIEebuqA" name="ProcedureActivityObservationMedicationActivity" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qX8wkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_swy3QN6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationship" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_swy3Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Osd8N6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Osd8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OtFAN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationName" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OtFAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OtFAt6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationTelecom" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OtsEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OtsEd6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationAddr" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OtsEt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OuTIN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OuTId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Ou6MN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Ou6Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OvhQN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OvhQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OwIUN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityRepresentedOrganization" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OwIUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4OwIUt6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerAssignedEntity" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4OwIU96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4PlOwN6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterClassCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4PlOwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(classCode=vocab::ActClass::ENC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Pl10N6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterMoodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Pl10d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(moodCode=vocab::x_DocumentEncounterMood::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Pmc4N6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Pmc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4PnD8N6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipInversionInd" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4PnD8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(not inversionInd.oclIsUndefined() and inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4PnD8t6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipTypeCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4PnD896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4PnrAN6jEee0kIKIEebuqA" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounter" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4PnrAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(encounter->one(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Aj7JkRg4EeGs5a462vYX5Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qWsMUd6jEee0kIKIEebuqA" name="getServiceDeliveryLocations" bodyCondition="_qWsMVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qWsMVN6jEee0kIKIEebuqA" name="body" constrainedElement="_qWsMUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qWsMVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qWsMUt6jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qWsMU96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qXGcAN6jEee0kIKIEebuqA" name="getInstructions" bodyCondition="_qXGcA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qXGcA96jEee0kIKIEebuqA" name="body" constrainedElement="_qXGcAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qXGcBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qXGcAd6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qXGcAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qXjvAt6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_qXjvBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qXjvBd6jEee0kIKIEebuqA" name="body" constrainedElement="_qXjvAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qXjvBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qXjvA96jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qXjvBN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qX9XoN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_qX9Xo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qX9Xo96jEee0kIKIEebuqA" name="body" constrainedElement="_qX9XoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qX9XpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qX9Xod6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qX9Xot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_awdH4Bg4EeGs5a462vYX5Q" name="ProcedureActivityAct">
      <ownedComment xmi:id="_95KuYBxnEeGXP8PxDYviDg">
        <body>The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g. splenectomy). &#xD;
This clinical statement represents any procedure that cannot be classified as an observation or a procedure according to the HL7 RIM. Examples of these procedures are a dressing change, teaching or feeding a patient or providing comfort measures.</body>
      </ownedComment>
      <ownedRule xmi:id="_oGW3cBxpEeGXP8PxDYviDg" name="ProcedureActivityActCodeOriginalText" constrainedElement="_qGzKgBrPEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oGW3cRxpEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not code.oclIsUndefined() implies not code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rX9yIBxpEeGXP8PxDYviDg" name="ProcedureActivityActOriginalTextReference" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rX9yIRxpEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies self.code.originalText->one(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_XONdcOV-EeGpoIKFyl7L7w" name="ProcedureActivityActOriginalTextReferenceValue" constrainedElement="_rX9yIBxpEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_e9F0sOV-EeGpoIKFyl7L7w">
          <language>OCL</language>
          <body>self.code.originalText.reference->size() = 1 implies self.code.originalText.reference.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0i4pkBxpEeGXP8PxDYviDg" name="ProcedureActivityActReferenceValue" constrainedElement="_WEQMwBrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0i4pkRxpEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ilhFEBxpEeGXP8PxDYviDg" name="ProcedureActivityActCodeCodeSystems" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ilhFERxpEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' xor self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_C9KP4BxsEeGXP8PxDYviDg" name="ProcedureActivityActServiceDeliveryLocationTypeCode" constrainedElement="_9s2SABxZEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_C9KP4RxsEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ATZYUBxsEeGXP8PxDYviDg" name="ProcedureActivityActEncounterInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ATZYURxsEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.encounter->size() > 0)->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zFL1IBxsEeGXP8PxDYviDg" name="ProcedureActivityActInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zFL1IRxsEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qKe8UN6jEee0kIKIEebuqA" name="ProcedureActivityActTemplateId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qKfjYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.12')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qKp7cN6jEee0kIKIEebuqA" name="ProcedureActivityActClassCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qKp7cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qKtl0N6jEee0kIKIEebuqA" name="ProcedureActivityActMoodCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qKtl0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::EVN or value = vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qLLf4N6jEee0kIKIEebuqA" name="ProcedureActivityActId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qLLf4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qLOjMN6jEee0kIKIEebuqA" name="ProcedureActivityActCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qLOjMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qLRmgN6jEee0kIKIEebuqA" name="ProcedureActivityActStatusCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qLRmgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qLtrYN6jEee0kIKIEebuqA" name="ProcedureActivityActEffectiveTime" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qLtrYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qMOBsN6jEee0kIKIEebuqA" name="ProcedureActivityActPriorityCodeP" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qMOBsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qLx80N6jEee0kIKIEebuqA" name="ProcedureActivityActPriorityCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qLx80d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.7' and (value.code = 'A' or value.code = 'CR' or value.code = 'CS' or value.code = 'CSP' or value.code = 'CSR' or value.code = 'EL' or value.code = 'EM' or value.code = 'P' or value.code = 'PRN' or value.code = 'R' or value.code = 'RR' or value.code = 'S' or value.code = 'T' or value.code = 'UD' or value.code = 'UR'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qUEWIN6jEee0kIKIEebuqA" name="ProcedureActivityActPerformer" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qUEWId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qUel0N6jEee0kIKIEebuqA" name="ProcedureActivityActServiceDeliveryLocation" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qUel0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qU-8IN6jEee0kIKIEebuqA" name="ProcedureActivityActInstructions" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qU_jMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qVc2MN6jEee0kIKIEebuqA" name="ProcedureActivityActIndication" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qVddQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qV4UAN6jEee0kIKIEebuqA" name="ProcedureActivityActMedicationActivity" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qV4UAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_swZOoN6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationship" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_swZ1sN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4QzWwN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4QzWwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Qz90N6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationName" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Qz90d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q0k4N6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q0k4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q0k4t6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q1L8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q1L8d6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q1L8t6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q1zAN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityAddr" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q1zAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q2aEN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q2aEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q3BIN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q3BId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Q3BIt6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerAssignedEntity" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Q3BI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4RvK4N6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4RvK4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(classCode=vocab::ActClass::ENC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Rvx8N6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Rvx8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject(moodCode=vocab::x_DocumentEncounterMood::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4RwZAN6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipProcedureActEncounterId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4RwZAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).encounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4RwZAt6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipInversionInd" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4RwZA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(not inversionInd.oclIsUndefined() and inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4RxnIN6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipTypeCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4RxnId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4RyOMN6jEee0kIKIEebuqA" name="ProcedureActivityActEntryRelationshipProcedureActEncounter" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4RyOMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter))->reject(encounter->one(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_awdH4Rg4EeGs5a462vYX5Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qUel0t6jEee0kIKIEebuqA" name="getServiceDeliveryLocations" bodyCondition="_qUfM4d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qUfM4d6jEee0kIKIEebuqA" name="body" constrainedElement="_qUel0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qUfM4t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qUel096jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qUfM4N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qU_jMd6jEee0kIKIEebuqA" name="getInstructions" bodyCondition="_qU_jNN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qU_jNN6jEee0kIKIEebuqA" name="body" constrainedElement="_qU_jMd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qU_jNd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qU_jMt6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qU_jM96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qVddQd6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_qVddRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qVddRN6jEee0kIKIEebuqA" name="body" constrainedElement="_qVddQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qVddRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qVddQt6jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qVddQ96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_qV47EN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_qV47E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qV47E96jEee0kIKIEebuqA" name="body" constrainedElement="_qV47EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qV47FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qV47Ed6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qV47Et6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XUoXwBnZEeGs5a462vYX5Q" name="AuthorizationActivity">
      <ownedComment xmi:id="_1yE5QHhuEeGJtvg2iiStYg">
        <body>An Authorization Activity represents authorizations or pre-authorizations currently active for the patient for the particular payer. &#xD;
Authorizations are represented using an act subordinate to the policy or program that provided it.  The authorization refers to the policy or program. Authorized treatments can be grouped into an organizer class, where common properties, such as the reason for the authorization, can be expressed. Subordinate acts represent what was authorized.</body>
      </ownedComment>
      <ownedRule xmi:id="_qNS_wN6jEee0kIKIEebuqA" name="AuthorizationActivityTemplateId" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qNS_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.19')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qNWDEN6jEee0kIKIEebuqA" name="AuthorizationActivityClassCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qNWDEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qNZtcN6jEee0kIKIEebuqA" name="AuthorizationActivityId" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qNZtcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qNcwwN6jEee0kIKIEebuqA" name="AuthorizationActivityMoodCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qNcwwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_stH4MN6jEee0kIKIEebuqA" name="AuthorizationActivityEntryRelationship" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_stH4Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4SL20N6jEee0kIKIEebuqA" name="AuthorizationActivityEntryRelationshipHasClinicalStatement" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4SL20d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(act->exists(moodCode = vocab::x_DocumentActMood::PRMS) or  encounter->exists(moodCode = vocab::x_DocumentEncounterMood::PRMS) or observation->exists(moodCode = vocab::x_ActMoodDocumentObservation::PRMS) or  observationMedia->exists(moodCode = vocab::ActMood::PRMS) or organizer->exists(moodCode = vocab::ActMood::PRMS) or procedure->exists(moodCode = vocab::x_DocumentProcedureMood::PRMS) or  regionOfInterest->exists(moodCode = vocab::ActMood::PRMS) or substanceAdministration->exists(moodCode = vocab::x_DocumentSubstanceMood::PRMS) or  supply->exists(moodCode = vocab::x_DocumentSubstanceMood::PRMS))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4SMd4N6jEee0kIKIEebuqA" name="AuthorizationActivityEntryRelationshipHasAuthorizedPerformers" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4SMd4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(act->forAll( (moodCode = vocab::x_DocumentActMood::PRMS and performer->size() > 0) or moodCode &lt;> vocab::x_DocumentActMood::PRMS ) and &#xD;
encounter->forAll((moodCode = vocab::x_DocumentEncounterMood::PRMS and performer->size() > 0) or moodCode &lt;>  vocab::x_DocumentEncounterMood::PRMS) and &#xD;
observation->forAll((moodCode = vocab::x_ActMoodDocumentObservation::PRMS and performer->size() > 0)  or moodCode &lt;>  vocab::x_ActMoodDocumentObservation::PRMS) and &#xD;
observationMedia->forAll((moodCode = vocab::ActMood::PRMS and performer->size() > 0) or moodCode &lt;>  vocab::ActMood::PRMS) and &#xD;
organizer->forAll((moodCode = vocab::ActMood::PRMS and performer->size() > 0)  or moodCode &lt;>  vocab::ActMood::PRMS) and &#xD;
procedure->forAll((moodCode = vocab::x_DocumentProcedureMood::PRMS and performer->size() > 0)  or moodCode &lt;>  vocab::x_DocumentProcedureMood::PRMS) and &#xD;
regionOfInterest->forAll((moodCode = vocab::ActMood::PRMS and performer->size() > 0) or moodCode &lt;>  vocab::ActMood::PRMS) and &#xD;
substanceAdministration->forAll((moodCode = vocab::x_DocumentSubstanceMood::PRMS and performer->size() > 0)  or moodCode &lt;>  vocab::x_DocumentSubstanceMood::PRMS) and &#xD;
supply->forAll((moodCode = vocab::x_DocumentSubstanceMood::PRMS and performer->size() > 0) or moodCode &lt;>  vocab::x_DocumentSubstanceMood::PRMS))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4SMd4t6jEee0kIKIEebuqA" name="AuthorizationActivityEntryRelationshipTypeCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4SMd496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_XUoXwRnZEeGs5a462vYX5Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_j3aTQBrTEeGo461UQq-B1g" name="MedicationSupplyOrder">
      <ownedRule xmi:id="_iZPioB7lEeGEaLkc3UAsAg" name="MedicationSupplyOrderInstructionInversionInd" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_l6ZVMB7lEeGEaLkc3UAsAg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vah94OMVEeGfv4R-kzpM0g" name="MedicationSupplyOrderEffectiveTimeHigh" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydkREOMVEeGfv4R-kzpM0g">
          <language>OCL</language>
          <body>self.effectiveTime->size() = 1 implies self.effectiveTime.oclAsType(datatypes::IVL_TS)->forAll(high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tJNe4DsiEeKK96MV1iYPgQ" name="MedicationSupplyOrderContainsMedicationOrImmunization" constrainedElement="_iZPioB7lEeGEaLkc3UAsAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tJNe4TsiEeKK96MV1iYPgQ">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation) xor self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOWvsN6jEee0kIKIEebuqA" name="MedicationSupplyOrderTemplateId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOWvsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.17')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOcPQN6jEee0kIKIEebuqA" name="MedicationSupplyOrderClassCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOc2UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOf5oN6jEee0kIKIEebuqA" name="MedicationSupplyOrderMoodCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOf5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOjkAN6jEee0kIKIEebuqA" name="MedicationSupplyOrderId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOjkAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOmnUN6jEee0kIKIEebuqA" name="MedicationSupplyOrderStatusCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOmnUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOpqoN6jEee0kIKIEebuqA" name="MedicationSupplyOrderEffectiveTime" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOpqod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (( not self.effectiveTime->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOsG4N6jEee0kIKIEebuqA" name="MedicationSupplyOrderRepeatNumber" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOsG4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qOvKMN6jEee0kIKIEebuqA" name="MedicationSupplyOrderQuantity" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qOvKMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qPKA8N6jEee0kIKIEebuqA" name="MedicationSupplyOrderAuthor" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qPKoAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qPkQoN6jEee0kIKIEebuqA" name="MedicationSupplyOrderInstructions" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qPkQod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instructions) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_j3aTQRrTEeGo461UQq-B1g">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_qPkQot6jEee0kIKIEebuqA" name="getInstructions" bodyCondition="_qPkQpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qPkQpd6jEee0kIKIEebuqA" name="body" constrainedElement="_qPkQot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qPkQpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->any(true).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qPkQo96jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qPkQpN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_vBswQBtpEeGT89b80j3MTg" name="EstimatedDateOfDelivery">
      <ownedComment xmi:id="_rEXPUDyXEeGOm9opnDhYAQ">
        <body>This clinical statement represents the anticipated date when a woman will give birth.</body>
      </ownedComment>
      <ownedRule xmi:id="_qX9Xpd6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryTemplateId" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qX9-sN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.15.3.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYAa8N6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryClassCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYBCAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYEFUN6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYEFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11778-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYI90N6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryMoodCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYI90d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYMoMN6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryStatusCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYMoMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qYRgsN6jEee0kIKIEebuqA" name="EstimatedDateOfDeliveryValue" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qYRgsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::TS)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_vBvzkBtpEeGT89b80j3MTg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2PidURSVEeGGzu7fmW9pXw" name="HospitalDischargeDiagnosisSection">
      <ownedComment xmi:id="_2Poj4hSVEeGGzu7fmW9pXw" annotatedElement="_2PidURSVEeGGzu7fmW9pXw">
        <body>The Hospital Discharge Diagnosis section describes the relevant problems or diagnoses at the time of discharge that occurred during the hospitalization or that need to be followed after hospitalization. This section includes an optional entry to record patient conditions.</body>
      </ownedComment>
      <ownedRule xmi:id="_qcVhUN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionTemplateId" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcVhUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.24')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qcYkoN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionCode" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcYkod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qcc2EN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionCodeP" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcc2Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qchukN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionTitle" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qchukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qckx4N6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionText" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qckx4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qitPEN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qitPEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HospitalDischargeDiagnosis))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Poj4xSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qit2IN6jEee0kIKIEebuqA" name="getHospitalDischargeDiagnosis" bodyCondition="_qit2I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qit2I96jEee0kIKIEebuqA" name="body" constrainedElement="_qit2IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qit2JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalDischargeDiagnosis))->asSequence()->any(true).oclAsType(consol::HospitalDischargeDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qit2Id6jEee0kIKIEebuqA" type="_KtwVgCULEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qit2It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Poj7RSVEeGGzu7fmW9pXw" name="HospitalDischargeMedicationsSectionEntriesOptional">
      <ownedComment xmi:id="_2Poj-hSVEeGGzu7fmW9pXw" annotatedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <body>The Hospital Discharge Medications section defines the medications that the patient is intended to take (or stop) after discharge. The currently active medications must be listed. The section may also include a patient's prescription history and indicate the source of the medication list, for example, from a pharmacy system versus from the patient.</body>
      </ownedComment>
      <ownedRule xmi:id="_qcmnEN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcmnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.11')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qcpqYN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcpqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qcui4N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCodeP" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcui4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qcy0UN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcy0Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qc13oN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qc13od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qjHewN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjHewd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::DischargeMedication))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Poj-xSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qjHewt6jEee0kIKIEebuqA" name="getDischargeMedications" bodyCondition="_qjHexd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qjHexd6jEee0kIKIEebuqA" name="body" constrainedElement="_qjHewt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjHext6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::DischargeMedication)).oclAsType(consol::DischargeMedication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qjHew96jEee0kIKIEebuqA" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qjHexN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2RqkOxSVEeGGzu7fmW9pXw" name="HospitalCourseSection">
      <ownedComment xmi:id="_2RqkPBSVEeGGzu7fmW9pXw" annotatedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <body>The Hospital Course section describes the sequence of events from admission to discharge in a hospital facility.</body>
      </ownedComment>
      <ownedRule xmi:id="_qc4T4N6jEee0kIKIEebuqA" name="HospitalCourseSectionTemplateId" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qc4T4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qc7XMN6jEee0kIKIEebuqA" name="HospitalCourseSectionCode" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qc7XMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8648-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdAPsN6jEee0kIKIEebuqA" name="HospitalCourseSectionCodeP" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdAPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdEhIN6jEee0kIKIEebuqA" name="HospitalCourseSectionTitle" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdEhId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdHkcN6jEee0kIKIEebuqA" name="HospitalCourseSectionText" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdHkcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RqkQxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Uz-4xSVEeGGzu7fmW9pXw" name="DischargeDietSection">
      <ownedComment xmi:id="_2Uz-5BSVEeGGzu7fmW9pXw" annotatedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <body>This section records a narrative description of the expectations for diet, including proposals, goals, and order requests for monitoring, tracking, or improving the dietary control of the patient, used in a discharge from a facility such as an emergency department, hospital, or nursing home.</body>
      </ownedComment>
      <ownedRule xmi:id="_qdJZoN6jEee0kIKIEebuqA" name="DischargeDietSectionTemplateId" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdKAsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.33')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdMc8N6jEee0kIKIEebuqA" name="DischargeDietSectionCode" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdMc8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42344-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdRVcN6jEee0kIKIEebuqA" name="DischargeDietSectionCodeP" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdRVcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdVm4N6jEee0kIKIEebuqA" name="DischargeDietSectionTitle" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdVm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdZRQN6jEee0kIKIEebuqA" name="DischargeDietSectionText" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdZRQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2U6FchSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_38AXoCUTEeGiOPpZVnfEJA" name="HospitalDischargeStudiesSummarySection">
      <ownedComment xmi:id="_IeLwgCUUEeGiOPpZVnfEJA">
        <body>This section records the results of observations generated by laboratories, imaging procedures, and other procedures. The scope includes hematology, chemistry, serology, virology, toxicology, microbiology, plain x-ray, ultrasound, CT, MRI, angiography, echocardiography, nuclear medicine, pathology, and procedure observations. This section often includes notable results such as abnormal values or relevant trends, and could record all results for the period of time being documented.&#xD;
Laboratory results are typically generated by laboratories providing analytic services in areas such as chemistry, hematology, serology, histology, cytology, anatomic pathology, microbiology, and/or virology. These observations are based on analysis of specimens obtained from the patient and submitted to the laboratory.&#xD;
Imaging results are typically generated by a clinician reviewing the output of an imaging procedure, such as where a cardiologist reports the left ventricular ejection fraction based on the review of an echocardiogram.&#xD;
Procedure results are typically generated by a clinician wanting to provide more granular information about component observations made during the performance of a procedure, such as when a gastroenterologist reports the size of a polyp observed during a colonoscopy.&#xD;
Note that there are discrepancies between CCD and the lab domain model, such as the effectiveTime in specimen collection.</body>
      </ownedComment>
      <ownedRule xmi:id="_qdbGcN6jEee0kIKIEebuqA" name="HospitalDischargeStudiesSummarySectionTemplateId" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdbtgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.16')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdew0N6jEee0kIKIEebuqA" name="HospitalDischargeStudiesSummarySectionCode" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdew0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11493-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdjCQN6jEee0kIKIEebuqA" name="HospitalDischargeStudiesSummarySectionCodeP" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdjpUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdn6wN6jEee0kIKIEebuqA" name="HospitalDischargeStudiesSummarySectionTitle" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdn6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdq-EN6jEee0kIKIEebuqA" name="HospitalDischargeStudiesSummarySectionText" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdq-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_38JhkCUTEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_hD-z0CUPEeGiOPpZVnfEJA" name="DischargeMedication">
      <ownedComment xmi:id="_j_-q4CUPEeGiOPpZVnfEJA">
        <body>The Discharge Medications entry codes medications that the patient is intended to take (or stop) after discharge.</body>
      </ownedComment>
      <ownedRule xmi:id="_qb6DgN6jEee0kIKIEebuqA" name="DischargeMedicationMedicationActivity" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qb6Dgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdszQN6jEee0kIKIEebuqA" name="DischargeMedicationTemplateId" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdtaUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.35')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdv2kN6jEee0kIKIEebuqA" name="DischargeMedicationClassCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdv2kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qdzg8N6jEee0kIKIEebuqA" name="DischargeMedicationMoodCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qdzg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qd2kQN6jEee0kIKIEebuqA" name="DischargeMedicationCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qd2kQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_hD_a4CUPEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qb6qkd6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_qb6qlN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qb6qlN6jEee0kIKIEebuqA" name="body" constrainedElement="_qb6qkd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qb6qld6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qb6qkt6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qb6qk96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_KtwVgCULEeGiOPpZVnfEJA" name="HospitalDischargeDiagnosis">
      <ownedComment xmi:id="_QGxBkCULEeGiOPpZVnfEJA">
        <body>The Hospital Discharge Diagnosis act wraps relevant problems or diagnoses at the time of discharge that occurred during the hospitalization or that need to be followed after hospitalization. This entry requires at least one Problem Observation entry.</body>
      </ownedComment>
      <ownedRule xmi:id="_qcUTMN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisProblemObservation" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcUTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qd61sN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisTemplateId" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qd61sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.33')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qd95AN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisClassCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qd95Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeBjYN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisMoodCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeBjYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeEmsN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeEmsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Ktw8kCULEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_qcU6Qd6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_qcU6RN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qcU6RN6jEee0kIKIEebuqA" name="body" constrainedElement="_qcU6Qd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qcU6Rd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qcU6Qt6jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qcU6Q96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_lBergCUMEeGiOPpZVnfEJA" name="HospitalDischargeInstructionsSection">
      <ownedComment xmi:id="_YHIqECUOEeGiOPpZVnfEJA">
        <body>The Hospital Discharge Instructions section records instructions at discharge.</body>
      </ownedComment>
      <ownedRule xmi:id="_qeI4IN6jEee0kIKIEebuqA" name="HospitalDischargeInstructionsSectionTemplateId" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeI4Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.41')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeL7cN6jEee0kIKIEebuqA" name="HospitalDischargeInstructionsSectionCode" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeL7cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8653-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeQM4N6jEee0kIKIEebuqA" name="HospitalDischargeInstructionsSectionCodeP" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeQM4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeUeUN6jEee0kIKIEebuqA" name="HospitalDischargeInstructionsSectionTitle" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeVFYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeYIsN6jEee0kIKIEebuqA" name="HospitalDischargeInstructionsSectionText" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeYIsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lBfSkCUMEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_TytVkCUQEeGiOPpZVnfEJA" name="HospitalDischargeMedicationsSection">
      <ownedComment xmi:id="_jk0jcCUQEeGiOPpZVnfEJA">
        <body>The Hospital Discharge Medications section defines the medications that the patient is intended to take (or stop) after discharge. The currently active medications must be listed. The section may also include a patient's prescription history and indicate the source of the medication list, for example, from a pharmacy system versus from the patient.</body>
      </ownedComment>
      <ownedRule xmi:id="_qeak8N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeak8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.11.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeju4N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCodeP" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeju4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qeePUN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qeePUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qepOcN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalText" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qepOcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qetf4N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTitle" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qetf4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qjqRUN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjqRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::DischargeMedication))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_TytVkSUQEeGiOPpZVnfEJA" general="_2Poj7RSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_qXZq0HavEeGK39q3kclbsA">
          <body>couple</body>
        </ownedComment>
      </generalization>
      <ownedOperation xmi:id="_qjq4YN6jEee0kIKIEebuqA" name="getConsolDischargeMedications" bodyCondition="_qjq4Y96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_qjq4Y96jEee0kIKIEebuqA" name="body" constrainedElement="_qjq4YN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjq4ZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::DischargeMedication)).oclAsType(consol::DischargeMedication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_qjq4Yd6jEee0kIKIEebuqA" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qjq4Yt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_WikGsCUTEeGiOPpZVnfEJA" name="HospitalDischargePhysicalSection">
      <ownedComment xmi:id="_YsVPkCUTEeGiOPpZVnfEJA">
        <body>The Hospital Discharge Physical section records a narrative description of the patient's physical findings.</body>
      </ownedComment>
      <ownedRule xmi:id="_qiCgsN6jEee0kIKIEebuqA" name="HospitalDischargePhysicalSectionTemplateId" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qiCgsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.26')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qiFkAN6jEee0kIKIEebuqA" name="HospitalDischargePhysicalSectionCode" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qiFkAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10184-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qiKcgN6jEee0kIKIEebuqA" name="HospitalDischargePhysicalSectionCodeP" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qiKcgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qiOt8N6jEee0kIKIEebuqA" name="HospitalDischargePhysicalSectionTitle" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qiOt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qiRxQN6jEee0kIKIEebuqA" name="HospitalDischargePhysicalSectionText" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qiRxQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_WikGsSUTEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_oI7CQCsaEeGHF88-qhhUMA" name="ChiefComplaintAndReasonForVisitSection">
      <ownedComment xmi:id="_sNrJwCsdEeGHF88-qhhUMA">
        <body>This section records the patient's chief complaint (the patient's own description) and/or the reason for the patient's visit (the provider's description of the reason for visit).  Local policy determines whether the information is divided into two sections or recorded in one section serving both purposes.</body>
      </ownedComment>
      <ownedRule xmi:id="_qjrfcN6jEee0kIKIEebuqA" name="ChiefComplaintAndReasonForVisitSectionTemplateId" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjsGgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.13')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qjwX8N6jEee0kIKIEebuqA" name="ChiefComplaintAndReasonForVisitSectionCode" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjwX8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46239-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qj3FoN6jEee0kIKIEebuqA" name="ChiefComplaintAndReasonForVisitSectionCodeP" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qj3Fod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qj7-IN6jEee0kIKIEebuqA" name="ChiefComplaintAndReasonForVisitSectionText" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qj7-Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qkBdsN6jEee0kIKIEebuqA" name="ChiefComplaintAndReasonForVisitSectionTitle" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkBdsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_oI7CQSsaEeGHF88-qhhUMA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Nm64UCscEeGHF88-qhhUMA" name="ReasonForVisitSection">
      <ownedComment xmi:id="_OPllYCsdEeGHF88-qhhUMA">
        <body>This section records the patient's reason for the patient's visit (as documented by the provider).  Local policy determines whether Reason for Visit and Chief Complaint are in separate or combined sections.</body>
      </ownedComment>
      <ownedRule xmi:id="_qkDS4N6jEee0kIKIEebuqA" name="ReasonForVisitSectionTemplateId" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkD58N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.12')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qkHkUN6jEee0kIKIEebuqA" name="ReasonForVisitSectionCode" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkHkUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29299-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qkL1wN6jEee0kIKIEebuqA" name="ReasonForVisitSectionCodeP" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkL1wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qkQHMN6jEee0kIKIEebuqA" name="ReasonForVisitSectionText" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkQHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qkTKgN6jEee0kIKIEebuqA" name="ReasonForVisitSectionTitle" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qkTKgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Nm7fYCscEeGHF88-qhhUMA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_OA_Q0DVyEeGaW4kr-GbV8Q" name="AnesthesiaSection">
      <ownedComment xmi:id="_dpvJsDWmEeG32vxjh5_fjg">
        <body>The Anesthesia section briefly records the type of anesthesia (e.g., general or local) and may state the actual agent used. This may or may not be a subsection of the Procedure Description section. The full details of anesthesia are usually found in a separate Anesthesia Note.</body>
      </ownedComment>
      <ownedRule xmi:id="_qwGK0N6jEee0kIKIEebuqA" name="AnesthesiaSectionTemplateId" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwGK0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.25')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwJ1MN6jEee0kIKIEebuqA" name="AnesthesiaSectionCode" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwJ1Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59774-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwOGoN6jEee0kIKIEebuqA" name="AnesthesiaSectionCodeP" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwOGod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwS_IN6jEee0kIKIEebuqA" name="AnesthesiaSectionTitle" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwS_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwWCcN6jEee0kIKIEebuqA" name="AnesthesiaSectionText" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwWCcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q2j_MN6jEee0kIKIEebuqA" name="AnesthesiaSectionProcedureActivityProcedure" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q2j_Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q3ArIN6jEee0kIKIEebuqA" name="AnesthesiaSectionMedicationActivity" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q3ArId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_OA_Q0TVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_q2kmQN6jEee0kIKIEebuqA" name="getProcedureActivityProcedures" bodyCondition="_q2kmQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q2kmQ96jEee0kIKIEebuqA" name="body" constrainedElement="_q2kmQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q2kmRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure)).oclAsType(consol::ProcedureActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q2kmQd6jEee0kIKIEebuqA" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q2kmQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q3BSMN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_q3BSM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q3BSM96jEee0kIKIEebuqA" name="body" constrainedElement="_q3BSMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q3BSNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q3BSMd6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q3BSMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_R1OXcDVyEeGaW4kr-GbV8Q" name="ComplicationsSection">
      <ownedComment xmi:id="_zxyf4FjaEeGRqYkwoeymcA">
        <body>The Complications section records problems that occurred during the procedure or other activity. The complications may have been known risks or unanticipated problems.</body>
      </ownedComment>
      <ownedRule xmi:id="_qwX3oN6jEee0kIKIEebuqA" name="ComplicationsSectionTemplateId" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwYesN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.37')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwdXMN6jEee0kIKIEebuqA" name="ComplicationsSectionCode" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwdXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '55109-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwiPsN6jEee0kIKIEebuqA" name="ComplicationsSectionCodeP" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwiPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwmhIN6jEee0kIKIEebuqA" name="ComplicationsSectionTitle" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwmhId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwqLgN6jEee0kIKIEebuqA" name="ComplicationsSectionText" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwqLgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sntMsN6jEee0kIKIEebuqA" name="ComplicationsSectionProblemObservation" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sntMsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_R1OXcTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sntMst6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_sntzwd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sntzwd6jEee0kIKIEebuqA" name="body" constrainedElement="_sntMst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sntzwt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sntMs96jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sntzwN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_WPTWEDVyEeGaW4kr-GbV8Q" name="DICOMObjectCatalogSection">
      <ownedComment xmi:id="_K--R4Eb4EeGp67IkyTw1fg">
        <body>DICOM Object Catalog lists all referenced objects and their parent Series and Studies, plus other DICOM attributes required for retrieving the objects.&#xD;
DICOM Object Catalog sections are not intended for viewing and contain empty section text.</body>
      </ownedComment>
      <ownedRule xmi:id="_qwsAsN6jEee0kIKIEebuqA" name="DICOMObjectCatalogSectionTemplateId" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwsAsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.1.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwvrEN6jEee0kIKIEebuqA" name="DICOMObjectCatalogSectionCode" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwvrEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '121181' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qwz8gN6jEee0kIKIEebuqA" name="DICOMObjectCatalogSectionCodeP" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qwz8gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_siv0MN6jEee0kIKIEebuqA" name="DICOMObjectCatalogSectionStudyAct" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_siv0Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::StudyAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_WPTWETVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_siwbQN6jEee0kIKIEebuqA" name="getStudyActs" bodyCondition="_siwbQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_siwbQ96jEee0kIKIEebuqA" name="body" constrainedElement="_siwbQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_siwbRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::StudyAct)).oclAsType(consol::StudyAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_siwbQd6jEee0kIKIEebuqA" type="_vjf-wEb4EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siwbQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZcC-4DVyEeGaW4kr-GbV8Q" name="FindingsSection">
      <ownedRule xmi:id="_qw2_0N6jEee0kIKIEebuqA" name="FindingsSectionTemplateId" constrainedElement="_ZcC-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qw3m4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.1.2')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ZcC-4TVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_eKFbUDVyEeGaW4kr-GbV8Q" name="HospitalConsultationsSection">
      <ownedComment xmi:id="_dFR2MEE1EeGdmoWy_aLP0Q">
        <body>The Hospital Consultations section records consultations that occurred during the admission.</body>
      </ownedComment>
      <ownedRule xmi:id="_qw5cEN6jEee0kIKIEebuqA" name="HospitalConsultationsSectionTemplateId" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qw6DIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.42')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qw9GcN6jEee0kIKIEebuqA" name="HospitalConsultationsSectionCode" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qw9Gcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '18841-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxBX4N6jEee0kIKIEebuqA" name="HospitalConsultationsSectionCodeP" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxBX4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxFpUN6jEee0kIKIEebuqA" name="HospitalConsultationsSectionText" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxFpUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxIsoN6jEee0kIKIEebuqA" name="HospitalConsultationsSectionTitle" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxIsod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_eKFbUTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_hqzJADVyEeGaW4kr-GbV8Q" name="InterventionsSection">
      <ownedComment xmi:id="_qZ68EEE1EeGdmoWy_aLP0Q">
        <body>This template represents Interventions. Interventions are actions taken to maximize the prospects of the goals of care for the patient, including the removal of barriers to success. Interventions can be planned, ordered, historical, etc.&#xD;
Interventions include actions that may be ongoing (e.g., maintenance medications that the patient is taking, or monitoring the patient's health status or the status of an intervention). &#xD;
Instructions are nested within interventions and may include self-care instructions. Instructions are information or directions to the patient and other providers including how to care for the individual's condition, what to do at home, when to call for help, any additional appointments, testing, and changes to the medication list or medication instructions, clinical guidelines and a summary of best practice.&#xD;
Instructions are information or directions to the patient. Use the Instructions Section when instructions are included as part of a document that is not a Care Plan. Use the Interventions Section, containing the Intervention Act containing the Instruction entry, when instructions are part of a structured care plan.</body>
      </ownedComment>
      <ownedRule xmi:id="_qxLI4N6jEee0kIKIEebuqA" name="InterventionsSectionTemplateId" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxLI4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.2.3')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxOzQN6jEee0kIKIEebuqA" name="InterventionsSectionCode" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxOzQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '62387-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxTEsN6jEee0kIKIEebuqA" name="InterventionsSectionCodeP" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxTEsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxX9MN6jEee0kIKIEebuqA" name="InterventionsSectionTitle" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxX9Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxbnkN6jEee0kIKIEebuqA" name="InterventionsSectionText" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxbnkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_hqzJATVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_mEIgwDVyEeGaW4kr-GbV8Q" name="MedicalHistorySection">
      <ownedComment xmi:id="_eDJXMEE2EeGdmoWy_aLP0Q">
        <body>The Medical History section describes all aspects of the medical history of the patient even if not pertinent to the current procedure, and may include chief complaint, past medical history, social history, family history, surgical or procedure history, medication history, and other history information. The history may be limited to information pertinent to the current procedure or may be more comprehensive. The history may be reported as a collection of random clinical statements or it may be reported categorically. Categorical report formats may be divided into multiple subsections including Past Medical History, Social History.</body>
      </ownedComment>
      <ownedRule xmi:id="_qxeD0N6jEee0kIKIEebuqA" name="MedicalHistorySectionTemplateId" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxeD0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.39')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxhHIN6jEee0kIKIEebuqA" name="MedicalHistorySectionCode" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxhHId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11329-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxl_oN6jEee0kIKIEebuqA" name="MedicalHistorySectionCodeP" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxl_od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxq4IN6jEee0kIKIEebuqA" name="MedicalHistorySectionText" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxq4Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qxuigN6jEee0kIKIEebuqA" name="MedicalHistorySectionTitle" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxuigd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_mEIgwTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_rNJpADVyEeGaW4kr-GbV8Q" name="ObjectiveSection">
      <ownedComment xmi:id="_mHeaAEE2EeGdmoWy_aLP0Q">
        <body>The Objective section contains data about the patient gathered through tests, measures, or observations that produce a quantified or categorized result. It includes important and relevant positive and negative test results, physical findings, review of systems, and other measurements and observations.</body>
      </ownedComment>
      <ownedRule xmi:id="_qxwXsN6jEee0kIKIEebuqA" name="ObjectiveSectionTemplateId" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qxw-wN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.2.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qx0CEN6jEee0kIKIEebuqA" name="ObjectiveSectionCode" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qx0CEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '61149-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qx4TgN6jEee0kIKIEebuqA" name="ObjectiveSectionCodeP" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qx46kN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qx8k8N6jEee0kIKIEebuqA" name="ObjectiveSectionText" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qx8k8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyAPUN6jEee0kIKIEebuqA" name="ObjectiveSectionTitle" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyAPUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_rNJpATVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_vHfXoDVyEeGaW4kr-GbV8Q" name="OperativeNoteFluidSection">
      <ownedComment xmi:id="_UgHj8FmvEeGRqYkwoeymcA">
        <body>The Operative Note Fluids section may be used to record fluids administered during the surgical procedure.</body>
      </ownedComment>
      <ownedRule xmi:id="_qyCEgN6jEee0kIKIEebuqA" name="OperativeNoteFluidSectionTemplateId" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyCrkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.7.12')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyGV8N6jEee0kIKIEebuqA" name="OperativeNoteFluidSectionCode" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyGV8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10216-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyLOcN6jEee0kIKIEebuqA" name="OperativeNoteFluidSectionCodeP" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyLOcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyPf4N6jEee0kIKIEebuqA" name="OperativeNoteFluidSectionText" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyPf4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyTKQN6jEee0kIKIEebuqA" name="OperativeNoteFluidSectionTitle" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyTKQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_vHfXoTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_zel6wDVyEeGaW4kr-GbV8Q" name="OperativeNoteSurgicalProcedureSection">
      <ownedComment xmi:id="_rxk2EEE2EeGdmoWy_aLP0Q">
        <body>The Operative Note Surgical Procedure section can be used to restate the procedures performed if appropriate for an enterprise workflow.  The procedure(s) performed associated with the Operative Note are formally modeled in the header using serviceEvent.</body>
      </ownedComment>
      <ownedRule xmi:id="_qyWNkN6jEee0kIKIEebuqA" name="OperativeNoteSurgicalProcedureSectionTemplateId" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyWNkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.7.14')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qybGEN6jEee0kIKIEebuqA" name="OperativeNoteSurgicalProcedureSectionCode" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qybGEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10223-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyhzwN6jEee0kIKIEebuqA" name="OperativeNoteSurgicalProcedureSectionCodeP" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyhzwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyn6YN6jEee0kIKIEebuqA" name="OperativeNoteSurgicalProcedureSectionText" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyn6Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qysL0N6jEee0kIKIEebuqA" name="OperativeNoteSurgicalProcedureSectionTitle" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qysL0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_zel6wTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_3b6E4DVyEeGaW4kr-GbV8Q" name="PlannedProcedureSection">
      <ownedComment xmi:id="_vw-q4EE2EeGdmoWy_aLP0Q">
        <body>The Planned Procedure section records the procedure(s) that a clinician thought would need to be done based on the preoperative assessment. It may be important to record the procedure(s) that were originally planned for, consented to, and perhaps pre-approved by the payor, particularly if different from the actual procedure(s) and procedure details, to provide evidence to various stakeholders that the providers are aware of the discrepancy and the justification can be found in the procedure details.</body>
      </ownedComment>
      <ownedRule xmi:id="_qyv2MN6jEee0kIKIEebuqA" name="PlannedProcedureSectionTemplateId" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyv2Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.30')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qyzgkN6jEee0kIKIEebuqA" name="PlannedProcedureSectionCode" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qyzgkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59772-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qy3yAN6jEee0kIKIEebuqA" name="PlannedProcedureSectionCodeP" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qy3yAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qy8qgN6jEee0kIKIEebuqA" name="PlannedProcedureSectionTitle" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qy8qgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qy_t0N6jEee0kIKIEebuqA" name="PlannedProcedureSectionText" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qy_t0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sEys4N6jEee0kIKIEebuqA" name="PlannedProcedureSectionPlanOfCareActivityProcedure" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEzT8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_3b6E4TVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sEzT8d6jEee0kIKIEebuqA" name="getPlanOfCareActivityProcedures" bodyCondition="_sEz7Ad6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sEz7Ad6jEee0kIKIEebuqA" name="body" constrainedElement="_sEzT8d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEz7At6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure)).oclAsType(consol::PlanOfCareActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sEzT8t6jEee0kIKIEebuqA" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sEz7AN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_7UA-4DVyEeGaW4kr-GbV8Q" name="PostoperativeDiagnosisSection">
      <ownedComment xmi:id="_0An7IEE2EeGdmoWy_aLP0Q">
        <body>The Postoperative Diagnosis section records the diagnosis or diagnoses discovered or confirmed during the surgery. Often it is the same as the preoperative diagnosis.</body>
      </ownedComment>
      <ownedRule xmi:id="_qzBjAN6jEee0kIKIEebuqA" name="PostoperativeDiagnosisSectionTemplateId" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzCKEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.35')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzEmUN6jEee0kIKIEebuqA" name="PostoperativeDiagnosisSectionCode" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzEmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10218-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzJe0N6jEee0kIKIEebuqA" name="PostoperativeDiagnosisSectionCodeP" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzJe0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzNJMN6jEee0kIKIEebuqA" name="PostoperativeDiagnosisSectionText" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzNJMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzQzkN6jEee0kIKIEebuqA" name="PostoperativeDiagnosisSectionTitle" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzQzkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_7UA-4TVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_-jlSMDVyEeGaW4kr-GbV8Q" name="PostprocedureDiagnosisSection">
      <ownedComment xmi:id="_2BrM4EE2EeGdmoWy_aLP0Q">
        <body>The Postprocedure Diagnosis section records the diagnosis or diagnoses discovered or confirmed during the procedure. Often it is the same as the pre-procedure diagnosis or indication.</body>
      </ownedComment>
      <ownedRule xmi:id="_qzSowN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionTemplateId" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzTP0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.36')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzVsEN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionCode" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzVsEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzakkN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionCodeP" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzakkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzfdEN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionTitle" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzfdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzigYN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionText" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzigYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sGCqEN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionPostprocedureDiagnosis" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGCqEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PostprocedureDiagnosis))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-jlSMTVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sGCqEt6jEee0kIKIEebuqA" name="getPostprocedureDiagnosis" bodyCondition="_sGDRIt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sGDRIt6jEee0kIKIEebuqA" name="body" constrainedElement="_sGCqEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGDRI96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PostprocedureDiagnosis))->asSequence()->any(true).oclAsType(consol::PostprocedureDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sGDRIN6jEee0kIKIEebuqA" type="_0fjXAEEvEeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGDRId6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Cu6qMDVzEeGaW4kr-GbV8Q" name="PreoperativeDiagnosisSection">
      <ownedComment xmi:id="_4B0fsEE2EeGdmoWy_aLP0Q">
        <body>The Preoperative Diagnosis section records the surgical diagnosis or diagnoses assigned to the patient before the surgical procedure and is the reason for the surgery. The preoperative diagnosis is, in the opinion of the surgeon, the diagnosis that will be confirmed during surgery.</body>
      </ownedComment>
      <ownedRule xmi:id="_qzk8oN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionTemplateId" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzk8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.34')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzn_8N6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionCode" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzn_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzsRYN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionCodeP" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzsRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qzxJ4N6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionTitle" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qzxJ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qz0NMN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionText" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qz0NMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_so77wN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionPreoperativeDiagnosis" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_so77wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PreoperativeDiagnosis))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Cu6qMTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_so77wt6jEee0kIKIEebuqA" name="getPreoperativeDiagnosis" bodyCondition="_so77xd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_so77xd6jEee0kIKIEebuqA" name="body" constrainedElement="_so77wt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_so77xt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PreoperativeDiagnosis))->asSequence()->any(true).oclAsType(consol::PreoperativeDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_so77w96jEee0kIKIEebuqA" type="_0baBYEEwEeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_so77xN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_HNUIIDVzEeGaW4kr-GbV8Q" name="ProcedureDescriptionSection">
      <ownedComment xmi:id="_Fyfh4ECVEeGELr7uj3LK_Q">
        <body>The Procedure Description section records the particulars of the procedure and may include procedure site preparation, surgical site preparation, pertinent details related to sedation/anesthesia, pertinent details related to measurements and markings, procedure times, medications administered, estimated blood loss, specimens removed, implants, instrumentation, sponge counts, tissue manipulation, wound closure, sutures used, vital signs and other monitoring data. Local practice often identifies the level and type of detail required based on the procedure or specialty.</body>
      </ownedComment>
      <ownedRule xmi:id="_qz2pcN6jEee0kIKIEebuqA" name="ProcedureDescriptionSectionTemplateId" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qz2pcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.27')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qz5swN6jEee0kIKIEebuqA" name="ProcedureDescriptionSectionCode" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qz5swd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29554-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_qz9-MN6jEee0kIKIEebuqA" name="ProcedureDescriptionSectionCodeP" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qz9-Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0CPoN6jEee0kIKIEebuqA" name="ProcedureDescriptionSectionText" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0CPod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0F6AN6jEee0kIKIEebuqA" name="ProcedureDescriptionSectionTitle" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0F6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_HNUIITVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_QhXGYDVzEeGaW4kr-GbV8Q" name="ProcedureDispositionSection">
      <ownedComment xmi:id="_ZwQ34ECVEeGELr7uj3LK_Q">
        <body>The Procedure Disposition section records the status and condition of the patient at the completion of the procedure or surgery.  It often also states where the patent was transferred to for the next level of care.</body>
      </ownedComment>
      <ownedRule xmi:id="_q0IWQN6jEee0kIKIEebuqA" name="ProcedureDispositionSectionTemplateId" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0IWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.18.2.12')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0LZkN6jEee0kIKIEebuqA" name="ProcedureDispositionSectionCode" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0LZkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59775-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0PrAN6jEee0kIKIEebuqA" name="ProcedureDispositionSectionCodeP" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0PrAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0T8cN6jEee0kIKIEebuqA" name="ProcedureDispositionSectionText" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0T8cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0W_wN6jEee0kIKIEebuqA" name="ProcedureDispositionSectionTitle" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0W_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_QhXGYTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_TvcL8DVzEeGaW4kr-GbV8Q" name="ProcedureEstimatedBloodLossSection">
      <ownedComment xmi:id="_BuKCIEE3EeGdmoWy_aLP0Q">
        <body>The Estimated Blood Loss section may be a subsection of another section such as the Procedure Description section. The Estimated Blood Loss section records the approximate amount of blood that the patient lost during the procedure or surgery. It may be an accurate quantitative amount, e.g., 250 milliliters, or it may be descriptive, e.g., &quot;minimal&quot; or &quot;none&quot;.</body>
      </ownedComment>
      <ownedRule xmi:id="_q0ZcAN6jEee0kIKIEebuqA" name="ProcedureEstimatedBloodLossSectionTemplateId" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0ZcAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.18.2.9')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0dGYN6jEee0kIKIEebuqA" name="ProcedureEstimatedBloodLossSectionCode" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0dGYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59770-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0hX0N6jEee0kIKIEebuqA" name="ProcedureEstimatedBloodLossSectionCodeP" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0hX0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0mQUN6jEee0kIKIEebuqA" name="ProcedureEstimatedBloodLossSectionText" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0mQUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0sW8N6jEee0kIKIEebuqA" name="ProcedureEstimatedBloodLossSectionTitle" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0sW8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_TvcL8TVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_W4UBYDVzEeGaW4kr-GbV8Q" name="ProcedureFindingsSection">
      <ownedComment xmi:id="_EXSAgEE3EeGdmoWy_aLP0Q">
        <body>The Procedure Findings section records clinically significant observations confirmed or discovered during the procedure or surgery.</body>
      </ownedComment>
      <ownedRule xmi:id="_q0uzMN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionTemplateId" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0uzMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.28')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0x2gN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionCode" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0x2gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q02H8N6jEee0kIKIEebuqA" name="ProcedureFindingsSectionCodeP" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q02vAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q06ZYN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionTitle" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q07AcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q0-DwN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionText" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q0-Dwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sHOV0N6jEee0kIKIEebuqA" name="ProcedureFindingsSectionProblemObservation" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHOV0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_W4UBYTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sHOV0t6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_sHO84N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sHO84N6jEee0kIKIEebuqA" name="body" constrainedElement="_sHOV0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHO84d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sHOV096jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sHOV1N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Z662wDVzEeGaW4kr-GbV8Q" name="ProcedureImplantsSection">
      <ownedComment xmi:id="_F3ZIYEE3EeGdmoWy_aLP0Q">
        <body>The Procedure Implants section records any materials placed during the procedure including stents, tubes, and drains.</body>
      </ownedComment>
      <ownedRule xmi:id="_q0_48N6jEee0kIKIEebuqA" name="ProcedureImplantsSectionTemplateId" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1AgAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.40')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1EKYN6jEee0kIKIEebuqA" name="ProcedureImplantsSectionCode" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1EKYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59771-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1Ib0N6jEee0kIKIEebuqA" name="ProcedureImplantsSectionCodeP" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1Ib0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1MtQN6jEee0kIKIEebuqA" name="ProcedureImplantsSectionText" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1MtQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1PwkN6jEee0kIKIEebuqA" name="ProcedureImplantsSectionTitle" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1Pwkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Z662wTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_cjmJMDVzEeGaW4kr-GbV8Q" name="ProcedureIndicationsSection">
      <ownedComment xmi:id="_ukS8sEEzEeGdmoWy_aLP0Q">
        <body>The Procedure Indications section records details about the reason for the procedure or surgery. This section may include the pre-procedure diagnosis or diagnoses as well as one or more symptoms that contribute to the reason the procedure is being performed.</body>
      </ownedComment>
      <ownedRule xmi:id="_q1SM0N6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionTemplateId" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1SM0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.29')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1VQIN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionCode" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1VQId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59768-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1ZhkN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionCodeP" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1Zhkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1dzAN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionTitle" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1dzAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1g2UN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionText" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1g2Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sHuFEN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionIndication" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHuFEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::Indication))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_cjv6MDVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sHusIN6jEee0kIKIEebuqA" name="getIndications" bodyCondition="_sHusI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sHusI96jEee0kIKIEebuqA" name="body" constrainedElement="_sHusIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHusJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication)).oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sHusId6jEee0kIKIEebuqA" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sHusIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_gSUdsDVzEeGaW4kr-GbV8Q" name="ProcedureSpecimensTakenSection">
      <ownedComment xmi:id="_2NpTsEEzEeGdmoWy_aLP0Q">
        <body>The Procedure Specimens Taken section records the tissues, objects, or samples taken from the patient during the procedure including biopsies, aspiration fluid, or other samples sent for pathological analysis. The narrative may include a description of the specimens.</body>
      </ownedComment>
      <ownedRule xmi:id="_q1jSkN6jEee0kIKIEebuqA" name="ProcedureSpecimensTakenSectionTemplateId" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1jSkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.31')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1m88N6jEee0kIKIEebuqA" name="ProcedureSpecimensTakenSectionCode" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1m88d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59773-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1rOYN6jEee0kIKIEebuqA" name="ProcedureSpecimensTakenSectionCodeP" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1rOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1vf0N6jEee0kIKIEebuqA" name="ProcedureSpecimensTakenSectionText" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1vf0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q1yjIN6jEee0kIKIEebuqA" name="ProcedureSpecimensTakenSectionTitle" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q1zKMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gSUdsTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_iy8nYDVzEeGaW4kr-GbV8Q" name="SubjectiveSection">
      <ownedComment xmi:id="_P7H3IEE3EeGdmoWy_aLP0Q">
        <body>The Subjective section describes in a narrative format the patient's current condition and/or interval changes as reported by the patient or by the patient's guardian or another informant.</body>
      </ownedComment>
      <ownedRule xmi:id="_q10_YN6jEee0kIKIEebuqA" name="SubjectiveSectionTemplateId" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q10_Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.2.2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q14CsN6jEee0kIKIEebuqA" name="SubjectiveSectionCode" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q14Csd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '61150-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q19iQN6jEee0kIKIEebuqA" name="SubjectiveSectionCodeP" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q19iQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q2BzsN6jEee0kIKIEebuqA" name="SubjectiveSectionText" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q2Bzsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q2FeEN6jEee0kIKIEebuqA" name="SubjectiveSectionTitle" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q2FeEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_iy8nYTVzEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_R-vIoDssEeGvzMYhXuqAEA" name="ConsultationNote">
      <ownedComment xmi:id="_OaB2UDstEeGvzMYhXuqAEA">
        <body>For the purpose of this Implementation Guide, a consultation visit is defined by the evaluation and management guidelines for a consultation established by the Centers for Medicare and Medicaid Services (CMS). According to those guidelines, a Consultation Note must be generated as a result of a physician or nonphysician practitioner's (NPP) request for an opinion or advice from another physician or NPP. Consultations must involve face-to-face time with the patient or fall under guidelines for telemedicine visits. &#xD;
A Consultation Note must be provided to the referring physician or NPP and must include the reason for the referral, history of present illness, physical examination, and decision-making component (Assessment and Plan). &#xD;
An NPP is defined as any licensed medical professional as recognized by the state in which the professional practices, including, but not limited to, physician assistants, nurse practitioners, clinical nurse specialists, social workers, registered dietitians, physical therapists, and speech therapists.&#xD;
Reports on visits requested by a patient, family member, or other third party are not covered by this specification. Second opinions, sometimes called &quot;confirmatory consultations,&quot; also are not covered here. Any question on use of the Consultation Note defined here should be resolved by reference to CMS or American Medical Association (AMA) guidelines.</body>
      </ownedComment>
      <ownedRule xmi:id="_8h6-oGjGEeGNoZ3kEkcY2A" name="ConsultationNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8h6-oWjGEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_90KpoGjGEeGNoZ3kEkcY2A" name="ConsultationNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_90KpoWjGEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_AUOyoGjHEeGNoZ3kEkcY2A" name="ConsultationNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_AUOyoWjHEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ZNLmgPKuEeGFUPBL8qS7yQ" name="ConsultationNoteHasReasonForReferralOrReasonForVisit" constrainedElement="_8h6-oGjGEeGNoZ3kEkcY2A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pqV8gPKuEeGFUPBL8qS7yQ">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection)) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q3B5QN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q3B5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q4Cl4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q4Cl4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q3PUoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q3PUod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11488-4' or value.code = '34100-8' or value.code = '34104-0' or value.code = '51845-6' or value.code = '51853-0' or value.code = '51846-4' or value.code = '34101-6' or value.code = '34749-2' or value.code = '34102-4' or value.code = '34099-2' or value.code = '34756-7' or value.code = '34758-3' or value.code = '34760-9' or value.code = '34879-7' or value.code = '34761-7' or value.code = '34764-1' or value.code = '34771-6' or value.code = '34776-5' or value.code = '34777-3' or value.code = '34779-9' or value.code = '34781-5' or value.code = '34783-1' or value.code = '34785-6' or value.code = '34795-5' or value.code = '34797-1' or value.code = '34798-9' or value.code = '34800-3' or value.code = '34803-7' or value.code = '34855-7' or value.code = '34805-2' or value.code = '34807-8' or value.code = '34810-2' or value.code = '34812-8' or value.code = '34814-4' or value.code = '34816-9' or value.code = '34820-1' or value.code = '34822-7' or value.code = '34824-3' or value.code = '34826-8' or value.code = '34828-4' or value.code = '34788-0' or value.code = '34791-4' or value.code = '34103-2' or value.code = '34831-8' or value.code = '34833-4' or value.code = '34835-9' or value.code = '34837-5' or value.code = '34839-1' or value.code = '34841-7' or value.code = '34845-8' or value.code = '34847-4' or value.code = '34849-0' or value.code = '34851-6' or value.code = '34853-2'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q5ohUN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q5ohUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q7neUN6jEee0kIKIEebuqA" name="ConsultationNoteAssessmentSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q7neUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8CVEN6jEee0kIKIEebuqA" name="ConsultationNoteAssessmentAndPlanSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8CVEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8tqgN6jEee0kIKIEebuqA" name="ConsultationNotePlanOfCareSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8tqgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q9HTIN6jEee0kIKIEebuqA" name="ConsultationNoteHistoryOfPresentIllness" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q9HTId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q9j_EN6jEee0kIKIEebuqA" name="ConsultationNotePhysicalExamSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q9j_Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q-BSEN6jEee0kIKIEebuqA" name="ConsultationNoteReasonForReferralSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-BSEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q-a6sN6jEee0kIKIEebuqA" name="ConsultationNoteReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-a6sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q-z8QN6jEee0kIKIEebuqA" name="ConsultationNoteAllergiesSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-z8Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q_Nk4N6jEee0kIKIEebuqA" name="ConsultationNoteChiefComplaintSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q_Nk4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q_n0kN6jEee0kIKIEebuqA" name="ConsultationNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q_n0kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rACEQN6jEee0kIKIEebuqA" name="ConsultationNoteFamilyHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rACEQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rAbF0N6jEee0kIKIEebuqA" name="ConsultationNoteGeneralStatusSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rAbs4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rA0ucN6jEee0kIKIEebuqA" name="ConsultationNoteHistoryOfPastIllnessSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rA0ucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rBOXEN6jEee0kIKIEebuqA" name="ConsultationNoteImmunizationsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rBOXEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rBnYoN6jEee0kIKIEebuqA" name="ConsultationNoteMedicationsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rBnYod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rCAaMN6jEee0kIKIEebuqA" name="ConsultationNoteProblemSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCAaMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rCZbwN6jEee0kIKIEebuqA" name="ConsultationNoteProceduresSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCZbwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rCydUN6jEee0kIKIEebuqA" name="ConsultationNoteResultsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCydUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rDPJQN6jEee0kIKIEebuqA" name="ConsultationNoteReviewOfSystemsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rDPJQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rDoK0N6jEee0kIKIEebuqA" name="ConsultationNoteSocialHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rDoK0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rEBzcN6jEee0kIKIEebuqA" name="ConsultationNoteVitalSignsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rEBzcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tpO7IN6jEee0kIKIEebuqA" name="ConsultationNoteInFulfillmentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tpO7Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4TbM8N6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4TbM8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Tb0AN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Tb0Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T01kN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T01kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T1coN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T1cod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T2DsN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheDay" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T2Dsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T2qwN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheMinute" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T2qwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 12)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T2qwt6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheSecond" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T2qw96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 14)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T3R0N6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T3R0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() and effectiveTime.value.size() > 8 implies effectiveTime.value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T344N6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T344d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T4f8N6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2Id" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T4f8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T4f8t6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T4f896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T5HAN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T5HAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->exists(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4T5uEN6jEee0kIKIEebuqA" name="ConsultationNoteComponentOfEncompassingEncounter" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4T5uEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4UvbkN6jEee0kIKIEebuqA" name="ConsultationNoteInFulfillmentOfOrderId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Uvbkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null).order->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4UwCoN6jEee0kIKIEebuqA" name="ConsultationNoteInFulfillmentOfOrder" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4UwCod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null)->reject(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_R_oggDssEeGvzMYhXuqAEA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_q7oFYN6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_q7oFY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q7oFY96jEee0kIKIEebuqA" name="body" constrainedElement="_q7oFYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q7oFZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q7oFYd6jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q7oFYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q8C8IN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection" bodyCondition="_q8C8I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q8C8I96jEee0kIKIEebuqA" name="body" constrainedElement="_q8C8IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8C8JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q8C8Id6jEee0kIKIEebuqA" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8C8It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q8uRkN6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_q8uRk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q8uRk96jEee0kIKIEebuqA" name="body" constrainedElement="_q8uRkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8uRlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q8uRkd6jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8uRkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q9H6MN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllness" bodyCondition="_q9H6M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q9H6M96jEee0kIKIEebuqA" name="body" constrainedElement="_q9H6MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q9H6NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q9H6Md6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q9H6Mt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q9kmIN6jEee0kIKIEebuqA" name="getPhysicalExamSection" bodyCondition="_q9kmI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q9kmI96jEee0kIKIEebuqA" name="body" constrainedElement="_q9kmIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q9kmJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q9kmId6jEee0kIKIEebuqA" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q9kmIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q-BSEt6jEee0kIKIEebuqA" name="getReasonForReferralSection" bodyCondition="_q-B5It6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q-B5It6jEee0kIKIEebuqA" name="body" constrainedElement="_q-BSEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-B5I96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection))->asSequence()->any(true).oclAsType(consol::ReasonForReferralSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q-B5IN6jEee0kIKIEebuqA" type="_2PWQFxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q-B5Id6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q-bhwN6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_q-bhw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q-bhw96jEee0kIKIEebuqA" name="body" constrainedElement="_q-bhwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-bhxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q-bhwd6jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q-bhwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q-0jUN6jEee0kIKIEebuqA" name="getAllergiesSection" bodyCondition="_q-0jU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q-0jU96jEee0kIKIEebuqA" name="body" constrainedElement="_q-0jUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-0jVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q-0jUd6jEee0kIKIEebuqA" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q-0jUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q_OL8N6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_q_OL896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q_OL896jEee0kIKIEebuqA" name="body" constrainedElement="_q_OL8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q_OL9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q_OL8d6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q_OL8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_q_oboN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_q_obo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_q_obo96jEee0kIKIEebuqA" name="body" constrainedElement="_q_oboN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_q_obpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_q_obod6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q_obot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rACEQt6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_rACERd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rACERd6jEee0kIKIEebuqA" name="body" constrainedElement="_rACEQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rACERt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rACEQ96jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rACERN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rAbs4d6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_rAbs5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rAbs5N6jEee0kIKIEebuqA" name="body" constrainedElement="_rAbs4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rAbs5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rAbs4t6jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rAbs496jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rA0uct6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection" bodyCondition="_rA0udd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rA0udd6jEee0kIKIEebuqA" name="body" constrainedElement="_rA0uct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rA0udt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rA0uc96jEee0kIKIEebuqA" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rA0udN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rBOXEt6jEee0kIKIEebuqA" name="getImmunizationsSection" bodyCondition="_rBOXFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rBOXFd6jEee0kIKIEebuqA" name="body" constrainedElement="_rBOXEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rBOXFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection))->asSequence()->any(true).oclAsType(consol::ImmunizationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rBOXE96jEee0kIKIEebuqA" type="_2L7voBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rBOXFN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rBnYot6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional" bodyCondition="_rBn_st6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rBn_st6jEee0kIKIEebuqA" name="body" constrainedElement="_rBnYot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rBn_s96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rBn_sN6jEee0kIKIEebuqA" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rBn_sd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rCAaMt6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional" bodyCondition="_rCAaNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rCAaNd6jEee0kIKIEebuqA" name="body" constrainedElement="_rCAaMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCAaNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rCAaM96jEee0kIKIEebuqA" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rCAaNN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rCaC0N6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional" bodyCondition="_rCaC096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rCaC096jEee0kIKIEebuqA" name="body" constrainedElement="_rCaC0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCaC1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rCaC0d6jEee0kIKIEebuqA" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rCaC0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rCydUt6jEee0kIKIEebuqA" name="getResultsSectionEntriesOptional" bodyCondition="_rCydVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rCydVd6jEee0kIKIEebuqA" name="body" constrainedElement="_rCydUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rCydVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rCydU96jEee0kIKIEebuqA" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rCydVN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rDPwUN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_rDPwU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rDPwU96jEee0kIKIEebuqA" name="body" constrainedElement="_rDPwUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rDPwVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rDPwUd6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rDPwUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rDox4N6jEee0kIKIEebuqA" name="getSocialHistorySection" bodyCondition="_rDox496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rDox496jEee0kIKIEebuqA" name="body" constrainedElement="_rDox4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rDox5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->any(true).oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rDox4d6jEee0kIKIEebuqA" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rDox4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rECagN6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional" bodyCondition="_rECag96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rECag96jEee0kIKIEebuqA" name="body" constrainedElement="_rECagN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rECahN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rECagd6jEee0kIKIEebuqA" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rECagt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_W8pI4DszEeGvzMYhXuqAEA" name="AssessmentSection">
      <ownedComment xmi:id="_SHlZkEE1EeGdmoWy_aLP0Q">
        <body>The Assessment section (also referred to as impression or diagnoses outside of the context of CDA) represents the clinician's conclusions and working assumptions that will guide treatment of the patient. The assessment may be a list of specific disease entities or a narrative block.</body>
      </ownedComment>
      <ownedRule xmi:id="_q8C8Jd6jEee0kIKIEebuqA" name="AssessmentSectionTemplateId" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8C8Jt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.8')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8HNkN6jEee0kIKIEebuqA" name="AssessmentSectionCode" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8HNkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '51848-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8MGEN6jEee0kIKIEebuqA" name="AssessmentSectionCodeP" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8MGEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8QXgN6jEee0kIKIEebuqA" name="AssessmentSectionText" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8QXgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q8SzwN6jEee0kIKIEebuqA" name="AssessmentSectionTitle" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q8Ta0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_W8pI4TszEeGvzMYhXuqAEA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_-Qa60D1jEeG3tde5scYNWA" name="HistoryAndPhysicalNote">
      <ownedComment xmi:id="_BkJVYD1kEeG3tde5scYNWA">
        <body>A History and Physical  Note is a medical report that documents the current and past conditions of the patient. It contains essential information that helps determine an individual's health status. &#xD;
The first portion of the report is a current collection of organized information unique to an individual, typically supplied by the patient or their caregiver, about the current medical problem or the reason for the patient encounter. This information is followed by a description of any past or ongoing medical issues, including current medications and allergies. Information is also obtained about the patient's lifestyle, habits, and diseases among family members.&#xD;
The next portion of the report contains information obtained by physically examining the patient and gathering diagnostic information in the form of laboratory tests, imaging, or other diagnostic procedures. &#xD;
The report ends with the clinician's assessment of the patient's situation and the intended plan to address those issues. &#xD;
A History and Physical Examination is required upon hospital admission as well as before operative procedures. An initial evaluation in an ambulatory setting is often documented in the form of an History and Physical Note.</body>
      </ownedComment>
      <ownedRule xmi:id="_OMdNYD3rEeGYzOhiGkMbTA" name="HistoryAndPhysicalNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q_ShYD3rEeGYzOhiGkMbTA">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sAyY0D3rEeGYzOhiGkMbTA" name="HistoryAndPhysicalNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t0LpED3rEeGYzOhiGkMbTA">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fCIkGjAEeGNoZ3kEkcY2A" name="HistoryAndPhysicalNoteHasChiefComplaintAndReasonForVisitChiefComplaintOrReasonForVisit" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fCIkWjAEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_96mQgGjAEeGNoZ3kEkcY2A" name="HistoryAndPhysicalNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_96mQgWjAEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rMLp4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMMQ8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.3')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rMyG0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMyG0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rMUMwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMUMwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '34117-2' or value.code = '11492-6' or value.code = '28626-0' or value.code = '34774-0' or value.code = '34115-6' or value.code = '34116-4' or value.code = '34095-0' or value.code = '34096-8' or value.code = '51849-8' or value.code = '47039-3' or value.code = '34763-3' or value.code = '34094-3' or value.code = '34138-8'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rN4TAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteInFulfillmentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rN4TAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rQxO8N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rQxO8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rRKQgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteAllergiesSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRK3kN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rRkgMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteAssessmentSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRkgMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rR-v4N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNotePlanOfCareSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rR-v4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rSYYgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteAssessmentAndPlanSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSY_kN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rSzPQN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteChiefComplaintSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSzPQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rTS-gN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTS-gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rTsAEN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteFamilyHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTsnIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rUFosN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteGeneralStatusSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUFosd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rUfRUN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteHistoryOfPastIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUfRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rU7WMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteMedicationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU7WMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rVUXwN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNotePhysicalExamSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVUXwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rVuAYN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVuAYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rWHB8N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteResultsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWHB8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rWgqkN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteReviewOfSystemsSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWgqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rW6TMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteSocialHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rW6TMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rXUi4N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteHistoryOfPresentIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXUi4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rXuLgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteImmunizationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXuLgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rYIbMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteProblemSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rYIbMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rYkgEN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteProceduresSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rYkgEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rY9hoN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rY-IsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tnGNIN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteInstructionsSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tnGNId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4V88gN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4V88gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4V9jkN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4V9jkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WYaUN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WYaUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WZocN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WZocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WaPgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheDay" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WaPgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Wa2kN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheMinute" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Wa2kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 12)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WbdoN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheSecond" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Wbdod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 14)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WcEsN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WcEsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() and effectiveTime.value.size() > 8 implies effectiveTime.value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WcrwN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Wcrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WdS0N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WdS0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Wd54N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Wd54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(rim::Participation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4Weg8N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4Weg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WfIAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WfIAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4WfvEN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4WfvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-QelMD1jEeG3tde5scYNWA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_rRK3kd6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional" bodyCondition="_rRK3lN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rRK3lN6jEee0kIKIEebuqA" name="body" constrainedElement="_rRK3kd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRK3ld6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rRK3kt6jEee0kIKIEebuqA" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rRK3k96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rRlHQN6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_rRlHQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rRlHQ96jEee0kIKIEebuqA" name="body" constrainedElement="_rRlHQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRlHRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rRlHQd6jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rRlHQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rR-v4t6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_rR_W8t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rR_W8t6jEee0kIKIEebuqA" name="body" constrainedElement="_rR-v4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rR_W896jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rR_W8N6jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rR_W8d6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rSY_kd6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection" bodyCondition="_rSZmoN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rSZmoN6jEee0kIKIEebuqA" name="body" constrainedElement="_rSY_kd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSZmod6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rSY_kt6jEee0kIKIEebuqA" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSY_k96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rSz2UN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_rSz2U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rSz2U96jEee0kIKIEebuqA" name="body" constrainedElement="_rSz2UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSz2VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rSz2Ud6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSz2Ut6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rTTlkN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_rTTlk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rTTlk96jEee0kIKIEebuqA" name="body" constrainedElement="_rTTlkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTTllN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rTTlkd6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rTTlkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rTsnId6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_rTsnJN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rTsnJN6jEee0kIKIEebuqA" name="body" constrainedElement="_rTsnId6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTsnJd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rTsnIt6jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rTsnI96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rUGPwN6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_rUGPw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rUGPw96jEee0kIKIEebuqA" name="body" constrainedElement="_rUGPwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUGPxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rUGPwd6jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUGPwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rUfRUt6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection" bodyCondition="_rUf4Yd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rUf4Yd6jEee0kIKIEebuqA" name="body" constrainedElement="_rUfRUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUf4Yt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rUfRU96jEee0kIKIEebuqA" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUf4YN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rU79QN6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional" bodyCondition="_rU79Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rU79Q96jEee0kIKIEebuqA" name="body" constrainedElement="_rU79QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU79RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rU79Qd6jEee0kIKIEebuqA" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rU79Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rVU-0N6jEee0kIKIEebuqA" name="getPhysicalExamSection" bodyCondition="_rVU-096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rVU-096jEee0kIKIEebuqA" name="body" constrainedElement="_rVU-0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVU-1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rVU-0d6jEee0kIKIEebuqA" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVU-0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rVuAYt6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_rVuAZd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rVuAZd6jEee0kIKIEebuqA" name="body" constrainedElement="_rVuAYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVuncN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rVuAY96jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVuAZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rWHpAN6jEee0kIKIEebuqA" name="getResultsSectionEntriesOptional" bodyCondition="_rWHpA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rWHpA96jEee0kIKIEebuqA" name="body" constrainedElement="_rWHpAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWHpBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rWHpAd6jEee0kIKIEebuqA" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWHpAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rWhRoN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_rWhRo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rWhRo96jEee0kIKIEebuqA" name="body" constrainedElement="_rWhRoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWhRpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rWhRod6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWhRot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rW66QN6jEee0kIKIEebuqA" name="getSocialHistorySection" bodyCondition="_rW66Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rW66Q96jEee0kIKIEebuqA" name="body" constrainedElement="_rW66QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rW66RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->any(true).oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rW66Qd6jEee0kIKIEebuqA" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rW66Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rXUi4t6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_rXVJ8t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rXVJ8t6jEee0kIKIEebuqA" name="body" constrainedElement="_rXUi4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXVJ896jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rXVJ8N6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXVJ8d6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rXuykN6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional" bodyCondition="_rXuyk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rXuyk96jEee0kIKIEebuqA" name="body" constrainedElement="_rXuykN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXuylN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rXuykd6jEee0kIKIEebuqA" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXuykt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rYJCQN6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional" bodyCondition="_rYJCQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rYJCQ96jEee0kIKIEebuqA" name="body" constrainedElement="_rYJCQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rYJCRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rYJCQd6jEee0kIKIEebuqA" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYJCQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rYlHIN6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional" bodyCondition="_rYlHI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rYlHI96jEee0kIKIEebuqA" name="body" constrainedElement="_rYlHIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rYlHJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rYlHId6jEee0kIKIEebuqA" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYlHIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rY-Isd6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional" bodyCondition="_rY-ItN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rY-ItN6jEee0kIKIEebuqA" name="body" constrainedElement="_rY-Isd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rY-Itd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rY-Ist6jEee0kIKIEebuqA" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rY-Is96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tnGNIt6jEee0kIKIEebuqA" name="getInstructionsSection" bodyCondition="_tnG0Md6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tnG0Md6jEee0kIKIEebuqA" name="body" constrainedElement="_tnGNIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tnG0Mt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))->asSequence()->any(true).oclAsType(consol::InstructionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tnGNI96jEee0kIKIEebuqA" type="_4qKukEE1EeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tnG0MN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_xe9MsD4iEeGhnL_c4sBHGg" name="OperativeNote">
      <ownedComment xmi:id="_n7Z1wEE2EeGdmoWy_aLP0Q">
        <body>The Operative Note Fluids section may be used to record fluids administered during the surgical procedure.</body>
      </ownedComment>
      <ownedRule xmi:id="_rZyBAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZyBAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.7')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_raXP0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_raXP0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rZ2ScN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZ2Scd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11504-8' or value.code = '34137-0' or value.code = '28583-3' or value.code = '28624-5' or value.code = '28573-4' or value.code = '34877-1' or value.code = '34874-8' or value.code = '34870-6' or value.code = '34868-0' or value.code = '34818-5'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rdNvgN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOf" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rdNvgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rdmxEN6jEee0kIKIEebuqA" name="OperativeNoteAnesthesiaSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rdmxEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_reAZsN6jEee0kIKIEebuqA" name="OperativeNoteComplicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_reAZsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_reaCUN6jEee0kIKIEebuqA" name="OperativeNotePostoperativeDiagnosisSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_reaCUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rezD4N6jEee0kIKIEebuqA" name="OperativeNotePreoperativeDiagnosisSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rezq8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rfMsgN6jEee0kIKIEebuqA" name="OperativeNoteProcedureEstimatedBloodLossSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfMsgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rfmVIN6jEee0kIKIEebuqA" name="OperativeNoteProcedureFindingsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfmVId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rgDBEN6jEee0kIKIEebuqA" name="OperativeNoteProcedureSpecimensTakenSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rgDBEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rgftAN6jEee0kIKIEebuqA" name="OperativeNoteProcedureDescriptionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rggUEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rg58sN6jEee0kIKIEebuqA" name="OperativeNoteProcedureImplantsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg58sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rhUMYN6jEee0kIKIEebuqA" name="OperativeNoteOperativeNoteFluidSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhUMYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rht1AN6jEee0kIKIEebuqA" name="OperativeNoteOperativeNoteSurgicalProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rht1Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_riIrwN6jEee0kIKIEebuqA" name="OperativeNotePlanOfCareSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_riIrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rikJkN6jEee0kIKIEebuqA" name="OperativeNotePlannedProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rikJkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ri9yMN6jEee0kIKIEebuqA" name="OperativeNoteProcedureDispositionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ri-ZQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rjYB4N6jEee0kIKIEebuqA" name="OperativeNoteProcedureIndicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rjYB4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rjxDcN6jEee0kIKIEebuqA" name="OperativeNoteSurgicalDrainsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rjxqgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YJ78N6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YJ78d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YKjAN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YKjAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YLxIN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YLxId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YMYMN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YMYMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YM_QN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventProcedureCodes" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YM_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(code.codeSystem = '2.16.840.1.113883.6.104' or code.codeSystem = '2.16.840.1.113883.6.12' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YNmUN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YNmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YONYN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YONYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YO0cN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YO0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YPbgN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPreciseToTheDay" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YPbgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 8) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 8))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YQCkN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPreciseToTheMinute" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YQCkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 12) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YQpoN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPreciseToTheSecond" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YQpod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 14) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 14))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YRQsN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventIfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YRQsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() and effectiveTime.low.value.size() > 8 implies effectiveTime.low.value.size() >= 15) and (not effectiveTime.high.value.oclIsUndefined() and effectiveTime.high.value.size() > 8 implies effectiveTime.high.value.size() >= 15))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YR3wN6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YR3wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YSe0N6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventEffectiveTime" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YSe0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YTF4N6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformer" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YTF4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4YTs8N6jEee0kIKIEebuqA" name="OperativeNoteDocumentationOfServiceEvent" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4YTs8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_xfHkwD4iEeGhnL_c4sBHGg" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_rdnYIN6jEee0kIKIEebuqA" name="getAnesthesiaSection" bodyCondition="_rdnYI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rdnYI96jEee0kIKIEebuqA" name="body" constrainedElement="_rdnYIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rdnYJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))->asSequence()->any(true).oclAsType(consol::AnesthesiaSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rdnYId6jEee0kIKIEebuqA" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rdnYIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_reBAwN6jEee0kIKIEebuqA" name="getComplicationsSection" bodyCondition="_reBAw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_reBAw96jEee0kIKIEebuqA" name="body" constrainedElement="_reBAwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_reBAxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))->asSequence()->any(true).oclAsType(consol::ComplicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_reBAwd6jEee0kIKIEebuqA" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_reBAwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_reapYN6jEee0kIKIEebuqA" name="getPostoperativeDiagnosisSection" bodyCondition="_reapY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_reapY96jEee0kIKIEebuqA" name="body" constrainedElement="_reapYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_reapZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))->asSequence()->any(true).oclAsType(consol::PostoperativeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_reapYd6jEee0kIKIEebuqA" type="_7UA-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_reapYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rezq8d6jEee0kIKIEebuqA" name="getPreoperativeDiagnosisSection" bodyCondition="_rezq9N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rezq9N6jEee0kIKIEebuqA" name="body" constrainedElement="_rezq8d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rezq9d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection))->asSequence()->any(true).oclAsType(consol::PreoperativeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rezq8t6jEee0kIKIEebuqA" type="_Cu6qMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rezq896jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rfNTkN6jEee0kIKIEebuqA" name="getProcedureEstimatedBloodLossSection" bodyCondition="_rfNTk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rfNTk96jEee0kIKIEebuqA" name="body" constrainedElement="_rfNTkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNTlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))->asSequence()->any(true).oclAsType(consol::ProcedureEstimatedBloodLossSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rfNTkd6jEee0kIKIEebuqA" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfNTkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rfm8MN6jEee0kIKIEebuqA" name="getProcedureFindingsSection" bodyCondition="_rfm8M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rfm8M96jEee0kIKIEebuqA" name="body" constrainedElement="_rfm8MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfm8NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))->asSequence()->any(true).oclAsType(consol::ProcedureFindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rfm8Md6jEee0kIKIEebuqA" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfm8Mt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rgDBEt6jEee0kIKIEebuqA" name="getProcedureSpecimensTakenSection" bodyCondition="_rgDBFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rgDBFd6jEee0kIKIEebuqA" name="body" constrainedElement="_rgDBEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rgDBFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->any(true).oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rgDBE96jEee0kIKIEebuqA" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgDBFN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rggUEd6jEee0kIKIEebuqA" name="getProcedureDescriptionSection" bodyCondition="_rggUFN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rggUFN6jEee0kIKIEebuqA" name="body" constrainedElement="_rggUEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rggUFd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rggUEt6jEee0kIKIEebuqA" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rggUE96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rg6jwN6jEee0kIKIEebuqA" name="getProcedureImplantsSection" bodyCondition="_rg6jw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rg6jw96jEee0kIKIEebuqA" name="body" constrainedElement="_rg6jwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg6jxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->any(true).oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rg6jwd6jEee0kIKIEebuqA" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rg6jwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rhUzcN6jEee0kIKIEebuqA" name="getOperativeNoteFluidSection" bodyCondition="_rhUzc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rhUzc96jEee0kIKIEebuqA" name="body" constrainedElement="_rhUzcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhUzdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))->asSequence()->any(true).oclAsType(consol::OperativeNoteFluidSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rhUzcd6jEee0kIKIEebuqA" type="_vHfXoDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rhUzct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rht1At6jEee0kIKIEebuqA" name="getOperativeNoteSurgicalProcedureSection" bodyCondition="_rhucEN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rhucEN6jEee0kIKIEebuqA" name="body" constrainedElement="_rht1At6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhucEd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))->asSequence()->any(true).oclAsType(consol::OperativeNoteSurgicalProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rht1A96jEee0kIKIEebuqA" type="_zel6wDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rht1BN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_riIrwt6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_riIrxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_riIrxd6jEee0kIKIEebuqA" name="body" constrainedElement="_riIrwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_riIrxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_riIrw96jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_riIrxN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rikwoN6jEee0kIKIEebuqA" name="getPlannedProcedureSection" bodyCondition="_rikwo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rikwo96jEee0kIKIEebuqA" name="body" constrainedElement="_rikwoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rikwpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))->asSequence()->any(true).oclAsType(consol::PlannedProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rikwod6jEee0kIKIEebuqA" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rikwot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ri-ZQd6jEee0kIKIEebuqA" name="getProcedureDispositionSection" bodyCondition="_ri-ZRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ri-ZRN6jEee0kIKIEebuqA" name="body" constrainedElement="_ri-ZQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ri-ZRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ri-ZQt6jEee0kIKIEebuqA" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ri-ZQ96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rjYB4t6jEee0kIKIEebuqA" name="getProcedureIndicationsSection" bodyCondition="_rjYB5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rjYB5d6jEee0kIKIEebuqA" name="body" constrainedElement="_rjYB4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rjYB5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))->asSequence()->any(true).oclAsType(consol::ProcedureIndicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rjYB496jEee0kIKIEebuqA" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rjYB5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rjxqgd6jEee0kIKIEebuqA" name="getSurgicalDrainsSection" bodyCondition="_rjxqhN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rjxqhN6jEee0kIKIEebuqA" name="body" constrainedElement="_rjxqgd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rjxqhd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))->asSequence()->any(true).oclAsType(consol::SurgicalDrainsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rjxqgt6jEee0kIKIEebuqA" type="_luQh8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rjxqg96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_LuYEsD7YEeGvOdejHZ7dYg" name="ProcedureNote">
      <ownedRule xmi:id="_NBpHsD-6EeGtTIIxHid14Q" name="ProcedureNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_NBpHsT-6EeGtTIIxHid14Q">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Ot-tsD-6EeGtTIIxHid14Q" name="ProcedureNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ot-tsT-6EeGtTIIxHid14Q">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_KkMxIGjIEeGNoZ3kEkcY2A" name="ProcedureNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_KkMxIWjIEeGNoZ3kEkcY2A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fHsUwPK8EeGFUPBL8qS7yQ" name="ProcedureNoteSectionTitles" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lyeKsPK8EeGFUPBL8qS7yQ">
          <language>OCL</language>
          <body>self.getAllSections()->forAll(section : cda::Section | not section.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rjyRkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rjy4oN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rkZVkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rkZVkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rj7bgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rj7bgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '28570-0' or value.code = '11505-5' or value.code = '18744-3' or value.code = '18745-0' or value.code = '18746-8' or value.code = '18751-8' or value.code = '18753-4' or value.code = '18836-7' or value.code = '28577-5' or value.code = '28625-2' or value.code = '29757-2' or value.code = '33721-2' or value.code = '34121-4' or value.code = '34896-1' or value.code = '34899-5' or value.code = '47048-4' or value.code = '48807-2'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rmpYUN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOf" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmpYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ro-6oN6jEee0kIKIEebuqA" name="ProcedureNoteAssessmentSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro-6od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rpbmkN6jEee0kIKIEebuqA" name="ProcedureNotePlanOfCareSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpbmkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rp4SgN6jEee0kIKIEebuqA" name="ProcedureNoteAssessmentAndPlanSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rp4Sgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rqWzoN6jEee0kIKIEebuqA" name="ProcedureNoteComplicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rqWzod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rqzfkN6jEee0kIKIEebuqA" name="ProcedureNotePostprocedureDiagnosisSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rqzfkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rrQykN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureDescriptionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rrQykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rrxI4N6jEee0kIKIEebuqA" name="ProcedureNoteProcedureIndicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rrxI4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rsOb4N6jEee0kIKIEebuqA" name="ProcedureNoteAllergiesSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rsOb4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rstkEN6jEee0kIKIEebuqA" name="ProcedureNoteAnesthesiaSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rstkEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rtJo8N6jEee0kIKIEebuqA" name="ProcedureNoteChiefComplaintSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rtJo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rtrNYN6jEee0kIKIEebuqA" name="ProcedureNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rtrNYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ruGrMN6jEee0kIKIEebuqA" name="ProcedureNoteFamilyHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ruGrMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rulzYN6jEee0kIKIEebuqA" name="ProcedureNoteHistoryOfPastIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rulzYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rvDtcN6jEee0kIKIEebuqA" name="ProcedureNoteHistoryOfPresentIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvDtcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rvhAcN6jEee0kIKIEebuqA" name="ProcedureNoteMedicalHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvhAcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rv-6gN6jEee0kIKIEebuqA" name="ProcedureNoteMedicationsSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rv-6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rwc0kN6jEee0kIKIEebuqA" name="ProcedureNoteMedicationsAdministeredSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rwc0kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rw45cN6jEee0kIKIEebuqA" name="ProcedureNotePhysicalExamSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rw45cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rxWMcN6jEee0kIKIEebuqA" name="ProcedureNotePlannedProcedureSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxWMcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rxy4YN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureDispositionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxy4Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ryOWMN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureEstimatedBloodLossSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryOWMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ryrCIN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureFindingsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryrCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rzI8MN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureImplantsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rzI8Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rzmPMN6jEee0kIKIEebuqA" name="ProcedureNoteProcedureSpecimensTakenSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rzmPMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r0GlgN6jEee0kIKIEebuqA" name="ProcedureNoteProceduresSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0Glgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r0jRcN6jEee0kIKIEebuqA" name="ProcedureNoteReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0jRcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r1AkcN6jEee0kIKIEebuqA" name="ProcedureNoteReviewOfSystemsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1Akcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r1dQYN6jEee0kIKIEebuqA" name="ProcedureNoteSocialHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1dQYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tn9IwN6jEee0kIKIEebuqA" name="ProcedureNoteParticipant1" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tn9Iwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_trXpIN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOf" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_trXpId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4asSkN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4asSkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null).healthCareFacility->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4as5oN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4as5od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null)->reject(healthCareFacility->exists(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4bGiQN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4bGiQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->select(typeCode = vocab::x_EncounterParticipant::REF)->select(typeCode = vocab::x_EncounterParticipant::REF)->reject(typeCode=vocab::x_EncounterParticipant::REF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4bHJUN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5Code" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4bHJUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4bHwYN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5Location" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4bHwYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->exists(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4bHwYt6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4bHwY96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->select(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant))->select(typeCode = vocab::x_EncounterParticipant::REF)->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4bIXcN6jEee0kIKIEebuqA" name="ProcedureNoteComponentOfEncompassingEncounter5" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4bIXcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cwIEN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cwIEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cwvIN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cwvId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cxWMN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cxWMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cxWMt6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cxWM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cx9QN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cx9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(code.codeSystem = '2.16.840.1.113883.6.104' or code.codeSystem = '2.16.840.1.113883.6.12' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4cykUN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4cykUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4czLYN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4czLYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4czycN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4czycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4czyct6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PreciseToTheDay" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4czyc96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 8) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 8))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c0ZgN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PreciseToTheMinute" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c0Zgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 12) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c1AkN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PreciseToTheSecond" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c1Akd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 14) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 14))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c1noN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c1nod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() and effectiveTime.low.value.size() > 8 implies effectiveTime.low.value.size() >= 15) and (not effectiveTime.high.value.oclIsUndefined() and effectiveTime.high.value.size() > 8 implies effectiveTime.high.value.size() >= 15))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c2OsN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1Code" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c2Osd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c2Ost6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTime" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c2Os96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c21wN6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c21wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4c3c0N6jEee0kIKIEebuqA" name="ProcedureNoteDocumentationOfServiceEvent1" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4c3c0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Luag8D7YEeGvOdejHZ7dYg" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_ro-6ot6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_ro_hsN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ro_hsN6jEee0kIKIEebuqA" name="body" constrainedElement="_ro-6ot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro_hsd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ro-6o96jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ro-6pN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rpbmkt6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_rpbmld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rpbmld6jEee0kIKIEebuqA" name="body" constrainedElement="_rpbmkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpbmlt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rpbmk96jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpbmlN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rp45kN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection" bodyCondition="_rp45k96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rp45k96jEee0kIKIEebuqA" name="body" constrainedElement="_rp45kN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rp45lN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rp45kd6jEee0kIKIEebuqA" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp45kt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rqXasN6jEee0kIKIEebuqA" name="getComplicationsSection" bodyCondition="_rqXas96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rqXas96jEee0kIKIEebuqA" name="body" constrainedElement="_rqXasN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rqXatN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))->asSequence()->any(true).oclAsType(consol::ComplicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rqXasd6jEee0kIKIEebuqA" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqXast6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rq0GoN6jEee0kIKIEebuqA" name="getPostprocedureDiagnosisSection" bodyCondition="_rq0Go96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rq0Go96jEee0kIKIEebuqA" name="body" constrainedElement="_rq0GoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rq0GpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection))->asSequence()->any(true).oclAsType(consol::PostprocedureDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rq0God6jEee0kIKIEebuqA" type="_-jlSMDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq0Got6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rrRZoN6jEee0kIKIEebuqA" name="getProcedureDescriptionSection" bodyCondition="_rrRZo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rrRZo96jEee0kIKIEebuqA" name="body" constrainedElement="_rrRZoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rrRZpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rrRZod6jEee0kIKIEebuqA" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrRZot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rrxv8N6jEee0kIKIEebuqA" name="getProcedureIndicationsSection" bodyCondition="_rrxv896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rrxv896jEee0kIKIEebuqA" name="body" constrainedElement="_rrxv8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rrxv9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))->asSequence()->any(true).oclAsType(consol::ProcedureIndicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rrxv8d6jEee0kIKIEebuqA" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrxv8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rsPC8N6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional" bodyCondition="_rsPC896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rsPC896jEee0kIKIEebuqA" name="body" constrainedElement="_rsPC8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rsPC9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rsPC8d6jEee0kIKIEebuqA" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsPC8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rsuLIN6jEee0kIKIEebuqA" name="getAnesthesiaSection" bodyCondition="_rsuLI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rsuLI96jEee0kIKIEebuqA" name="body" constrainedElement="_rsuLIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rsuLJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))->asSequence()->any(true).oclAsType(consol::AnesthesiaSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rsuLId6jEee0kIKIEebuqA" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsuLIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rtKQAN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_rtKQA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rtKQA96jEee0kIKIEebuqA" name="body" constrainedElement="_rtKQAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rtKQBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rtKQAd6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtKQAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rtr0cN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_rtr0c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rtr0c96jEee0kIKIEebuqA" name="body" constrainedElement="_rtr0cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rtr0dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rtr0cd6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtr0ct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ruHSQN6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_ruHSQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ruHSQ96jEee0kIKIEebuqA" name="body" constrainedElement="_ruHSQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ruHSRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ruHSQd6jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruHSQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rulzYt6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection" bodyCondition="_rumacd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rumacd6jEee0kIKIEebuqA" name="body" constrainedElement="_rulzYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rumact6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rulzY96jEee0kIKIEebuqA" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rumacN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rvDtct6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_rvEUgt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rvEUgt6jEee0kIKIEebuqA" name="body" constrainedElement="_rvDtct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvEUg96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rvEUgN6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvEUgd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rvhngN6jEee0kIKIEebuqA" name="getMedicalHistorySection" bodyCondition="_rvhng96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rvhng96jEee0kIKIEebuqA" name="body" constrainedElement="_rvhngN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvhnhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))->asSequence()->any(true).oclAsType(consol::MedicalHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rvhngd6jEee0kIKIEebuqA" type="_mEIgwDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvhngt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rv_hkN6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional" bodyCondition="_rv_hk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rv_hk96jEee0kIKIEebuqA" name="body" constrainedElement="_rv_hkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rv_hlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rv_hkd6jEee0kIKIEebuqA" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rv_hkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rwc0kt6jEee0kIKIEebuqA" name="getMedicationsAdministeredSection" bodyCondition="_rwdbod6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rwdbod6jEee0kIKIEebuqA" name="body" constrainedElement="_rwc0kt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rwdbot6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection))->asSequence()->any(true).oclAsType(consol::MedicationsAdministeredSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rwc0k96jEee0kIKIEebuqA" type="_2Poj_BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwdboN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rw5ggN6jEee0kIKIEebuqA" name="getPhysicalExamSection" bodyCondition="_rw5gg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rw5gg96jEee0kIKIEebuqA" name="body" constrainedElement="_rw5ggN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rw5ghN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rw5ggd6jEee0kIKIEebuqA" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rw5ggt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rxWzgN6jEee0kIKIEebuqA" name="getPlannedProcedureSection" bodyCondition="_rxWzg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rxWzg96jEee0kIKIEebuqA" name="body" constrainedElement="_rxWzgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxWzhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))->asSequence()->any(true).oclAsType(consol::PlannedProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rxWzgd6jEee0kIKIEebuqA" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxWzgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rxy4Yt6jEee0kIKIEebuqA" name="getProcedureDispositionSection" bodyCondition="_rxy4Zd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rxy4Zd6jEee0kIKIEebuqA" name="body" constrainedElement="_rxy4Yt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxy4Zt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rxy4Y96jEee0kIKIEebuqA" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxy4ZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ryO9QN6jEee0kIKIEebuqA" name="getProcedureEstimatedBloodLossSection" bodyCondition="_ryO9Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ryO9Q96jEee0kIKIEebuqA" name="body" constrainedElement="_ryO9QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryO9RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))->asSequence()->any(true).oclAsType(consol::ProcedureEstimatedBloodLossSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ryO9Qd6jEee0kIKIEebuqA" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryO9Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ryrpMN6jEee0kIKIEebuqA" name="getProcedureFindingsSection" bodyCondition="_ryrpM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ryrpM96jEee0kIKIEebuqA" name="body" constrainedElement="_ryrpMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryrpNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))->asSequence()->any(true).oclAsType(consol::ProcedureFindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ryrpMd6jEee0kIKIEebuqA" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryrpMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rzJjQN6jEee0kIKIEebuqA" name="getProcedureImplantsSection" bodyCondition="_rzJjQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rzJjQ96jEee0kIKIEebuqA" name="body" constrainedElement="_rzJjQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rzJjRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->any(true).oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rzJjQd6jEee0kIKIEebuqA" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rzJjQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_rzm2QN6jEee0kIKIEebuqA" name="getProcedureSpecimensTakenSection" bodyCondition="_rzm2Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_rzm2Q96jEee0kIKIEebuqA" name="body" constrainedElement="_rzm2QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_rzm2RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->any(true).oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_rzm2Qd6jEee0kIKIEebuqA" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rzm2Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r0HMkN6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional" bodyCondition="_r0HMk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r0HMk96jEee0kIKIEebuqA" name="body" constrainedElement="_r0HMkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0HMlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r0HMkd6jEee0kIKIEebuqA" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0HMkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r0j4gN6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_r0j4g96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r0j4g96jEee0kIKIEebuqA" name="body" constrainedElement="_r0j4gN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0j4hN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r0j4gd6jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0j4gt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r1BLgN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_r1BLg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r1BLg96jEee0kIKIEebuqA" name="body" constrainedElement="_r1BLgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1BLhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r1BLgd6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1BLgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r1d3cN6jEee0kIKIEebuqA" name="getSocialHistorySection" bodyCondition="_r1d3c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r1d3c96jEee0kIKIEebuqA" name="body" constrainedElement="_r1d3cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1d3dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->any(true).oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r1d3cd6jEee0kIKIEebuqA" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1d3ct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_UBzvED_LEeGXieeKs7NJjA" name="ProgressNote">
      <ownedComment xmi:id="_m480MD_LEeGXieeKs7NJjA">
        <body>A Progress Note documents a patient's clinical status during a hospitalization or outpatient visit; thus, it is associated with an encounter.&#xD;
Taber's  medical dictionary defines a Progress Note as &quot;An ongoing record of a patient's illness and treatment. Physicians, nurses, consultants, and therapists record their notes concerning the progress or lack of progress made by the patient between the time of the previous note and the most recent note.&quot; &#xD;
Mosby's  medical dictionary defines a Progress Note as &quot;Notes made by a nurse, physician, social worker, physical therapist, and other health care professionals that describe the patient's condition and the treatment given or planned.&quot;&#xD;
A Progress Note is not a re-evaluation note. A Progress Note is not intended to be a Progress Report for Medicare. Medicare B Section 1833(e) defines the requirements of a Medicare Progress Report.</body>
      </ownedComment>
      <ownedRule xmi:id="_iu5zoD_hEeGysvimLgYv4A" name="ProgressNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_iu5zoT_hEeGysvimLgYv4A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_lKUtMD_hEeGysvimLgYv4A" name="ProgressNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lKUtMT_hEeGysvimLgYv4A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r1eegN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1eegd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.9')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r2H-wN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r2H-wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r1lMMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1lMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11506-3' or value.code = '18733-6' or value.code = '18762-5' or value.code = '28569-2' or value.code = '28617-9' or value.code = '34900-1' or value.code = '34904-3' or value.code = '18764-1' or value.code = '28623-7' or value.code = '11507-1' or value.code = '11508-9' or value.code = '11509-7' or value.code = '28627-8' or value.code = '11510-5' or value.code = '28656-7' or value.code = '11512-1' or value.code = '34126-3' or value.code = '15507-7' or value.code = '34129-7' or value.code = '34125-5' or value.code = '34130-5' or value.code = '34131-3' or value.code = '34124-8' or value.code = '34127-1' or value.code = '34128-9' or value.code = '34901-9' or value.code = '34132-1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r3ssEN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3ssEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r4NCYN6jEee0kIKIEebuqA" name="ProgressNoteComponentOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4NCYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r6COYN6jEee0kIKIEebuqA" name="ProgressNoteAssessmentSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6COYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r6eTQN6jEee0kIKIEebuqA" name="ProgressNotePlanOfCareSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6eTQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r66YIN6jEee0kIKIEebuqA" name="ProgressNoteAssessmentAndPlanSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r66YId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r7bVgN6jEee0kIKIEebuqA" name="ProgressNoteAllergiesSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7bVgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r75PkN6jEee0kIKIEebuqA" name="ProgressNoteChiefComplaintSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r75Pkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r8WikN6jEee0kIKIEebuqA" name="ProgressNoteInterventionsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r8Wikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r8z1kN6jEee0kIKIEebuqA" name="ProgressNoteMedicationsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r8z1kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r9RvoN6jEee0kIKIEebuqA" name="ProgressNoteObjectiveSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r9Rvod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r9wQwN6jEee0kIKIEebuqA" name="ProgressNotePhysicalExamSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r9wQwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r-PY8N6jEee0kIKIEebuqA" name="ProgressNoteProblemSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-PY8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r-t6EN6jEee0kIKIEebuqA" name="ProgressNoteResultsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-t6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r_LNEN6jEee0kIKIEebuqA" name="ProgressNoteReviewOfSystemsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_LNEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_r_qVQN6jEee0kIKIEebuqA" name="ProgressNoteSubjectiveSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_qVQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sAGaIN6jEee0kIKIEebuqA" name="ProgressNoteVitalSignsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sAGaId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tozdUN6jEee0kIKIEebuqA" name="ProgressNoteInstructionsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tozdUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e6rQN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e6rQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(effectiveTime->forAll(not low.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e7SUN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e7SUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(effectiveTime->forAll(width.oclIsUndefined() implies not high.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e75YN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2PreciseToTheDay" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e75Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 8) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 8))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e8gcN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2PreciseToTheMinute" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e8gcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 12) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e9HgN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2PreciseToTheSecond" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e9Hgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() implies effectiveTime.low.value.size() >= 14) and (not effectiveTime.high.value.oclIsUndefined() implies effectiveTime.high.value.size() >= 14))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e9ukN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e9ukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((not effectiveTime.low.value.oclIsUndefined() and effectiveTime.low.value.size() > 8 implies effectiveTime.low.value.size() >= 15) and (not effectiveTime.high.value.oclIsUndefined() and effectiveTime.high.value.size() > 8 implies effectiveTime.high.value.size() >= 15))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e-VoN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2TemplateId" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e-Vod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.3.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e-8sN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2ClassCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e-8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4e_jwN6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4e_jwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4fAK0N6jEee0kIKIEebuqA" name="ProgressNoteDocumentationOfServiceEvent2" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4fAK0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gk4IN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gk4Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null).healthCareFacility->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4glfMN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4glfMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null)->reject(healthCareFacility->one(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gmGQN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6PreciseToTheDay" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gmGQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gmtUN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6PreciseToTheMinute" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gmtUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 12)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gnUYN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6PreciseToTheSecond" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gnUYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 14)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gnUYt6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gn7cN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() and effectiveTime.value.size() > 8 implies effectiveTime.value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gn7cd6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gn7ct6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4goigN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4goigd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gpJkN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6Location" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gpJkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4gpwoN6jEee0kIKIEebuqA" name="ProgressNoteComponentOfEncompassingEncounter6" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4gpwod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_UCQbAD_LEeGXieeKs7NJjA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_r6C1cN6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_r6C1c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r6C1c96jEee0kIKIEebuqA" name="body" constrainedElement="_r6C1cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6C1dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r6C1cd6jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6C1ct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r6e6UN6jEee0kIKIEebuqA" name="getPlanOfCareSection" bodyCondition="_r6e6U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r6e6U96jEee0kIKIEebuqA" name="body" constrainedElement="_r6e6UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6e6VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->any(true).oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r6e6Ud6jEee0kIKIEebuqA" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6e6Ut6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r66YIt6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection" bodyCondition="_r66_Mt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r66_Mt6jEee0kIKIEebuqA" name="body" constrainedElement="_r66YIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r66_M96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r66_MN6jEee0kIKIEebuqA" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r66_Md6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r7b8kN6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional" bodyCondition="_r7b8k96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r7b8k96jEee0kIKIEebuqA" name="body" constrainedElement="_r7b8kN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7b8lN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r7b8kd6jEee0kIKIEebuqA" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r7b8kt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r752oN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_r752o96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r752o96jEee0kIKIEebuqA" name="body" constrainedElement="_r752oN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r752pN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r752od6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r752ot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r8XJoN6jEee0kIKIEebuqA" name="getInterventionsSection" bodyCondition="_r8XJo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r8XJo96jEee0kIKIEebuqA" name="body" constrainedElement="_r8XJoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r8XJpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection))->asSequence()->any(true).oclAsType(consol::InterventionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r8XJod6jEee0kIKIEebuqA" type="_hqzJADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r8XJot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r8z1kt6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional" bodyCondition="_r8z1ld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r8z1ld6jEee0kIKIEebuqA" name="body" constrainedElement="_r8z1kt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r8z1lt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r8z1k96jEee0kIKIEebuqA" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r8z1lN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r9SWsN6jEee0kIKIEebuqA" name="getObjectiveSection" bodyCondition="_r9SWs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r9SWs96jEee0kIKIEebuqA" name="body" constrainedElement="_r9SWsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r9SWtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection))->asSequence()->any(true).oclAsType(consol::ObjectiveSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r9SWsd6jEee0kIKIEebuqA" type="_rNJpADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r9SWst6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r9w30N6jEee0kIKIEebuqA" name="getPhysicalExamSection" bodyCondition="_r9w3096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r9w3096jEee0kIKIEebuqA" name="body" constrainedElement="_r9w30N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r9w31N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r9w30d6jEee0kIKIEebuqA" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r9w30t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r-QAAN6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional" bodyCondition="_r-QAA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r-QAA96jEee0kIKIEebuqA" name="body" constrainedElement="_r-QAAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-QABN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r-QAAd6jEee0kIKIEebuqA" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-QAAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r-t6Et6jEee0kIKIEebuqA" name="getResultsSectionEntriesOptional" bodyCondition="_r-t6Fd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r-t6Fd6jEee0kIKIEebuqA" name="body" constrainedElement="_r-t6Et6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-t6Ft6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r-t6E96jEee0kIKIEebuqA" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-t6FN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r_L0IN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_r_L0I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r_L0I96jEee0kIKIEebuqA" name="body" constrainedElement="_r_L0IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_L0JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r_L0Id6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_L0It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_r_q8UN6jEee0kIKIEebuqA" name="getSubjectiveSection" bodyCondition="_r_q8U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_r_q8U96jEee0kIKIEebuqA" name="body" constrainedElement="_r_q8UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_q8VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))->asSequence()->any(true).oclAsType(consol::SubjectiveSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_r_q8Ud6jEee0kIKIEebuqA" type="_iy8nYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_q8Ut6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sAGaIt6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional" bodyCondition="_sAHBMt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sAHBMt6jEee0kIKIEebuqA" name="body" constrainedElement="_sAGaIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sAHBM96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sAHBMN6jEee0kIKIEebuqA" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAHBMd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_to0EYN6jEee0kIKIEebuqA" name="getInstructionsSection" bodyCondition="_to0EY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_to0EY96jEee0kIKIEebuqA" name="body" constrainedElement="_to0EYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_to0EZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))->asSequence()->any(true).oclAsType(consol::InstructionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_to0EYd6jEee0kIKIEebuqA" type="_4qKukEE1EeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_to0EYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0fjXAEEvEeGdmoWy_aLP0Q" name="PostprocedureDiagnosis">
      <ownedComment xmi:id="_rQo48FmwEeGRqYkwoeymcA">
        <body>The Postprocedure Diagnosis entry encodes the diagnosis or diagnoses discovered or confirmed during the procedure. Often it is the same as the pre-procedure diagnosis or indication.</body>
      </ownedComment>
      <ownedRule xmi:id="_sEz7A96jEee0kIKIEebuqA" name="PostprocedureDiagnosisTemplateId" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sE0iEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.51')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sE4McN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisClassCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sE4Mcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sE9E8N6jEee0kIKIEebuqA" name="PostprocedureDiagnosisMoodCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sE9E8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sFAvUN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sFBWYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sFjh4N6jEee0kIKIEebuqA" name="PostprocedureDiagnosisProblemObservation" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sFjh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_0fjXAUEvEeGdmoWy_aLP0Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sFkI8N6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_sFkI896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sFkI896jEee0kIKIEebuqA" name="body" constrainedElement="_sFkI8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sFkI9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sFkI8d6jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFkI8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0baBYEEwEeGdmoWy_aLP0Q" name="PreoperativeDiagnosis">
      <ownedRule xmi:id="_sGDRJN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisTemplateId" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGD4MN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.65')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sGG7gN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisClassCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGG7gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sGKl4N6jEee0kIKIEebuqA" name="PreoperativeDiagnosisMoodCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGKl4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sGOQQN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGOQQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sGvNoN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisProblemObservation" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGvNod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_0baBYUEwEeGdmoWy_aLP0Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sGvNot6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_sGvNpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sGvNpd6jEee0kIKIEebuqA" name="body" constrainedElement="_sGvNot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sGvNpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sGvNo96jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGvNpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4qKukEE1EeGdmoWy_aLP0Q" name="InstructionsSection">
      <ownedComment xmi:id="_9It9gEE1EeGdmoWy_aLP0Q">
        <body>The Instructions section records instructions given to a patient. List patient decision aids here.</body>
      </ownedComment>
      <ownedRule xmi:id="_sHvTMN6jEee0kIKIEebuqA" name="InstructionsSectionTemplateId" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHvTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.45')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sH0LsN6jEee0kIKIEebuqA" name="InstructionsSectionCode" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH0Lsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '69730-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sH5EMN6jEee0kIKIEebuqA" name="InstructionsSectionCodeP" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH5EMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sIAY8N6jEee0kIKIEebuqA" name="InstructionsSectionTitle" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIAY8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sIF4gN6jEee0kIKIEebuqA" name="InstructionsSectionText" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIF4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sIkZoN6jEee0kIKIEebuqA" name="InstructionsSectionInstructions" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIkZod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::Instructions))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4qKukUE1EeGdmoWy_aLP0Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sIlAsN6jEee0kIKIEebuqA" name="getInstructionss" bodyCondition="_sIlAs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sIlAs96jEee0kIKIEebuqA" name="body" constrainedElement="_sIlAsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIlAtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions)).oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sIlAsd6jEee0kIKIEebuqA" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIlAst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_LNP08EFGEeGorO80f-Cppg" name="AdmissionMedication">
      <ownedComment xmi:id="_NdKLUHhrEeGJtvg2iiStYg">
        <body>The Admission Medications entry codes medications that the patient took prior to admission.</body>
      </ownedComment>
      <ownedRule xmi:id="_sIlnwN6jEee0kIKIEebuqA" name="AdmissionMedicationTemplateId" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sImO0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.36')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sIp5MN6jEee0kIKIEebuqA" name="AdmissionMedicationClassCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIqgQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sIvYwN6jEee0kIKIEebuqA" name="AdmissionMedicationMoodCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIvYwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sI5w0N6jEee0kIKIEebuqA" name="AdmissionMedicationCodeP" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sI5w0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sI0RQN6jEee0kIKIEebuqA" name="AdmissionMedicationCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sI0RQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sJaHIN6jEee0kIKIEebuqA" name="AdmissionMedicationMedicationActivity" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJaHId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_LNsg4EFGEeGorO80f-Cppg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sJauMN6jEee0kIKIEebuqA" name="getMedicationActivities" bodyCondition="_sJauM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sJauM96jEee0kIKIEebuqA" name="body" constrainedElement="_sJauMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJauNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity)).oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sJauMd6jEee0kIKIEebuqA" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJauMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_5K6mAEFHEeGorO80f-Cppg" name="HospitalAdmissionDiagnosis">
      <ownedComment xmi:id="_90pKMEFHEeGorO80f-Cppg">
        <body>The Hospital Admission Diagnosis entry describes the relevant problems or diagnoses at the time of admission.</body>
      </ownedComment>
      <ownedRule xmi:id="_sJ7rkN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisTemplateId" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ7rkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.34')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sJ_9AN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisClassCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ_9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sKE1gN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisMoodCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKE1gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sKIf4N6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKIf4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sKpdQN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisProblemObservation" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKpdQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_5K6mAUFHEeGorO80f-Cppg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sKqEUN6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_sKqEU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sKqEU96jEee0kIKIEebuqA" name="body" constrainedElement="_sKqEUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKqEVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sKqEUd6jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sKqEUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XwBooEUuEeGdQ4KWAmnbhw" name="DiagnosticImagingReport">
      <ownedComment xmi:id="_kSJscEUuEeGdQ4KWAmnbhw">
        <body>A Diagnostic Imaging Report (DIR) is a document that contains a consulting specialist's interpretation of image data.  It conveys the interpretation to the referring (ordering) physician and becomes part of the patient's medical record.  It is for use in Radiology, Endoscopy, Cardiology, and other imaging specialties.</body>
      </ownedComment>
      <ownedRule xmi:id="__CBy8EUvEeGdQ4KWAmnbhw" name="DiagnosticImagingReportUseDiagnosticImagingCode" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_RwFNgEUwEeGdQ4KWAmnbhw">
          <language>OCL</language>
          <body>not self.code.oclIsUndefined() and self.code.code = '18748-4'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_CldWAErZEeGJpZWiuxRVIw" name="DiagnosticImagingReportAllSectionsHaveTitle" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_DuVCkErZEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>self.getAllSections()->reject(section : cda::Section | section.templateId->exists(root = '2.16.840.1.113883.10.20.6.1.1'))->forAll(section : cda::Section | not section.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AKaQErZEeGJpZWiuxRVIw" name="DiagnosticImagingReportSectionsHaveText" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6sfZMErZEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>self.getAllSections()->reject(section : cda::Section | section.templateId->exists(root = '2.16.840.1.113883.10.20.6.1.1'))->forAll(section : cda::Section | not section.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sUkOQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sUk1UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sVNHcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCodeP" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sVNHcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sUvNYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCode" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sUvNYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '18748-4' or value.code = '18747-6' or value.code = '18755-9' or value.code = '18760-9' or value.code = '18757-5' or value.code = '18758-3' or value.code = '18745-0' or value.code = '11522-0' or value.code = '18746-8' or value.code = '18751-8' or value.code = '11525-3'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sVrBgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsId" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sVrBgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sWlngN6jEee0kIKIEebuqA" name="DiagnosticImagingReportInformant" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sWlngd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->select(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(rim::Participation))->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sXBFUN6jEee0kIKIEebuqA" name="DiagnosticImagingReportInformationRecipient" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sXBFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sXb8EN6jEee0kIKIEebuqA" name="DiagnosticImagingReportParticipant1" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sXb8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sYqEEN6jEee0kIKIEebuqA" name="DiagnosticImagingReportInFulfillmentOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sYqEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->one(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sZGI8N6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZGI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sai6cN6jEee0kIKIEebuqA" name="DiagnosticImagingReportRelatedDocument" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sajhgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->one(relatedDocument : cda::RelatedDocument | not relatedDocument.oclIsUndefined() and relatedDocument.oclIsKindOf(cda::RelatedDocument))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sbt_IN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sbt_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_siWLkN6jEee0kIKIEebuqA" name="DiagnosticImagingReportFindingsSection" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_siWLkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tlo0kN6jEee0kIKIEebuqA" name="DiagnosticImagingReportDICOMObjectCatalogSection" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tlo0kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DICOMObjectCatalogSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4h6U4N6jEee0kIKIEebuqA" name="DiagnosticImagingReportParticipantAssociatedEntityPersonName" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4h6U4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4h6U4t6jEee0kIKIEebuqA" name="DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4h6U496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4h678N6jEee0kIKIEebuqA" name="DiagnosticImagingReportParticipantAssociatedEntity" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4h678d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4jGnsN6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4jGnsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::ACT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4jHOwN6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOfServiceEvent4Code" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4jHOwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4jHOwt6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOfServiceEvent4Id" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4jHOw96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4jH10N6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4jH10d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(consol::PhysicianReadingStudyPerformer)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4jIc4N6jEee0kIKIEebuqA" name="DiagnosticImagingReportDocumentationOfServiceEvent3" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4jIc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lLEQN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lLEQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->size() = 1 or representedOrganization->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lLrUN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lLrUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lLrUt6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheDay" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lLrU96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lMSYN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheMinute" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lMSYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 12)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lM5cN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheSecond" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lM5cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() implies effectiveTime.value.size() >= 14)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lNggN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7IfMorePreciseThanDayIncludeTimeZoneOffset" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lNggd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.value.oclIsUndefined() and effectiveTime.value.size() > 8 implies effectiveTime.value.size() >= 15)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lNggt6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lNgg96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lOHkN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7Id" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lOHkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lOuoN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lOuod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(consol::PhysicianofRecordParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lPVsN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lPVsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lP8wN6jEee0kIKIEebuqA" name="DiagnosticImagingReportComponentOfEncompassingEncounter" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lP8wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_XwdtgEUuEeGdQ4KWAmnbhw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_siWLkt6jEee0kIKIEebuqA" name="getFindingsSection" bodyCondition="_siWLld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_siWLld6jEee0kIKIEebuqA" name="body" constrainedElement="_siWLkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_siWyoN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FindingsSection))->asSequence()->any(true).oclAsType(consol::FindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_siWLk96jEee0kIKIEebuqA" type="_ZcC-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siWLlN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tlo0kt6jEee0kIKIEebuqA" name="getDICOMObjectCatalogSection" bodyCondition="_tlo0ld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tlo0ld6jEee0kIKIEebuqA" name="body" constrainedElement="_tlo0kt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tlo0lt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DICOMObjectCatalogSection))->asSequence()->any(true).oclAsType(consol::DICOMObjectCatalogSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tlo0k96jEee0kIKIEebuqA" type="_WPTWEDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlo0lN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_H1UdcEVEEeGAh_iQGJvI5w" name="PhysicianReadingStudyPerformer">
      <ownedComment xmi:id="_s137QIfHEeSBauRYePLghA">
        <body>This participant is the Physician Reading Study Performer defined in documentationOf/serviceEvent and is usually different from the attending physician. The reading physician??interprets the images and evidence of the study (DICOM Definition)</body>
      </ownedComment>
      <ownedRule xmi:id="_sZfxkd6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerTemplateId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZgYoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sZi04N6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerTime" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZi04d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sZmfQN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerTypeCode" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZmfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.typeCode=vocab::x_ServiceEventPerformer::PRF</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_shKf0N6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntity" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_shKf0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lTAEN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lTAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 8) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 8) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 8))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lTnIN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lTnId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 12) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 12) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 12))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lTnIt6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lTnI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.time->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 14) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 14) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 14))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lUOMN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lUOMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.time->excluding(null)->select(isNullFlavorUndefined())->reject((not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15) and ((not low.value.oclIsUndefined() and low.value.size() > 8 implies low.value.size() >= 15) and (not high.value.oclIsUndefined() and high.value.size() > 8 implies high.value.size() >= 15)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lud4N6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntityHasDICOM" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lud4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(code.codeSystem = '1.2.840.10008.2.16.4' or code.codeSystem = '2.16.840.1.113883.6.101')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lud4t6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lud496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(not assignedPerson->isEmpty() or  not representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lvE8N6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lvE8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lvsAN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntityId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lvsAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4lwTEN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerAssignedEntityCode" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4lwTEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H1UdcUVEEeGAh_iQGJvI5w">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_FvF74EcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_H_izsEb1EeGp67IkyTw1fg" name="PhysicianofRecordParticipant">
      <ownedComment xmi:id="_TthdwEb1EeGp67IkyTw1fg">
        <body>This encounterParticipant is the attending physician and is usually different from the Physician Reading Study Performer defined in documentationOf/serviceEvent.</body>
      </ownedComment>
      <ownedRule xmi:id="_sajhgd6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantTemplateId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sakIkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sanL4N6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantTypeCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sanL4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.typeCode=vocab::x_EncounterParticipant::ATND</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_shjhYN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntity" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_shjhYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mjkUN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityAssignedPersonName" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mjkUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mkLYN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityHasDICOMOrNUCCCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mkLYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(code.codeSystem = '1.2.840.10008.2.16.4' or code.codeSystem = '2.16.840.1.113883.6.101')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mkycN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityHasNationalProviderId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mkycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mlZgN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mlZgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mlZgt6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mmAkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mmAkd6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityAssignedPerson" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mmAkt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H_izsUb1EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_5t1WAEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_vjf-wEb4EeGp67IkyTw1fg" name="StudyAct">
      <ownedComment xmi:id="_MDWe4FwTEeG0y_7i0ygc4g">
        <body>A Study Act contains the DICOM study information that defines the characteristics of a referenced medical study performed on a patient. A study is a collection of one or more series of medical images, presentation states, SR documents, overlays, and/or curves that are logically related for the purpose of diagnosing a patient. Each study is associated with exactly one patient. A study may include composite instances that are created by a single modality, multiple modalities, or by multiple devices of the same modality. The study information is modality-independent. Study Act clinical statements are only instantiated in the DICOM Object Catalog section; in other sections, the SOP Instance Observation is included directly.</body>
      </ownedComment>
      <ownedRule xmi:id="_d5wtUErcEeGJpZWiuxRVIw" name="StudyActIdsHaveRoot" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <ownedComment xmi:id="_6tKHoOZVEeGINOJ_SD9_dA">
          <body>The @root contains the OID of the study instance UID since DICOM study ids consist only of an OID</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_etURMErcEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>self.id->forAll( not root.oclIsUndefined() )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Be9EIErdEeGJpZWiuxRVIw" name="StudyActNoIdExtension" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_EVWCcErdEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>self.id->forAll(  extension.oclIsUndefined() )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_USs-cOZWEeGINOJ_SD9_dA" name="StudyActTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_e3Cf4OZWEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_as4MkOZWEeGINOJ_SD9_dA" name="StudyActTextReferenceValue" constrainedElement="_USs-cOZWEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_hjLWAOZWEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cGcnkOZWEeGINOJ_SD9_dA" name="StudyActReferenceValue" constrainedElement="_as4MkOZWEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_j8RUUOZWEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_scgpUd6jEee0kIKIEebuqA" name="StudyActTemplateId" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_schQYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_scn-EN6jEee0kIKIEebuqA" name="StudyActClassCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_scn-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_scrocN6jEee0kIKIEebuqA" name="StudyActMoodCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_scrocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_scurwN6jEee0kIKIEebuqA" name="StudyActId" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_scurwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_scxvEN6jEee0kIKIEebuqA" name="StudyActCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_scxvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '113014' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sc2nkN6jEee0kIKIEebuqA" name="StudyActEffectiveTime" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sc2nkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sc5q4N6jEee0kIKIEebuqA" name="StudyActText" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sc5q4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sjKD4N6jEee0kIKIEebuqA" name="StudyActSeriesAct" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKD4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::SeriesAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_vjpIsEb4EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sjKD4t6jEee0kIKIEebuqA" name="getSeriesAct" bodyCondition="_sjKD5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sjKD5d6jEee0kIKIEebuqA" name="body" constrainedElement="_sjKD4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKD5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::SeriesAct))->asSequence()->any(true).oclAsType(consol::SeriesAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sjKD496jEee0kIKIEebuqA" type="_N2wscEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjKD5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_N2wscEb6EeGp67IkyTw1fg" name="SeriesAct">
      <ownedComment xmi:id="_ltp54FwTEeG0y_7i0ygc4g">
        <body>A Series Act contains the DICOM series information for referenced DICOM composite objects. The series information defines the attributes that are used to group composite instances into distinct logical sets. Each series is associated with exactly one study. Series Act clinical statements are only instantiated in the DICOM Object Catalog section inside a Study Act, and thus do not require a separate templateId; in other sections, the SOP Instance Observation is included directly.</body>
      </ownedComment>
      <ownedRule xmi:id="_2p6msFwTEeG0y_7i0ygc4g" name="SeriesActIdHasRoot" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <ownedComment xmi:id="_9KjXIOZVEeGINOJ_SD9_dA">
          <body>The @root contains the OID of the study instance UID since DICOM study ids consist only of an OID</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5kx1UFwTEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.id->forAll( not root.oclIsUndefined() )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_EbZZkFwUEeG0y_7i0ygc4g" name="SeriesActIdNoExtension">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GNg3cFwUEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.id->forAll(  extension.oclIsUndefined() )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_arA2YFwUEeG0y_7i0ygc4g" name="SeriesActCodeQualifier" constrainedElement="_EbZZkFwUEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_eVe9AFwUEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.code.qualifier->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_hmNt8FwUEeG0y_7i0ygc4g" name="SeriesActCodeQualifierCode" constrainedElement="_arA2YFwUEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ie5CYFwUEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.code.qualifier.name->one(name : datatypes::CV | name.code = '121139' and name.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oCw6oFwUEeG0y_7i0ygc4g" name="SeriesActCodeQualifierValue" constrainedElement="_hmNt8FwUEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pP0joFwUEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.code.qualifier.value->one(val | not val.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sPmHcFwUEeG0y_7i0ygc4g" name="SeriesActCodeQualifierValueCode" constrainedElement="_oCw6oFwUEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t8fuIFwUEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.code.qualifier.value->one(val | (not val.oclIsUndefined() or val.isNullFlavorUndefined()) implies val.oclIsKindOf(datatypes::ANY) and val.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sc8HIN6jEee0kIKIEebuqA" name="SeriesActTemplateId" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sc8HId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.63')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdEqAN6jEee0kIKIEebuqA" name="SeriesActClassCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdEqAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdIUYN6jEee0kIKIEebuqA" name="SeriesActMoodCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdIUYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdL-wN6jEee0kIKIEebuqA" name="SeriesActCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdL-wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '113015' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdQ3QN6jEee0kIKIEebuqA" name="SeriesActEffectiveTime" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdQ3Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdT6kN6jEee0kIKIEebuqA" name="SeriesActId" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdT6kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdW94N6jEee0kIKIEebuqA" name="SeriesActText" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdW94d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sjjsgN6jEee0kIKIEebuqA" name="SeriesActSOPInstanceObservation" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjjsgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SOPInstanceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_N2wscUb6EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_sjkTkN6jEee0kIKIEebuqA" name="getSOPInstanceObservations" bodyCondition="_sjkTk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sjkTk96jEee0kIKIEebuqA" name="body" constrainedElement="_sjkTkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjkTlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SOPInstanceObservation)).oclAsType(consol::SOPInstanceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sjkTkd6jEee0kIKIEebuqA" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjkTkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_9o7WcEb6EeGp67IkyTw1fg" name="SOPInstanceObservation">
      <ownedComment xmi:id="_P8O7IErfEeGJpZWiuxRVIw">
        <body>A SOP Instance Observation contains the DICOM Service Object Pair (SOP) Instance information for referenced DICOM composite objects. The SOP Instance act class is used to reference both image and non-image DICOM instances. The text attribute contains the DICOM WADO reference.</body>
      </ownedComment>
      <ownedRule xmi:id="_vIPrMErfEeGJpZWiuxRVIw" name="SOPInstanceObservationEffectiveTimeHasValue" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wVIVEErfEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.value.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0eEgYErfEeGJpZWiuxRVIw" name="SOPInstanceObservationEffectiveTimeNoLow" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1WsxgErfEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IsccErfEeGJpZWiuxRVIw" name="SOPInstanceObservationEffectiveTimeNoHigh" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KtTEErfEeGJpZWiuxRVIw">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_H4BmkFwWEeG0y_7i0ygc4g" name="SOPInstanceObservationTextMediaType">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_MEj4cFwWEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text.mediaType = 'application/dicom'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_QcZbYFwWEeG0y_7i0ygc4g" name="SOPInstanceObservationTextReference" constrainedElement="_H4BmkFwWEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SRyPsFwWEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text.reference->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_VYPqUFwWEeG0y_7i0ygc4g" name="SOPInstanceObservationTextReferenceValue" constrainedElement="_QcZbYFwWEeG0y_7i0ygc4g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_XhkHQFwWEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text.reference.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdZaIN6jEee0kIKIEebuqA" name="SOPInstanceObservationTemplateId" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdZaId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.8')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdh9AN6jEee0kIKIEebuqA" name="SOPInstanceObservationClassCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdh9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::DGIMG</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdlnYN6jEee0kIKIEebuqA" name="SOPInstanceObservationEffectiveTime" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdlnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdoqsN6jEee0kIKIEebuqA" name="SOPInstanceObservationId" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdoqsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdruAN6jEee0kIKIEebuqA" name="SOPInstanceObservationMoodCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdruAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdvYYN6jEee0kIKIEebuqA" name="SOPInstanceObservationText" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdvYYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sd3UMN6jEee0kIKIEebuqA" name="SOPInstanceObservationCodeP" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sd3UMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sdzp0N6jEee0kIKIEebuqA" name="SOPInstanceObservationCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdzp0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '1.2.840.10008.2.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_skBmkN6jEee0kIKIEebuqA" name="SOPInstanceObservationSOPInstanceObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_skCNoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SOPInstanceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_skcdUN6jEee0kIKIEebuqA" name="SOPInstanceObservationPurposeofReferenceObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_skcdUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PurposeofReferenceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sk3UEN6jEee0kIKIEebuqA" name="SOPInstanceObservationReferencedFramesObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sk3UEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReferencedFramesObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_9o7WcUb6EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_skCNod6jEee0kIKIEebuqA" name="getSOPInstanceObservations" bodyCondition="_skCNpN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_skCNpN6jEee0kIKIEebuqA" name="body" constrainedElement="_skCNod6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_skCNpd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SOPInstanceObservation)).oclAsType(consol::SOPInstanceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_skCNot6jEee0kIKIEebuqA" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skCNo96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_skcdUt6jEee0kIKIEebuqA" name="getPurposeofReferenceObservations" bodyCondition="_skcdVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_skcdVd6jEee0kIKIEebuqA" name="body" constrainedElement="_skcdUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_skcdVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PurposeofReferenceObservation)).oclAsType(consol::PurposeofReferenceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_skcdU96jEee0kIKIEebuqA" type="_J-F8UEb7EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skcdVN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_sk37IN6jEee0kIKIEebuqA" name="getReferencedFramesObservations" bodyCondition="_sk37I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_sk37I96jEee0kIKIEebuqA" name="body" constrainedElement="_sk37IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_sk37JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReferencedFramesObservation)).oclAsType(consol::ReferencedFramesObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_sk37Id6jEee0kIKIEebuqA" type="_1Zyf4Eb8EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sk37It6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_J-F8UEb7EeGp67IkyTw1fg" name="PurposeofReferenceObservation">
      <ownedComment xmi:id="_u8ba4Eb8EeGp67IkyTw1fg">
        <body>A Purpose of Reference Observation describes the purpose of the DICOM composite object reference. Appropriate codes, such as externally defined DICOM codes, may be used to specify the semantics of the purpose of reference. When this observation is absent, it implies that the reason for the reference is unknown.</body>
      </ownedComment>
      <ownedRule xmi:id="_x-fKoFwZEeG0y_7i0ygc4g" name="PurposeofReferenceObservationCodeCodeSystem" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <ownedComment xmi:id="_27hsYFwZEeG0y_7i0ygc4g">
          <body>For backwards compatibility with the DICOM CMET, the code MAY be drawn from ValueSet 2.16.840.1.113883.11.20.9.28 DICOMPurposeOfReference DYNAMIC</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zyh7IFwZEeG0y_7i0ygc4g">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or (self.code.code = 'ASSERTION' and self.code.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sd6XgN6jEee0kIKIEebuqA" name="PurposeofReferenceObservationTemplateId" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sd6Xgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.9')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sd-o8N6jEee0kIKIEebuqA" name="PurposeofReferenceObservationClassCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sd-o8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_seC6YN6jEee0kIKIEebuqA" name="PurposeofReferenceObservationCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_seC6Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_seGkwN6jEee0kIKIEebuqA" name="PurposeofReferenceObservationMoodCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_seGkwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_seKPIN6jEee0kIKIEebuqA" name="PurposeofReferenceObservationValue" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_seKPId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '1.2.840.10008.2.16.4' and (value.code = '121079' or value.code = '121080' or value.code = '121112')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_J-F8UUb7EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_1Zyf4Eb8EeGp67IkyTw1fg" name="ReferencedFramesObservation">
      <ownedComment xmi:id="_E1-4EEriEeGJpZWiuxRVIw">
        <body>A Referenced Frames Observation is used if the referenced DICOM SOP instance is a multiframe image and the reference does not apply to all frames. The list of integer values for the referenced frames of a DICOM multiframe image SOP instance is contained in a Boundary Observation nested inside this class.</body>
      </ownedComment>
      <ownedRule xmi:id="_seowQN6jEee0kIKIEebuqA" name="ReferencedFramesObservationTemplateId" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_seowQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.10')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_serzkN6jEee0kIKIEebuqA" name="ReferencedFramesObservationClassCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_serzkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::ROIBND</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sevd8N6jEee0kIKIEebuqA" name="ReferencedFramesObservationMoodCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sevd8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sezIUN6jEee0kIKIEebuqA" name="ReferencedFramesObservationCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sezIUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '121190' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_slQ8sN6jEee0kIKIEebuqA" name="ReferencedFramesObservationBoundaryObservation" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_slQ8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::BoundaryObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_1Zyf4Ub8EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_slQ8st6jEee0kIKIEebuqA" name="getBoundaryObservation" bodyCondition="_slQ8td6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_slQ8td6jEee0kIKIEebuqA" name="body" constrainedElement="_slQ8st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_slQ8tt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::BoundaryObservation))->asSequence()->any(true).oclAsType(consol::BoundaryObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_slQ8s96jEee0kIKIEebuqA" type="_9Yv6gEb8EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_slQ8tN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_9Yv6gEb8EeGp67IkyTw1fg" name="BoundaryObservation">
      <ownedComment xmi:id="_xkMo4EriEeGJpZWiuxRVIw">
        <body>A Boundary Observation contains a list of integer values for the referenced frames of a DICOM multiframe image SOP instance. It identifies the frame numbers within the referenced SOP instance to which the reference applies. The CDA Boundary Observation numbers frames using the same convention as DICOM, with the first frame in the referenced object being Frame 1. A Boundary Observation must be used if a referenced DICOM SOP instance is a multiframe image and the reference does not apply to all frames.</body>
      </ownedComment>
      <ownedRule xmi:id="_se2ysN6jEee0kIKIEebuqA" name="BoundaryObservationTemplateId" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_se3ZwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.11')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_se6dEN6jEee0kIKIEebuqA" name="BoundaryObservationClassCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_se6dEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_se-HcN6jEee0kIKIEebuqA" name="BoundaryObservationCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_se-Hcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '113036' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfC_8N6jEee0kIKIEebuqA" name="BoundaryObservationMoodCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfC_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfGDQN6jEee0kIKIEebuqA" name="BoundaryObservationValue" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfGqUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty())  and self.value->forAll(element | element.oclIsTypeOf(datatypes::INT)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_9Yv6gUb8EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_9xjKIEb-EeGp67IkyTw1fg" name="TextObservation">
      <ownedComment xmi:id="_3yIrgOZWEeGINOJ_SD9_dA">
        <body>DICOM Template 2000 specifies that Imaging Report Elements of Value Type Text are contained in sections. The Imaging Report Elements are inferred from Basic Diagnostic Imaging Report Observations that consist of image references and measurements (linear, area, volume, and numeric). Text DICOM Imaging Report Elements in this context are mapped to CDA text observations that are section components and are related to the SOP Instance Observations (templateId 2.16.840.1.113883.10.20.6.2.8) or Quantity Measurement Observations (templateId 2.16.840.1.113883.10.20.6.2.14) by the SPRT (Support) act relationship.&#xD;
A Text Observation is required if the findings in the section text are represented as inferred from SOP Instance Observations.</body>
      </ownedComment>
      <ownedRule xmi:id="_k0_vQOZaEeGINOJ_SD9_dA" name="TextObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oh10cOZaEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_l-ML8OZaEeGINOJ_SD9_dA" name="TextObservationTextReferenceValue" constrainedElement="_k0_vQOZaEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pzqosOZaEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_nVEfUOZaEeGINOJ_SD9_dA" name="TextObservationReferenceValue" constrainedElement="_l-ML8OZaEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rAIb0OZaEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfIfgN6jEee0kIKIEebuqA" name="TextObservationTemplateId" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfIfgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.12')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfN_EN6jEee0kIKIEebuqA" name="TextObservationClassCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfN_Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfRpcN6jEee0kIKIEebuqA" name="TextObservationMoodCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfRpcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfVT0N6jEee0kIKIEebuqA" name="TextObservationCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfVT0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfYXIN6jEee0kIKIEebuqA" name="TextObservationEffectiveTime" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfYXId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfbacN6jEee0kIKIEebuqA" name="TextObservationText" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfbacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfd2sN6jEee0kIKIEebuqA" name="TextObservationValue" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfd2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::ED)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s_T0YN6jEee0kIKIEebuqA" name="TextObservationSOPInstanceObservation" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_T0Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SOPInstanceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s_s18N6jEee0kIKIEebuqA" name="TextObservationQuantityMeasurementObservation" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_tdAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::QuantityMeasurementObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_9xjKIUb-EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_s_UbcN6jEee0kIKIEebuqA" name="getSOPInstanceObservations" bodyCondition="_s_Ubc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s_Ubc96jEee0kIKIEebuqA" name="body" constrainedElement="_s_UbcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_UbdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SOPInstanceObservation)).oclAsType(consol::SOPInstanceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s_Ubcd6jEee0kIKIEebuqA" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s_Ubct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s_tdAd6jEee0kIKIEebuqA" name="getQuantityMeasurementObservations" bodyCondition="_s_tdBN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s_tdBN6jEee0kIKIEebuqA" name="body" constrainedElement="_s_tdAd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_tdBd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::QuantityMeasurementObservation)).oclAsType(consol::QuantityMeasurementObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s_tdAt6jEee0kIKIEebuqA" type="_Px2t4Eb_EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s_tdA96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Px2t4Eb_EeGp67IkyTw1fg" name="QuantityMeasurementObservation">
      <ownedComment xmi:id="_Uk93kEb_EeGp67IkyTw1fg">
        <body>A Quantity Measurement Observation records quantity measurements based on image data such as linear, area, volume, and numeric measurements. The codes in DIRQuantityMeasurementTypeCodes (ValueSet: 2.16.840.1.113883.11.20.9.29) are from the qualifier hierarchy of SNOMED CT and are not valid for observation/code according to the Term Info guidelines. These codes can be used for backwards compatibility, but going forward, codes from the observable entity hierarchy will be requested and used.</body>
      </ownedComment>
      <ownedRule xmi:id="_BCpU8OZUEeGINOJ_SD9_dA" name="QuantityMeasurementObservationCodeCodeSystemDIR">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_K4jqIOZUEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ChkKAOZUEeGINOJ_SD9_dA" name="QuantityMeasurementObservationCodeCodeSystemDICOM" constrainedElement="_BCpU8OZUEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_L6dzEOZUEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem='1.2.840.10008.2.16.4'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfgS8N6jEee0kIKIEebuqA" name="QuantityMeasurementObservationTemplateId" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfgS8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.14')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sflygN6jEee0kIKIEebuqA" name="QuantityMeasurementObservationClassCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflygd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfqD8N6jEee0kIKIEebuqA" name="QuantityMeasurementObservationMoodCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfqD8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sftHQN6jEee0kIKIEebuqA" name="QuantityMeasurementObservationCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sftuUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfwKkN6jEee0kIKIEebuqA" name="QuantityMeasurementObservationEffectiveTime" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfwKkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sfzN4N6jEee0kIKIEebuqA" name="QuantityMeasurementObservationValue" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfzN4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::PQ)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-6LwN6jEee0kIKIEebuqA" name="QuantityMeasurementObservationSOPInstanceObservation" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-6Lwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SOPInstanceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Px2t4Ub_EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_s-6y0N6jEee0kIKIEebuqA" name="getSOPInstanceObservations" bodyCondition="_s-6y096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s-6y096jEee0kIKIEebuqA" name="body" constrainedElement="_s-6y0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-6y1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SOPInstanceObservation)).oclAsType(consol::SOPInstanceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s-6y0d6jEee0kIKIEebuqA" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s-6y0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_pmiz8Eb_EeGp67IkyTw1fg" name="CodeObservations">
      <ownedComment xmi:id="_uqo_8Eb_EeGp67IkyTw1fg">
        <body>DICOM Template 2000 specifies that Imaging Report Elements of Value Type Code are contained in sections. The Imaging Report Elements are inferred from Basic Diagnostic Imaging Report Observations that consist of image references and measurements (linear, area, volume, and numeric). Coded DICOM Imaging Report Elements in this context are mapped to CDA-coded observations that are section components and are related to the SOP Instance Observations (templateId 2.16.840.1.113883.10.20.6.2.8) or Quantity Measurement Observations (templateId 2.16.840.1.113883.10.20.6.2.14) by the SPRT (Support) act relationship.</body>
      </ownedComment>
      <ownedRule xmi:id="_sf1qIN6jEee0kIKIEebuqA" name="CodeObservationsTemplateId" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf1qId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.13')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sf5UgN6jEee0kIKIEebuqA" name="CodeObservationsClassCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf5Ugd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sf8-4N6jEee0kIKIEebuqA" name="CodeObservationsMoodCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf8-4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgApQN6jEee0kIKIEebuqA" name="CodeObservationsCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgApQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgDskN6jEee0kIKIEebuqA" name="CodeObservationsEffectiveTime" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgDskd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgGv4N6jEee0kIKIEebuqA" name="CodeObservationsValue" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgGv4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s9X6sN6jEee0kIKIEebuqA" name="CodeObservationsSOPInstanceObservation" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9X6sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SOPInstanceObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s9xjUN6jEee0kIKIEebuqA" name="CodeObservationsQuantityMeasurementObservation" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9yKYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::QuantityMeasurementObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_pmiz8Ub_EeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_s9YhwN6jEee0kIKIEebuqA" name="getSOPInstanceObservations" bodyCondition="_s9Yhw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s9Yhw96jEee0kIKIEebuqA" name="body" constrainedElement="_s9YhwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9YhxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SOPInstanceObservation)).oclAsType(consol::SOPInstanceObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s9Yhwd6jEee0kIKIEebuqA" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s9Yhwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_s9yKYd6jEee0kIKIEebuqA" name="getQuantityMeasurementObservations" bodyCondition="_s9yKZN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s9yKZN6jEee0kIKIEebuqA" name="body" constrainedElement="_s9yKYd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9yKZd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::QuantityMeasurementObservation)).oclAsType(consol::QuantityMeasurementObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s9yKYt6jEee0kIKIEebuqA" type="_Px2t4Eb_EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s9yKY96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_crHC0EcAEeGp67IkyTw1fg" name="ProcedureContext">
      <ownedComment xmi:id="_grHUkEcAEeGp67IkyTw1fg">
        <body>The ServiceEvent Procedure Context of the document header may be overridden in the CDA structured body if there is a need to refer to multiple imaging procedures or acts. The selection of the Procedure or Act entry from the clinical statement choice box depends on the nature of the imaging service that has been performed. The Procedure entry shall be used for image-guided interventions and minimal invasive imaging services, whereas the Act entry shall be used for diagnostic imaging services.</body>
      </ownedComment>
      <ownedRule xmi:id="_Rqt7cOZJEeGINOJ_SD9_dA" name="ProcedureContextEffectiveTimeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_U0JxkOZJEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies self.effectiveTime.value->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgIlEN6jEee0kIKIEebuqA" name="ProcedureContextTemplateId" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgJMIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.5')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgM2gN6jEee0kIKIEebuqA" name="ProcedureContextClassCode" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgM2gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgQg4N6jEee0kIKIEebuqA" name="ProcedureContextMoodCode" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgQg4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgTkMN6jEee0kIKIEebuqA" name="ProcedureContextCode" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgTkMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sgWngN6jEee0kIKIEebuqA" name="ProcedureContextEffectiveTime" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgWngd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_crHC0UcAEeGp67IkyTw1fg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Ker6MOM2EeGfv4R-kzpM0g" name="EncounterDiagnosis">
      <ownedComment xmi:id="_yctScOM2EeGfv4R-kzpM0g">
        <body>This template wraps relevant problems or diagnoses at the close of a visit or that need to be followed after the visit. If the encounter is associated with a Hospital Discharge, the Hospital Discharge Diagnosis must be used. This entry requires at least one Problem Observation entry.</body>
      </ownedComment>
      <ownedRule xmi:id="_sybO9d6jEee0kIKIEebuqA" name="EncounterDiagnosisTemplateId" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sybO9t6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.80')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sye5UN6jEee0kIKIEebuqA" name="EncounterDiagnosisClassCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sye5Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_syijsN6jEee0kIKIEebuqA" name="EncounterDiagnosisMoodCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_syijsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_syqfgN6jEee0kIKIEebuqA" name="EncounterDiagnosisCodeP" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_syqfgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_symOEN6jEee0kIKIEebuqA" name="EncounterDiagnosisCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_symOEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '29308-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_szF9UN6jEee0kIKIEebuqA" name="EncounterDiagnosisProblemObservation" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_szF9Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Ker6MeM2EeGfv4R-kzpM0g">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_szGkYN6jEee0kIKIEebuqA" name="getProblemObservations" bodyCondition="_szGkY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_szGkY96jEee0kIKIEebuqA" name="body" constrainedElement="_szGkYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_szGkZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation)).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_szGkYd6jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szGkYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_RYJj0OWQEeGKmvzED_He2w" name="SmokingStatusObservation">
      <ownedComment xmi:id="_0PTokOWTEeGKmvzED_He2w">
        <body>This clinical statement represents a patient's current smoking status. The vocabulary selected for this clinical statement is the best approximation of the statuses in Meaningful Use (MU) Stage 1.  &#xD;
If the patient is a smoker (77176002), the effectiveTime/low element must be present. If the patient is an ex-smoker (8517006), both the effectiveTime/low and effectiveTime/high element must be present.&#xD;
The smoking status value set includes a special code to communicate if the smoking status is unknown which is different from how Consolidated CDA generally communicates unknown information.</body>
      </ownedComment>
      <ownedRule xmi:id="_s0wxQd6jEee0kIKIEebuqA" name="SmokingStatusObservationTemplateId" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0wxQt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.78')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s0z0kN6jEee0kIKIEebuqA" name="SmokingStatusObservationClassCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0z0kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s03e8N6jEee0kIKIEebuqA" name="SmokingStatusObservationMoodCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s03e8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s07JUN6jEee0kIKIEebuqA" name="SmokingStatusObservationCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s07JUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s0-zsN6jEee0kIKIEebuqA" name="SmokingStatusObservationStatusCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0-zsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s1DFIN6jEee0kIKIEebuqA" name="SmokingStatusObservationStatusCodeP" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s1DFId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s1GvgN6jEee0kIKIEebuqA" name="SmokingStatusObservationEffectiveTime" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s1Gvgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s1JLwN6jEee0kIKIEebuqA" name="SmokingStatusObservationValue" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s1JLwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '449868002' or value.code = '428041000124106' or value.code = '8517006' or value.code = '266919005' or value.code = '77176002' or value.code = '266927001' or value.code = '428071000124103' or value.code = '428061000124105')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s1kCgN6jEee0kIKIEebuqA" name="SmokingStatusObservationValueP" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s1kCgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mqSAN6jEee0kIKIEebuqA" name="SmokingStatusObservationCDCodeTermAssertionOrLoinc" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mqSAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject((code = 'ASSERTION' and codeSystem = '2.16.840.1.113883.5.4') or (code = '72166-2' and codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mq5EN6jEee0kIKIEebuqA" name="SmokingStatusObservationCDCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mq5Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mq5Et6jEee0kIKIEebuqA" name="SmokingStatusObservationCDCodeSystem" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mq5E96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not codeSystem.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4msHMN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSCenter" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4msHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (center.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4msHMt6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSHigh" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4msHM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (high.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4msuQN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSLow" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4msuQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (low.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mtVUN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSWidth" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mtVUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (width.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_reIG0OWTEeGKmvzED_He2w">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_gIH_QOWQEeGKmvzED_He2w" name="TobaccoUse">
      <ownedComment xmi:id="_v5_OIOWTEeGKmvzED_He2w">
        <body>This clinical statement represents a patient's tobacco use. All types of tobacco use are represented using the codes from the tobacco use and exposure - finding hierarchy in SNOMED CT.</body>
      </ownedComment>
      <ownedRule xmi:id="_gBRpAOWTEeGKmvzED_He2w" name="TobaccoUseEffectiveTimeLow" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_hhh60OWTEeGKmvzED_He2w">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2LtkN6jEee0kIKIEebuqA" name="TobaccoUseTemplateId" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2Ltkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.85')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2PX8N6jEee0kIKIEebuqA" name="TobaccoUseClassCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2PX8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2TCUN6jEee0kIKIEebuqA" name="TobaccoUseMoodCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2TCUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2WssN6jEee0kIKIEebuqA" name="TobaccoUseCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2Wssd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2aXEN6jEee0kIKIEebuqA" name="TobaccoUseStatusCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2aXEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2eBcN6jEee0kIKIEebuqA" name="TobaccoUseStatusCodeP" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2eBcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2hr0N6jEee0kIKIEebuqA" name="TobaccoUseEffectiveTime" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2hr0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s2l9QN6jEee0kIKIEebuqA" name="TobaccoUseValue" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s2l9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s3CCIN6jEee0kIKIEebuqA" name="TobaccoUseValueP" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s3CCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mvKgN6jEee0kIKIEebuqA" name="TobaccoUseCDCodeTermAssertionOrLoinc" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mvKgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject((code = 'ASSERTION' and codeSystem = '2.16.840.1.113883.5.4') or (code = '11367-0' and codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mvxkN6jEee0kIKIEebuqA" name="TobaccoUseCDCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mvxkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4mwYoN6jEee0kIKIEebuqA" name="TobaccoUseCDCodeSystem" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4mwYod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not codeSystem.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gIH_QeWQEeGKmvzED_He2w">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Zi33YOYxEeGINOJ_SD9_dA" name="AssessmentScaleObservation">
      <ownedComment xmi:id="_UY-EsOY5EeGINOJ_SD9_dA">
        <body>An assessment scale is a collection of observations that together yield a summary evaluation of a particular condition. Examples include the Braden Scale (assesses pressure ulcer risk), APACHE Score (estimates mortality in critically ill patients), Mini-Mental Status Exam (assesses cognitive function), APGAR Score (assesses the health of a newborn), and Glasgow Coma Scale (assesses coma and impaired consciousness.)</body>
      </ownedComment>
      <ownedRule xmi:id="_rnS0MOYzEeGINOJ_SD9_dA" name="AssessmentScaleObservationCodeCodeSystem" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v7vE4OYzEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_WfZX8OY0EeGINOJ_SD9_dA" name="AssessmentScaleObservationInterpretationCodeTranslation" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZZ6oUOY0EeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.interpretationCode->size() > 0 implies self.interpretationCode.translation->size() > 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s4xukd6jEee0kIKIEebuqA" name="AssessmentScaleObservationTemplateId" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s4yVoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.69')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s44cQN6jEee0kIKIEebuqA" name="AssessmentScaleObservationClassCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s44cQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s48GoN6jEee0kIKIEebuqA" name="AssessmentScaleObservationMoodCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s48God6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s4_xAN6jEee0kIKIEebuqA" name="AssessmentScaleObservationCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s4_xAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5C0UN6jEee0kIKIEebuqA" name="AssessmentScaleObservationDerivationExpr" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5C0Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.derivationExpr.oclIsUndefined() or self.derivationExpr.isNullFlavorUndefined()) implies (not self.derivationExpr.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5F3oN6jEee0kIKIEebuqA" name="AssessmentScaleObservationEffectiveTime" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5F3od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5I68N6jEee0kIKIEebuqA" name="AssessmentScaleObservationId" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5I68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5L-QN6jEee0kIKIEebuqA" name="AssessmentScaleObservationInterpretationCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5L-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5PBkN6jEee0kIKIEebuqA" name="AssessmentScaleObservationStatusCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5PBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5TTAN6jEee0kIKIEebuqA" name="AssessmentScaleObservationStatusCodeP" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5TTAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s5W9YN6jEee0kIKIEebuqA" name="AssessmentScaleObservationValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s5W9Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s56-EN6jEee0kIKIEebuqA" name="AssessmentScaleObservationAuthor" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s56-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s6T_oN6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRange" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s6T_od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7j80N6jEee0kIKIEebuqA" name="AssessmentScaleObservationAssessmentScaleSupportingObservation" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7j80d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleSupportingObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4njp4N6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRangeObservationRangeTextReference" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4njp4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(not text.oclIsUndefined() implies text->forAll(reference->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4nkQ8N6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRangeObservationRangeTextReferenceValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4nkQ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(text->forAll(reference->size() = 1) implies text->forAll(reference->one(value->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4nkQ8t6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRangeObservationRangeReferenceValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4nk4AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(not text.reference.value.oclIsUndefined() implies not getSection().text.getText(text.reference.value.substring(2, text.reference.value.size())).oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4nk4Ad6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRangeObservationRangeText" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4nk4At6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject((text.oclIsUndefined() or text.isNullFlavorUndefined()) implies (not text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4nlfEN6jEee0kIKIEebuqA" name="AssessmentScaleObservationReferenceRangeObservationRange" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4nlfEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(observationRange->one(observationRange : cda::ObservationRange | not observationRange.oclIsUndefined() and observationRange.oclIsKindOf(cda::ObservationRange)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Zi33YeYxEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_s7j80t6jEee0kIKIEebuqA" name="getAssessmentScaleSupportingObservations" bodyCondition="_s7j81d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_s7j81d6jEee0kIKIEebuqA" name="body" constrainedElement="_s7j80t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7j81t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleSupportingObservation)).oclAsType(consol::AssessmentScaleSupportingObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_s7j8096jEee0kIKIEebuqA" type="_1ZKPgOY2EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s7j81N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_1ZKPgOY2EeGINOJ_SD9_dA" name="AssessmentScaleSupportingObservation">
      <ownedComment xmi:id="_VokEUOY5EeGINOJ_SD9_dA">
        <body>An Assessment Scale Supporting observation represents the components of a scale used in an Assessment Scale Observation. The individual parts that make up the component may be a group of cognitive or functional status observations.</body>
      </ownedComment>
      <ownedRule xmi:id="_W_NRsOY6EeGINOJ_SD9_dA" name="AssessmentScaleSupportingObservationCodeCodeSystem" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_eTQHEOY6EeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u6PHcOY6EeGINOJ_SD9_dA" name="AssessmentScaleSupportingObservationValueTranslation">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zCA1IOY6EeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value.oclAsType(datatypes::CD).translation->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s6toQt6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationTemplateId" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s6uPUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.86')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s6ygwN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationClassCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s6ygwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s62LIN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationMoodCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s62LId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s651gN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s651gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s6840N6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationId" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s6840d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s6_8IN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationStatusCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s6_8Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7ENkN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationStatusCodeP" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7E0oN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7IfAN6jEee0kIKIEebuqA" name="AssessmentScaleSupportingObservationValue" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7IfAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_1ZMrwOY2EeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="__pNCUOY-EeGINOJ_SD9_dA" name="CaregiverCharacteristics">
      <ownedRule xmi:id="_kF-hYOY_EeGINOJ_SD9_dA" name="CaregiverCharacteristicsValueCodeSystem">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lsVbMOY_EeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value->forAll(val | val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.1' or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7kj4N6jEee0kIKIEebuqA" name="CaregiverCharacteristicsTemplateId" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7kj4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.72')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7oOQN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsClassCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7oOQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7sfsN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsMoodCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7sfsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7wKEN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsId" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7wKEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7ymUN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7zNYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s72QsN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsStatusCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s72Qsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s76iIN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsStatusCodeP" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s76iId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s7-MgN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsValue" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s7-Mgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s8kCYN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipant" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s8kCYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oXiMN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantParticipantRoleClassCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oYJQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(isDefined('classCode') and classCode=vocab::RoleClassRoot::CAREGIVER)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oYJQd6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantTimeLow" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oYJQt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not time.oclIsUndefined() implies time.low->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oYwUN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantTimeHigh" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oYwUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not time.oclIsUndefined() implies time.high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oZXYN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantTypeCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oZXYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(typeCode=vocab::ParticipationType::IND)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oZ-cN6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantTime" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oZ-cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4oZ-ct6jEee0kIKIEebuqA" name="CaregiverCharacteristicsParticipantParticipantRole" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4oZ-c96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__pNCUeY-EeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_6kIXMOZEEeGINOJ_SD9_dA" name="MedicationUseNoneKnown">
      <ownedComment xmi:id="_EepfkOZFEeGINOJ_SD9_dA">
        <body>The recommended approach to stating no known medications is to use the appropriate nullFlavor instead of this template. See &quot;Unknown Information&quot; in Section 1.&#xD;
This template indicates that the subject is not known to be on any medications.</body>
      </ownedComment>
      <ownedRule xmi:id="_Fu374OZGEeGINOJ_SD9_dA" name="MedicationUseNoneKnownTextReference" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_J57AAOZGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_HEttcOZGEeGINOJ_SD9_dA" name="MedicationUseNoneKnownTextReferenceValue" constrainedElement="_Fu374OZGEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SlvgoOZGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_H4Cn0OZGEeGINOJ_SD9_dA" name="MedicationUseNoneKnownReferenceValue" constrainedElement="_HEttcOZGEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VIM2UOZGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s9yxcN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownTemplateId" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9yxcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.29')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s94RAN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownClassCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s94RAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s977YN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownMoodCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s977Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s9_lwN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownId" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s9_lwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-G6gN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownCodeP" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-G6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-CpEN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-CpEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-LL8N6jEee0kIKIEebuqA" name="MedicationUseNoneKnownEffectiveTime" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-LL8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-O2UN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownStatusCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-O2Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-THwN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownStatusCodeP" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-THwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-WyIN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownText" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-WyId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-Z1cN6jEee0kIKIEebuqA" name="MedicationUseNoneKnownValue" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-Z1cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '182904002' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s-eG4N6jEee0kIKIEebuqA" name="MedicationUseNoneKnownValueP" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s-eG4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_6kIXMeZEEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_dXKPQOZbEeGINOJ_SD9_dA" name="CognitiveStatusProblemObservation">
      <ownedComment xmi:id="_FgL9oOZcEeGINOJ_SD9_dA">
        <body>&lt;p>&#xD;
A cognitive status problem observation is a clinical statement that describes a patient's cognitive condition, findings, or symptoms. Examples of cognitive problem observations are inability to recall, amnesia, dementia, and aggressive behavior.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A cognitive problem observation is a finding or medical condition. This is different from a cognitive result observation, which is a response to a question that provides insight into the patient's cognitive status, judgement, comprehension ability, or response speed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
THIS TEMPLATE HAS BEEN DEPRECATED AND MAY BE DELETED FROM A FUTURE RELEASE OF THIS IMPLEMENTATION GUIDE. USE OF THIS TEMPLATE IS NOT RECOMMENDED.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Reason for deprecation: Cognitive Status Problem Observation has been merged, without loss of expressivity, into Mental Status Observation (2.16.840.1.113883.10.20.22.4.74:2014-06-09).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_daqkUOZdEeGINOJ_SD9_dA" name="ProblemObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_daqkUeZdEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies (self.text->forAll(reference->size() = 1) and self.text->forAll(reference->one(value->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gxDRUOZdEeGINOJ_SD9_dA" name="ProblemObservationHasTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gxDRUeZdEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_jpFOYOZdEeGINOJ_SD9_dA" name="ProblemObservationHasOnsetDate">
        <ownedComment xmi:id="_jpFOYeZdEeGINOJ_SD9_dA">
          <body>This field represents the onset date (CONF:16882)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_jpFOYuZdEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_kUEsIOZdEeGINOJ_SD9_dA" name="ProblemObservationHasResolutionDate">
        <ownedComment xmi:id="_kUEsIeZdEeGINOJ_SD9_dA">
          <body>This field represents the resolution date (CONF:16883)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kUEsIuZdEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s_urIN6jEee0kIKIEebuqA" name="ProblemObservationTemplateId" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_urId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.73')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s_1_4N6jEee0kIKIEebuqA" name="ProblemObservationClassCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_1_4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_s_8tkN6jEee0kIKIEebuqA" name="ProblemObservationMoodCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_s_8tkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tADbQN6jEee0kIKIEebuqA" name="ProblemObservationNegationInd" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tADbQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAKI8N6jEee0kIKIEebuqA" name="ProblemObservationId" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAKI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAVvIN6jEee0kIKIEebuqA" name="ProblemObservationCodeP" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAVvId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAQPkN6jEee0kIKIEebuqA" name="ProblemObservationCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAQPkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '373930000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAcc0N6jEee0kIKIEebuqA" name="ProblemObservationText" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAcc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAh8YN6jEee0kIKIEebuqA" name="ProblemObservationStatusCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAh8Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAoDAN6jEee0kIKIEebuqA" name="ProblemObservationEffectiveTime" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAoDAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAs7gN6jEee0kIKIEebuqA" name="CognitiveStatusProblemObservationMethodCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAs7gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (not self.methodCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tBPuEN6jEee0kIKIEebuqA" name="ProblemObservationValueP" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tBPuEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tAx0AN6jEee0kIKIEebuqA" name="ProblemObservationValue" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tAx0Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tN2msN6jEee0kIKIEebuqA" name="CognitiveStatusProblemObservationNonMedicinalSupplyActivity" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tN2msd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tOQPUN6jEee0kIKIEebuqA" name="CognitiveStatusProblemObservationCaregiverCharacteristics" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tOQPUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tOqfAN6jEee0kIKIEebuqA" name="CognitiveStatusProblemObservationAssessmentScaleObservation" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tOqfAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JGpG8OZcEeGINOJ_SD9_dA" general="_5Ha7ABUyEeGbmN_W114JUw"/>
      <ownedOperation xmi:id="_tN3NwN6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivities" bodyCondition="_tN3Nw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tN3Nw96jEee0kIKIEebuqA" name="body" constrainedElement="_tN3NwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tN3NxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tN3Nwd6jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tN3Nwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tOQ2YN6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_tOQ2Y96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tOQ2Y96jEee0kIKIEebuqA" name="body" constrainedElement="_tOQ2YN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tOQ2ZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tOQ2Yd6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tOQ2Yt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tOqfAt6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_tOrGEd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tOrGEd6jEee0kIKIEebuqA" name="body" constrainedElement="_tOqfAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tOrGEt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tOqfA96jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tOrGEN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_gkBM0OZbEeGINOJ_SD9_dA" name="CognitiveStatusResultObservation">
      <ownedComment xmi:id="_7vqakOZiEeGINOJ_SD9_dA">
        <body>This clinical statement contains details of an evaluation or assessment of a patient's cognitive status. The evaluation may include assessment of a patient's mood, memory, and ability to make decisions. The statement, if present, will include supporting caregivers, non-medical devices, and the time period for which the evaluation and assessment were performed.&#xD;
This is different from a cognitive status problem observation, which is a clinical statement that describes a patient's cognitive condition, findings, or symptoms. Examples of cognitive problem observations are inability to recall, amnesia, dementia, and aggressive behavior.</body>
      </ownedComment>
      <ownedRule xmi:id="_BlR1AOZhEeGINOJ_SD9_dA" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_BlR1AeZhEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()  implies (self.text->forAll(reference->size() = 1) and self.text->forAll(reference->one(value->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Cs16AOZhEeGINOJ_SD9_dA" name="ResultObservationTextReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Cs16AeZhEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cjM0AOZhEeGINOJ_SD9_dA" name="CognitiveStatusResultObservationValueDatatype">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_g5HEUOZhEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value->forAll(val | val.oclIsTypeOf(datatypes::CD) implies (val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tBtBEd6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tBtoIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.74')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tBzuwN6jEee0kIKIEebuqA" name="ResultObservationClassCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tBzuwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tB8RoN6jEee0kIKIEebuqA" name="ResultObservationMoodCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tB8Rod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCDmYN6jEee0kIKIEebuqA" name="ResultObservationId" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCDmYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCOlgN6jEee0kIKIEebuqA" name="ResultObservationCodeP" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCOlgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCJF8N6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCJF8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '373930000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCUFEN6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCUFEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCfrQN6jEee0kIKIEebuqA" name="ResultObservationStatusCodeP" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCfrQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCZkoN6jEee0kIKIEebuqA" name="ResultObservationStatusCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCZkod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tClK0N6jEee0kIKIEebuqA" name="ResultObservationEffectiveTime" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tClK0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCqDUN6jEee0kIKIEebuqA" name="ResultObservationValue" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCqDUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tCu70N6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tCu70d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tC0bYN6jEee0kIKIEebuqA" name="ResultObservationMethodCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tC0bYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (not self.methodCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tC5T4N6jEee0kIKIEebuqA" name="ResultObservationTargetSiteCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tC5T4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tPEHoN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationAuthor" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tPEHod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tPhaoN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tPhaod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tP7DQN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationCaregiverCharacteristics" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tP7qUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tQV6AN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationAssessmentScaleObservation" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tQV6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tQwJsN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRange" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tQwJsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4pQTAN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4pQTAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4pQ6EN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRangeObservationRange" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4pQ6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(observationRange->one(observationRange : cda::ObservationRange | not observationRange.oclIsUndefined() and observationRange.oclIsKindOf(cda::ObservationRange)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gLy9QOZfEeGINOJ_SD9_dA" general="_2J1d4BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_tPiBsN6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivities" bodyCondition="_tPiBs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tPiBs96jEee0kIKIEebuqA" name="body" constrainedElement="_tPiBsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tPiBtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tPiBsd6jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tPiBst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tP7qUd6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_tP7qVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tP7qVN6jEee0kIKIEebuqA" name="body" constrainedElement="_tP7qUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tP7qVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tP7qUt6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tP7qU96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tQV6At6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_tQV6Bd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tQV6Bd6jEee0kIKIEebuqA" name="body" constrainedElement="_tQV6At6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tQV6Bt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tQV6A96jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tQV6BN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_jfoCUOZbEeGINOJ_SD9_dA" name="CognitiveStatusResultOrganizer">
      <ownedComment xmi:id="_67cIUOZiEeGINOJ_SD9_dA">
        <body>This clinical statement identifies a set of cognitive status result observations. It contains information applicable to all of the contained cognitive status result observations. A result organizer may be used to group questions in a Patient Health Questionaire (PHQ). &#xD;
An appropriate nullFlavor can be used when the organizer/code or organizer/id is unknown.</body>
      </ownedComment>
      <ownedRule xmi:id="_ckydgOZjEeGINOJ_SD9_dA" name="CognitiveStatusResultOrganizerCodeCodeSystem" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_fg1-8OZjEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.254' or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tC_agd6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDABkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.75')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDDr8N6jEee0kIKIEebuqA" name="ResultOrganizerClassCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDETAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDJLgN6jEee0kIKIEebuqA" name="ResultOrganizerMoodCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDJLgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDOEAN6jEee0kIKIEebuqA" name="ResultOrganizerId" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDOEAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDSVcN6jEee0kIKIEebuqA" name="ResultOrganizerCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDSVcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDcGcN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCodeP" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDcGcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDWm4N6jEee0kIKIEebuqA" name="ResultOrganizerStatusCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDWm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tRlQIN6jEee0kIKIEebuqA" name="ResultOrganizerResultObservation" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tRlQId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::CognitiveStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-QfYkOZiEeGINOJ_SD9_dA" general="_2JxzgBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_tRl3MN6jEee0kIKIEebuqA" name="getConsolCognitiveStatusResultObservations" bodyCondition="_tRl3M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tRl3M96jEee0kIKIEebuqA" name="body" constrainedElement="_tRl3MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tRl3NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CognitiveStatusResultObservation)).oclAsType(consol::CognitiveStatusResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tRl3Md6jEee0kIKIEebuqA" type="_gkBM0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tRl3Mt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_lm3boOZbEeGINOJ_SD9_dA" name="DeceasedObservation">
      <ownedComment xmi:id="_ZtiHEOZkEeGINOJ_SD9_dA">
        <body>This clinical statement represents the observation that a patient has expired. It also represents the cause of death, indicated by an entryRelationship type of &quot;CAUS&quot;.</body>
      </ownedComment>
      <ownedRule xmi:id="_Dk8p4OZlEeGINOJ_SD9_dA" name="DeceasedObservationEffectiveTimeLow" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_E9UyEOZlEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies self.effectiveTime.low->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDfw0N6jEee0kIKIEebuqA" name="DeceasedObservationTemplateId" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDfw0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.79')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDkCQN6jEee0kIKIEebuqA" name="DeceasedObservationClassCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDkCQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDnsoN6jEee0kIKIEebuqA" name="DeceasedObservationMoodCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDnsod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDqv8N6jEee0kIKIEebuqA" name="DeceasedObservationId" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDqv8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDyrwN6jEee0kIKIEebuqA" name="DeceasedObservationCodeP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDyrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDuaUN6jEee0kIKIEebuqA" name="DeceasedObservationCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDuaUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tD29MN6jEee0kIKIEebuqA" name="DeceasedObservationStatusCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tD29Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tD7OoN6jEee0kIKIEebuqA" name="DeceasedObservationStatusCodeP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tD7Ood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tD-5AN6jEee0kIKIEebuqA" name="DeceasedObservationEffectiveTime" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tD-5Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tECjYN6jEee0kIKIEebuqA" name="DeceasedObservationValue" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tECjYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '419099009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tEGNwN6jEee0kIKIEebuqA" name="DeceasedObservationValueP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tEGNwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tR_f0N6jEee0kIKIEebuqA" name="DeceasedObservationProblemObservation" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tR_f0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lm3boeZbEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_tSAG4N6jEee0kIKIEebuqA" name="getProblemObservation" bodyCondition="_tSAG496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tSAG496jEee0kIKIEebuqA" name="body" constrainedElement="_tSAG4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tSAG5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation))->asSequence()->any(true).oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tSAG4d6jEee0kIKIEebuqA" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tSAG4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_rVl5AOZbEeGINOJ_SD9_dA" name="FunctionalStatusProblemObservation">
      <ownedComment xmi:id="_1PP4wObqEeGINOJ_SD9_dA">
        <body>&lt;p>&#xD;
A functional status problem observation is a clinical statement that represents a patient's functional perfomance and ability.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
THIS TEMPLATE HAS BEEN DEPRECATED IN C-CDA R2 AND MAY BE DELETED FROM A FUTURE RELEASE OF THIS IMPLEMENTATION GUIDE. USE OF THIS TEMPLATE IS NOT RECOMMENDED.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Reason for deprecation: Functional Status Problem Observation has been merged, without loss of expressivity, into Functional Status Observation (2.16.840.1.113883.10.20.22.4.67:2014-06-09).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_CDS14Pp0EeS-CfvNxekztA">
        <body>DEPRECATED</body>
      </ownedComment>
      <ownedRule xmi:id="_4AP2MObpEeGINOJ_SD9_dA" name="ProblemObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4AP2MebpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42ZbEObpEeGINOJ_SD9_dA" name="ProblemObservationTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ZbEebpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_iBSEgObpEeGINOJ_SD9_dA" name="ProblemObservationHasTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_iBSEgebpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_i8gWoObpEeGINOJ_SD9_dA" name="ProblemObservationHasOnsetDate">
        <ownedComment xmi:id="_i8gWoebpEeGINOJ_SD9_dA">
          <body>This field represents the onset date (CONF:16882)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_i8gWoubpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_j7l1EObpEeGINOJ_SD9_dA" name="ProblemObservationHasResolutionDate">
        <ownedComment xmi:id="_j7l1EebpEeGINOJ_SD9_dA">
          <body>This field represents the resolution date (CONF:16883)</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_j7l1EubpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_q-X7UObpEeGINOJ_SD9_dA" name="ProblemObservationValueNullFlavor" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q-X7UebpEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value->forAll(val | not val.isNullFlavorUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tEJ4IN6jEee0kIKIEebuqA" name="ProblemObservationTemplateId" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tEJ4Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.68')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tETpIN6jEee0kIKIEebuqA" name="ProblemObservationClassCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tETpId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tEeBMN6jEee0kIKIEebuqA" name="ProblemObservationMoodCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tEeBMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tElV8N6jEee0kIKIEebuqA" name="ProblemObservationNegationInd" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tElV8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tEsDoN6jEee0kIKIEebuqA" name="ProblemObservationId" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tEsDod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tE3CwN6jEee0kIKIEebuqA" name="ProblemObservationCodeP" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tE3Cwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tEw8IN6jEee0kIKIEebuqA" name="ProblemObservationCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tEw8Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '248536006' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tE9JYN6jEee0kIKIEebuqA" name="ProblemObservationText" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tE9JYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tFCo8N6jEee0kIKIEebuqA" name="ProblemObservationStatusCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tFCo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tFIvkN6jEee0kIKIEebuqA" name="ProblemObservationEffectiveTime" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tFIvkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tFtXUN6jEee0kIKIEebuqA" name="ProblemObservationValueP" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tFtXUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tFO2MN6jEee0kIKIEebuqA" name="ProblemObservationValue" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tFO2Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGLRYN6jEee0kIKIEebuqA" name="FunctionalStatusProblemObservationMethodCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGLRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tSZvgN6jEee0kIKIEebuqA" name="FunctionalStatusProblemObservationNonMedicinalSupplyActivity" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tSZvgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tSz_MN6jEee0kIKIEebuqA" name="FunctionalStatusProblemObservationCaregiverCharacteristics" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tSz_Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tTO18N6jEee0kIKIEebuqA" name="FunctionalStatusProblemObservationAssessmentScaleObservation" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tTO18d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_whRx8ObjEeGINOJ_SD9_dA" general="_5Ha7ABUyEeGbmN_W114JUw"/>
      <ownedOperation xmi:id="_tSaWkN6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivities" bodyCondition="_tSaWk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tSaWk96jEee0kIKIEebuqA" name="body" constrainedElement="_tSaWkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tSaWlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tSaWkd6jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tSaWkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tS0mQN6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_tS0mQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tS0mQ96jEee0kIKIEebuqA" name="body" constrainedElement="_tS0mQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tS0mRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tS0mQd6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tS0mQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tTO18t6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_tTO19d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tTO19d6jEee0kIKIEebuqA" name="body" constrainedElement="_tTO18t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tTO19t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tTO1896jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tTO19N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_viRU0OZbEeGINOJ_SD9_dA" name="FunctionalStatusResultObservation">
      <ownedComment xmi:id="_KBX8gObuEeGINOJ_SD9_dA">
        <body>This clinical statement represents details of an evaluation or assessment of a patient's functional status. The evaluation may include assessment of a patient's language, vision, hearing, activities of daily living, behavior, general function, mobility, and self-care status. The statement, if present,  will include supporting caregivers, non-medical devices, and the time period for which the evaluation and assessment were performed.</body>
      </ownedComment>
      <ownedRule xmi:id="_j2XAsObyEeGINOJ_SD9_dA" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_j2XAsebyEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies (self.text->forAll(reference->size() = 1) and self.text->forAll(reference->one(value->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_krLI0ObyEeGINOJ_SD9_dA" name="ResultObservationTextReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_krLI0ebyEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pRJ1cObyEeGINOJ_SD9_dA" name="FunctionalStatusResultObservationValueDatatype">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pRJ1cebyEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value->forAll(val | val.oclIsTypeOf(datatypes::CD) implies (val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGO7wN6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGO7wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.67')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGVCYN6jEee0kIKIEebuqA" name="ResultObservationClassCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGVCYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGbwEN6jEee0kIKIEebuqA" name="ResultObservationMoodCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGbwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGh2sN6jEee0kIKIEebuqA" name="ResultObservationId" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGh2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGs10N6jEee0kIKIEebuqA" name="ResultObservationCodeP" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGs10d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGmvMN6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGnWQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tGyVYN6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tGyVYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tG97kN6jEee0kIKIEebuqA" name="ResultObservationStatusCodeP" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tG97kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tG308N6jEee0kIKIEebuqA" name="ResultObservationStatusCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tG4cAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHECMN6jEee0kIKIEebuqA" name="ResultObservationEffectiveTime" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHECMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHI6sN6jEee0kIKIEebuqA" name="ResultObservationValue" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHI6sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHNzMN6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHNzMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHTSwN6jEee0kIKIEebuqA" name="ResultObservationMethodCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHTSwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (not self.methodCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHYyUN6jEee0kIKIEebuqA" name="ResultObservationTargetSiteCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHYyUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tTpFoN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationAuthor" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tTpFod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tUDVUN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tUD8YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tUfaMN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationCaregiverCharacteristics" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tUfaMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tU5C0N6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationAssessmentScaleObservation" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tU5C0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tVT5kN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRange" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tVT5kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qGAgN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qGAgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qGnkN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRangeObservationRange" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qGnkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(observationRange->one(observationRange : cda::ObservationRange | not observationRange.oclIsUndefined() and observationRange.oclIsKindOf(cda::ObservationRange)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_dM_VcObxEeGINOJ_SD9_dA" general="_2J1d4BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_tUD8Yd6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivity" bodyCondition="_tUEjcN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tUEjcN6jEee0kIKIEebuqA" name="body" constrainedElement="_tUD8Yd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tUEjcd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity))->asSequence()->any(true).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tUD8Yt6jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tUD8Y96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tUfaMt6jEee0kIKIEebuqA" name="getCaregiverCharacteristics" bodyCondition="_tUfaNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tUfaNd6jEee0kIKIEebuqA" name="body" constrainedElement="_tUfaMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tUfaNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics))->asSequence()->any(true).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tUfaM96jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tUfaNN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_tU5p4N6jEee0kIKIEebuqA" name="getAssessmentScaleObservation" bodyCondition="_tU5p496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tU5p496jEee0kIKIEebuqA" name="body" constrainedElement="_tU5p4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tU5p5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation))->asSequence()->any(true).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tU5p4d6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tU5p4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_zBlUUOZbEeGINOJ_SD9_dA" name="FunctionalStatusResultOrganizer">
      <ownedComment xmi:id="_6omM8ObzEeGINOJ_SD9_dA">
        <body>This clinical statement identifies a set of functional status result observations. It contains information applicable to all of the contained functional status result observations. A functional status organizer may group self-care observations related to a patient's ability to feed, bathe, and dress.&#xD;
An appropriate nullFlavor can be used when the organizer/code or organizer/id is unknown.</body>
      </ownedComment>
      <ownedRule xmi:id="_flXasOb0EeGINOJ_SD9_dA" name="ResultOrganizerCodeValue" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_flXaseb0EeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.254' or self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHe48N6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHe48d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.66')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHjKYN6jEee0kIKIEebuqA" name="ResultOrganizerClassCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHjKYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHoC4N6jEee0kIKIEebuqA" name="ResultOrganizerMoodCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHoC4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHticN6jEee0kIKIEebuqA" name="ResultOrganizerId" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHticd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tHxM0N6jEee0kIKIEebuqA" name="ResultOrganizerCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tHxM0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tH690N6jEee0kIKIEebuqA" name="ResultOrganizerStatusCodeP" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tH690d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tH2FUN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tH2FUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tWJnEN6jEee0kIKIEebuqA" name="FunctionalStatusResultOrganizerFunctionalStatusResultObservation" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tWJnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::FunctionalStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_8KA8YObzEeGINOJ_SD9_dA" general="_2JxzgBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_tWJnEt6jEee0kIKIEebuqA" name="getFunctionalStatusResultObservations" bodyCondition="_tWJnFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tWJnFd6jEee0kIKIEebuqA" name="body" constrainedElement="_tWJnEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tWJnFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusResultObservation)).oclAsType(consol::FunctionalStatusResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tWJnE96jEee0kIKIEebuqA" type="_viRU0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tWJnFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4YgVsOZbEeGINOJ_SD9_dA" name="HighestPressureUlcerStage">
      <ownedComment xmi:id="_lI9UMOb2EeGINOJ_SD9_dA">
        <body>This observation contains a description of the wound tissue of the most severe or highest staged pressure ulcer observed on a patient.</body>
      </ownedComment>
      <ownedRule xmi:id="_tH_PQN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageTemplateId" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tH_PQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.77')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tICSkN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageClassCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tICSkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIF88N6jEee0kIKIEebuqA" name="HighestPressureUlcerStageMoodCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIF88d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIJnUN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageId" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIJnUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIQ8EN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageCodeP" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIQ8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIMqoN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIMqod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '420905001' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIUmcN6jEee0kIKIEebuqA" name="HighestPressureUlcerStageValue" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIUmcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_mPs50Ob2EeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_7c4ssOZbEeGINOJ_SD9_dA" name="NumberOfPressureUlcersObservation">
      <ownedComment xmi:id="_z95uMOcBEeGINOJ_SD9_dA">
        <body>This clinical statement enumerates the number of pressure ulcers observed in a particular stage.</body>
      </ownedComment>
      <ownedRule xmi:id="_tIWboN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationTemplateId" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIXCsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.76')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIZe8N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationClassCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIZe8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIdJUN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationMoodCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIdJUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIgzsN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationId" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIhawN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIovgN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationCodeP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIovgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIkeEN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIkeEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '2264892003' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tItA8N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationStatusCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tItA8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tIxSYN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationStatusCodeP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tIxSYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tI08wN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEffectiveTime" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tI08wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tI4AEN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationValue" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tI4AEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::INT)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tWiooN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationAuthor" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tWiood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tW-GcN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationship" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tW-Gcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q88IN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q88Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q9jMN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q9jMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q-KQN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValue" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q-KQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() = 1 and value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '421076008' or value.code = '420324007' or value.code = '421927004' or value.code = '420597008' or value.code = '421594008'))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q-xUN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValueP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q-xUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() =  1 and value->forAll(element | element.oclIsTypeOf(datatypes::CD))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q_YYN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipTypeCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q_YYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4q_YYt6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservation" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q_YY96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_7c4sseZbEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_9rQowOZbEeGINOJ_SD9_dA" name="PressureUlcerObservation">
      <ownedComment xmi:id="_mJ7LgOcCEeGINOJ_SD9_dA">
        <body>The pressure ulcer observation contains details about the pressure ulcer such as the stage of the ulcer, location, and dimensions. If the pressure ulcer is a diagnosis, you may find this on the problem list. An example of how this would appear is in the Problem Section.</body>
      </ownedComment>
      <ownedRule xmi:id="_XS7QIOcEEeGINOJ_SD9_dA" name="PressureUlcerObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_XS7QIecEEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined() implies self.text->forAll(reference->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Y3WQQOcEEeGINOJ_SD9_dA" name="PressureUlcerObservationTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Y3WQQecEEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.text->forAll(reference->size() = 1) implies self.text->forAll(reference->one(value->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ZuPcAOcEEeGINOJ_SD9_dA" name="PressureUlcerObservationHasTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZuPcAecEEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_BD7o8OcFEeGINOJ_SD9_dA" name="PressureUlcerObservationValueNullFlavor" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_BD7o8ecFEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.value->forAll(val | not val.isNullFlavorUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1uHKwOcFEeGINOJ_SD9_dA" name="PressureUlcerObservationTargetSiteQualifier" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_A5Q0kOcGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.targetSiteCode->forAll(qualifier->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5vyQcOcFEeGINOJ_SD9_dA" name="PressureUlcerObservationTargetSiteQualifierName" constrainedElement="_1uHKwOcFEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_EJZvoOcGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.targetSiteCode.qualifier->forAll(name->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_7RhwAOcFEeGINOJ_SD9_dA" name="PressureUlcerObservationTargetSiteQualifierNameCode" constrainedElement="_5vyQcOcFEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_HEHNQOcGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.targetSiteCode.qualifier->forAll(name->size() = 1 and name.code='272741003' and name.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_9MavYOcFEeGINOJ_SD9_dA" name="PressureUlcerObservationTargetSiteQualifierValue" constrainedElement="_1uHKwOcFEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_KSdYkOcGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.targetSiteCode.qualifier->forAll(value->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ACksOcFEeGINOJ_SD9_dA" name="PressureUlcerObservationTargetSiteQualifierValueCode" constrainedElement="_9MavYOcFEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Mgjn0OcGEeGINOJ_SD9_dA">
          <language>OCL</language>
          <body>self.targetSiteCode.qualifier->forAll((value.isNullFlavorDefined()) or (value->size() = 1 and not value.code.oclIsUndefined() and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tJ9lMN6jEee0kIKIEebuqA" name="PressureUlcerObservationTemplateId" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tJ-MQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.70')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKJycN6jEee0kIKIEebuqA" name="PressureUlcerObservationClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKJycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKNc0N6jEee0kIKIEebuqA" name="PressureUlcerObservationMoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKNc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKRHMN6jEee0kIKIEebuqA" name="PressureUlcerObservationNegationInd" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKRHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKUxkN6jEee0kIKIEebuqA" name="PressureUlcerObservationId" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKUxkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKcGUN6jEee0kIKIEebuqA" name="PressureUlcerObservationCodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKcGUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKX04N6jEee0kIKIEebuqA" name="PressureUlcerObservationCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKX04d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKgXwN6jEee0kIKIEebuqA" name="PressureUlcerObservationText" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKgXwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKjbEN6jEee0kIKIEebuqA" name="PressureUlcerObservationStatusCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKjbEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKnsgN6jEee0kIKIEebuqA" name="PressureUlcerObservationEffectiveTime" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKnsgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tKrW4N6jEee0kIKIEebuqA" name="PressureUlcerObservationValue" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tKrW4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '421076008' or value.code = '420324007' or value.code = '421927004' or value.code = '420597008' or value.code = '421594008')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tLIp4N6jEee0kIKIEebuqA" name="PressureUlcerObservationValueP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tLIp4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tMBasN6jEee0kIKIEebuqA" name="PressureUlcerObservationTargetSiteCodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tMBasd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tLl84N6jEee0kIKIEebuqA" name="PressureUlcerObservationTargetSiteCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tLl84d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '79951008' or value.code = '23747009' or value.code = '76552005' or value.code = '45980000' or value.code = '74757004' or value.code = '51027004' or value.code = '304037003' or value.code = '286591006' or value.code = '49812005' or value.code = '29850006' or value.code = '22180002')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tXwJkN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tXwwoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003')->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tYJyMN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tYJyMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006')->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tYkB4N6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tYkB4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009')->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4rxbgN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rxbgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003').observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ryCkN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rypoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003').observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4rypod6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rypot6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4rz3wN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rz3wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.code = '401238003' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4r0e0N6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r0e0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003').observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() =  1 and value->forAll(element | element.oclIsTypeOf(datatypes::PQ))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4r0e0t6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r0e096jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003')->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4r1F4N6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship1Observation1" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r1F4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401238003')->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4smh8N6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4smh8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006').observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4snJAN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4snJAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006').observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4snwEN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4snwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4soXIN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4soXId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.code = '401239006' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4soXIt6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4soXI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006').observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() =  1 and value->forAll(element | element.oclIsTypeOf(datatypes::PQ))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4so-MN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4so-Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006')->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4splQN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship2Observation2" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4splQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='401239006')->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tboYN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tboYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009').observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tcPcN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tcPcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009').observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tc2gN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tc2gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tddkN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tddkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009').observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.code = '425094009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tddkt6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tddk96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009').observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() =  1 and value->forAll(element | element.oclIsTypeOf(datatypes::PQ))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4teEoN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4teEod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009')->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tersN6jEee0kIKIEebuqA" name="PressureUlcerObservationEntryRelationship3Observation3" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tersd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009')->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP and observation.code.code='425094009')->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_9raZwOZbEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_TkyvwPKwEeGFUPBL8qS7yQ" name="FetusSubjectContext">
      <ownedComment xmi:id="_ZaFIIPKwEeGFUPBL8qS7yQ">
        <body>For reports on mothers and their fetus(es), information on a mother is mapped to recordTarget, PatientRole, and Patient. Information on the fetus is mapped to subject, relatedSubject, and SubjectPerson at the CDA section level. Both context information on the mother and fetus must be included in the document if observations on fetus(es) are contained in the document.</body>
      </ownedComment>
      <ownedRule xmi:id="_tlpboN6jEee0kIKIEebuqA" name="FetusSubjectContextTemplateId" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tlpbod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.3')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tltGAN6jEee0kIKIEebuqA" name="FetusSubjectContextCode" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tltGAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '121026' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tmNcUN6jEee0kIKIEebuqA" name="FetusSubjectContextSubject" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tmNcUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.subject->one(subject : cda::SubjectPerson | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::SubjectPerson))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_TkyvwfKwEeGFUPBL8qS7yQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_grTqsEcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XIE-YPKyEeGFUPBL8qS7yQ" name="ObserverContext">
      <ownedRule xmi:id="_tmODYN6jEee0kIKIEebuqA" name="ObserverContextTemplateId" constrainedElement="_XIE-YPKyEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tmODYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tmskgN6jEee0kIKIEebuqA" name="ObserverContextAssignedAuthor" constrainedElement="_XIE-YPKyEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tmskgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_XIE-YfKyEeGFUPBL8qS7yQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_u_keoIkOEeOJGtGyq_dBbA" name="EntryReference">
      <ownedComment xmi:id="_CDcekIkXEeOJGtGyq_dBbA">
        <body>&lt;p>&#xD;
This template represents the act of referencing another entry in the same CDA document instance. Its purpose is to remove the need to repeat the complete XML representation of the referred entry when relating one entry to another. This template can be used to reference many types of Act class derivations, such as encounters, observations, procedures etc., as it is often necessary when authoring CDA documents to repeatedly reference other Acts of these types. For example, in a Care Plan it is necessary to repeatedly relate Health Concerns, Goals, Interventions and Outcomes.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The id is required and must be the same id as the entry/id it is referencing. The id cannot be a null value. Act/Code is set to nullFlavor=&quot;NP&quot; (Not Present). This means the value is not present in the message (in act/Code).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_ts7vYN6jEee0kIKIEebuqA" name="EntryReferenceTemplateId" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ts7vYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.122')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ts-ysN6jEee0kIKIEebuqA" name="EntryReferenceClassCode" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ts_ZwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttCdEN6jEee0kIKIEebuqA" name="EntryReferenceMoodCode" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttCdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttGHcN6jEee0kIKIEebuqA" name="EntryReferenceId" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttGHcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttJKwN6jEee0kIKIEebuqA" name="EntryReferenceCode" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttJx0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttM1IN6jEee0kIKIEebuqA" name="EntryReferenceStatusCode" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttM1Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttRGkN6jEee0kIKIEebuqA" name="EntryReferenceStatusCodeP" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttRGkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4thH8N6jEee0kIKIEebuqA" name="EntryReferenceIINullFlavor" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4thH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.id->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (nullFlavor.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ti9IN6jEee0kIKIEebuqA" name="EntryReferenceCDNullFlavor" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tjkMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not nullFlavor.oclIsUndefined() and nullFlavor.oclIsKindOf(vocab::NullFlavor) and &#xD;
let value : vocab::NullFlavor = nullFlavor.oclAsType(vocab::NullFlavor) in &#xD;
value = vocab::NullFlavor::NP )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tjkMd6jEee0kIKIEebuqA" name="EntryReferenceCDNullFlavorP" constrainedElement="_u_keoIkOEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tjkMt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (isDefined('nullFlavor') )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_u__VYIkOEeOJGtGyq_dBbA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Z8VQYIlFEeOJGtGyq_dBbA" name="AdvanceDirectiveOrganizer">
      <ownedComment xmi:id="_eflRwIlIEeOJGtGyq_dBbA">
        <body>This clinical statement groups a set of advance directive observations.</body>
      </ownedComment>
      <ownedRule xmi:id="_ttcFsN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerTemplateId" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttcFsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.108' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttfJAN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerClassCode" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttfJAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttiMUN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerMoodCode" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttiMUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttlPoN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerId" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttlPod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tto6AN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerCode" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tto6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '45473-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tttygN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerCodeP" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tttygd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tt2VYN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerStatusCodeP" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tt2VYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ttyD8N6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerStatusCode" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ttyD8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuSaQN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerAdvanceDirectiveObservation2" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuSaQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::AdvanceDirectiveObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2_b1gN6jEee0kIKIEebuqA" name="AdvanceDirectiveOrganizerAuthorParticipation" constrainedElement="_Z8VQYIlFEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2_b1gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Z8VQYYlFEeOJGtGyq_dBbA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_tuTBUN6jEee0kIKIEebuqA" name="getAdvanceDirectiveObservation2s" bodyCondition="_tuTBU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tuTBU96jEee0kIKIEebuqA" name="body" constrainedElement="_tuTBUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuTBVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)).oclAsType(consol::AdvanceDirectiveObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tuTBUd6jEee0kIKIEebuqA" type="_GnllUK-9EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tuTBUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_O-O-IInUEeOJGtGyq_dBbA" name="CharacteristicsOfHomeEnvironment">
      <ownedComment xmi:id="_opipQInVEeOJGtGyq_dBbA">
        <body>This template represents the patient's home environment including, but not limited to, type of residence (trailer, single family home, assisted living), living arrangement (e.g., alone, with parents), and housing status (e.g., evicted, homeless, home owner).</body>
      </ownedComment>
      <ownedRule xmi:id="_tuTBVd6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentTemplateId" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuToYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.109')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuWrsN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentClassCode" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuWrsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuaWEN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentMoodCode" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuaWEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tudZYN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentId" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tudZYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tukuIN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentCodeP" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tukuId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuhDwN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentCode" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuhDwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75274-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuo_kN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentStatusCode" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuo_kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tutRAN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentStatusCodeP" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tutRAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tuxicN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentValue" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tuxicd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tvQqoN6jEee0kIKIEebuqA" name="CharacteristicsOfHomeEnvironmentValueP" constrainedElement="_O-O-IInUEeOJGtGyq_dBbA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tvQqod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_O-PlMInUEeOJGtGyq_dBbA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Y_oGkIoAEeOoMZgUoTghIg" name="CognitiveAbilitiesObservation">
      <ownedComment xmi:id="_V3xvYIoBEeOoMZgUoTghIg">
        <body>The Cognitive Abilities Observation represents a patient's ability to perform specific cognitive tasks (e.g., ability to plan, logical sequencing ability, ability to think abstractly).</body>
      </ownedComment>
      <ownedComment xmi:id="_bOntkPm-EeSGHoih4Jm09A">
        <body>REMOVED</body>
      </ownedComment>
      <ownedRule xmi:id="_tvrhYN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationTemplateId" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tvrhYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.126')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tvuksN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationClassCode" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tvuksd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tvyPEN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationMoodCode" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tvyPEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tv15cN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationId" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tv15cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_twVBoN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationCodeP" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_twVBod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tv5j0N6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationCode" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tv5j0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '61254005' or value.code = '395659009' or value.code = '286574007' or value.code = '307082005' or value.code = '304641000' or value.code = '363878000' or value.code = '418907009' or value.code = '304645009' or value.code = '311465003'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_twxGgN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationText" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_twxGgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tw0w4N6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationStatusCode" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tw0w4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tw6QcN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationStatusCodeP" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tw6Qcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tw960N6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationEffectiveTime" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tw-h4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_txCMQN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationValue" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_txCMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_txffQN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationValueP" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_txffQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tybTYN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationAssessmentScaleObservation" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tybTYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vsU0QN6jEee0kIKIEebuqA" name="CognitiveAbilitiesObservationAuthorParticipation" constrainedElement="_Y_oGkIoAEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vsVbUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Y_otoIoAEeOoMZgUoTghIg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_tyb6cN6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_tyb6c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_tyb6c96jEee0kIKIEebuqA" name="body" constrainedElement="_tyb6cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_tyb6dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_tyb6cd6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tyb6ct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_H2EzIIqZEeOoMZgUoTghIg" name="CulturalAndReligiousObservation">
      <ownedComment xmi:id="_OepNIIqaEeOoMZgUoTghIg">
        <body>This template represents a patient's spiritual, religious, and cultural belief practices, such as a kosher diet or fasting ritual. religiousAffiliationCode in the document header captures only the patient's religious affiliation.</body>
      </ownedComment>
      <ownedRule xmi:id="_lZRVsPpYEeSE4ZSXS7BkuA" name="CulturalAndReligiousObservationValueOfTypeCDIsFromSnomed" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_q5zmEPpYEeSE4ZSXS7BkuA">
          <language>OCL</language>
          <body>self.value->forAll(val | val.oclIsTypeOf(datatypes::CD) implies (val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tyb6dd6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationTemplateId" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tychgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.111')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tyiBEN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationClassCode" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tyiBEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tyngoN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationMoodCode" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tyngod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tytAMN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationId" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tytAMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ty2xMN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationCodeP" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ty2xMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tyx4sN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationCode" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tyx4sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75281-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ty830N6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationStatusCode" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ty830d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzBwUN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationStatusCodeP" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzBwUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzGBwN6jEee0kIKIEebuqA" name="CulturalAndReligiousObservationValue" constrainedElement="_H2EzIIqZEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzGBwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H2EzIYqZEeOoMZgUoTghIg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_MbKs8IqvEeOoMZgUoTghIg" name="DrugMonitoringAct">
      <ownedComment xmi:id="_OWb3EIrAEeOoMZgUoTghIg">
        <body>&lt;p>&#xD;
This template represents the act of monitoring the patient's medication and includes a participation to record the person responsible for monitoring the medication. The prescriber of the medication is not necessarily the same person or persons monitoring the drug. The effectiveTime indicates the time when the activity is intended to take place.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
For example, a cardiologist may prescribe a patient Warfarin. The patient's primary care provider may monitor the patient's INR and adjust the dosing of the Warfarin based on these lab results. Here the person designated to monitor the drug is the primary care provider.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_tzIeAN6jEee0kIKIEebuqA" name="DrugMonitoringActTemplateId" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzJFEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.123')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzMvcN6jEee0kIKIEebuqA" name="DrugMonitoringActClassCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzMvcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzQZ0N6jEee0kIKIEebuqA" name="DrugMonitoringActMoodCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzQZ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzUrQN6jEee0kIKIEebuqA" name="DrugMonitoringActId" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzUrQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzdOIN6jEee0kIKIEebuqA" name="DrugMonitoringActCodeP" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzdOId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzYVoN6jEee0kIKIEebuqA" name="DrugMonitoringActCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzYVod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '395170001' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tzhfkN6jEee0kIKIEebuqA" name="DrugMonitoringActStatusCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tzhfkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'normal' or value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'new' or value.code = 'suspended' or value.code = 'nullified' or value.code = 'obsolete')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t0B14N6jEee0kIKIEebuqA" name="DrugMonitoringActStatusCodeP" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t0B14d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t0iMMN6jEee0kIKIEebuqA" name="DrugMonitoringActEffectiveTime" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t0iMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t1RzEN6jEee0kIKIEebuqA" name="DrugMonitoringActParticipant" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t1RzEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u62IN6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRolePlayingEntityClassCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u62Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(isDefined('classCode') and classCode=vocab::EntityClassRoot::PSN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u7dMN6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRolePlayingEntityName" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u7dMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u8EQN6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRoleClassCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u8EQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(isDefined('classCode') and classCode=vocab::RoleClassRoot::ASSIGNED)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u8EQt6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRoleId" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u8rUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u8rUd6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRolePlayingEntity" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u8rUt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u9SYN6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantTypeCode" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u95cN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(typeCode=vocab::ParticipationType::RESP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u95cd6jEee0kIKIEebuqA" name="DrugMonitoringActParticipantParticipantRole" constrainedElement="_MbKs8IqvEeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u95ct6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_MbKs8YqvEeOoMZgUoTghIg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_POfwAIz7EeOoMZgUoTghIg" name="HandoffCommunicationParticipants">
      <ownedComment xmi:id="_VONaQIz8EeOoMZgUoTghIg">
        <body>This template represents the sender (author) and receivers (participants) of a handoff communication in a plan of treatment. It does not convey details about the communication. The &quot;handoff&quot; process involves senders, those transmitting the patient's information and releasing the care of that patient to the next clinician, and receivers, those who accept the patient information and care of that patient.</body>
      </ownedComment>
      <ownedRule xmi:id="_t2OOQN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsTemplateId" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2O1UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.141')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2R4oN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsClassCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2R4od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2WxIN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsMoodCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2WxId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2giIN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsCodeP" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2giId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2bpoN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2bpod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '432138007' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2kzkN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsStatusCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2laoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2q6MN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsStatusCodeP" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2q6Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t2vysN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsEffectiveTime" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t2vysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t4jJgN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipant" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t4jJgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vuCEcN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsAuthorParticipation" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vuCEcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wKMQN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntityName" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wKzUN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRoleId" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKzUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wKzUt6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRoleCodeP" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKzU96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wLaYN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRoleCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wLaYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wMBcN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRoleAddr" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wMBcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wMogN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntity" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wMogd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wMogt6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantTypeCode" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wMog96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(typeCode=vocab::ParticipationType::IRCP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wNPkN6jEee0kIKIEebuqA" name="HandoffCommunicationParticipantsParticipantParticipantRole" constrainedElement="_POfwAIz7EeOoMZgUoTghIg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wNPkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_POfwAYz7EeOoMZgUoTghIg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_RbbCII0dEeOB0eBUISUB4Q" name="MedicalEquipmentOrganizer">
      <ownedComment xmi:id="_F36tQI0eEeOB0eBUISUB4Q">
        <body>&lt;p>&#xD;
This template represents a set of current or historical medical devices, supplies, aids and equipment used by the patient. Examples are hearing aids, orthotic devices, ostomy supplies, visual aids, diabetic supplies such as syringes and pumps, and wheelchairs.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Devices that are applied during a procedure (e.g., cardiac pacemaker, gastrosomy tube, port catheter), whether permanent or temporary, are represented within the Procedure Activity Procedure (V2) template (templateId: 2.16.840.1.113883.10.20.22.4.14.2).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_0b9iwP5_EeSoDZvueq4eYw" name="MedicalEquipmentOrganizerHasNonMedSupActOrProcActProc" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7JbgUP5_EeSoDZvueq4eYw">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.supply.oclIsUndefined() and component.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)) or self.component->exists(component : cda::Component4 | not component.procedure.oclIsUndefined() and component.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5CRsN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerTemplateId" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5CRsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.135')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5HxQN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerClassCode" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5HxQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5LboN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerMoodCode" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5MCsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5PtEN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerId" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5PtEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5SwYN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerCode" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5SwYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t51i8N6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerStatusCodeP" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t51i8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t5XB0N6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerStatusCode" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t5XB0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'suspended')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t6UrIN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerEffectiveTime" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t6VSMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7AAkN6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerNonMedicinalSupplyActivity2" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7AAkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.supply.oclIsUndefined() and component.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7fv0N6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerProcedureActivityProcedure2" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7fv0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.procedure.oclIsUndefined() and component.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wPr0N6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerIVLTSLow" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wPr0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wQS4N6jEee0kIKIEebuqA" name="MedicalEquipmentOrganizerIVLTSHigh" constrainedElement="_RbbCII0dEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wQS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_RbdeYI0dEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_t7AnoN6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivity2s" bodyCondition="_t7Ano96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_t7Ano96jEee0kIKIEebuqA" name="body" constrainedElement="_t7AnoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7AnpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_t7Anod6jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t7Anot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_t7fv0t6jEee0kIKIEebuqA" name="getProcedureActivityProcedure2s" bodyCondition="_t7gW4t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_t7gW4t6jEee0kIKIEebuqA" name="body" constrainedElement="_t7fv0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7gW496jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_t7gW4N6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t7gW4d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_-lJmEI0kEeOB0eBUISUB4Q" name="MentalStatusObservation">
      <ownedComment xmi:id="_WTRLwI0mEeOB0eBUISUB4Q">
        <body>This template represents observations relating intellectual and mental powers and state of mind. Mental status observations in a clinical note often have a psychological focus (e.g., level of consciousness, mood, anxiety level, reasoning ability).</body>
      </ownedComment>
      <ownedRule xmi:id="_t7gW5N6jEee0kIKIEebuqA" name="MentalStatusObservationTemplateId" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7gW5d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.125')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7kBQN6jEee0kIKIEebuqA" name="MentalStatusObservationClassCode" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7koUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7oSsN6jEee0kIKIEebuqA" name="MentalStatusObservationMoodCode" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7oSsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7tLMN6jEee0kIKIEebuqA" name="MentalStatusObservationId" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7tLMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t8SaAN6jEee0kIKIEebuqA" name="MentalStatusObservationCodeP" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t8SaAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t7xcoN6jEee0kIKIEebuqA" name="MentalStatusObservationCode" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t7xcod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '43173001' or value.code = '405051006' or value.code = '363871006' or value.code = '85256008' or value.code = '285231000' or value.code = '6942003'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t8yJQN6jEee0kIKIEebuqA" name="MentalStatusObservationStatusCode" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t8yJQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t83o0N6jEee0kIKIEebuqA" name="MentalStatusObservationStatusCodeP" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t83o0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t88hUN6jEee0kIKIEebuqA" name="MentalStatusObservationEffectiveTime" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t88hUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t9BZ0N6jEee0kIKIEebuqA" name="MentalStatusObservationValue" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t9BZ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t9hJEN6jEee0kIKIEebuqA" name="MentalStatusObservationValueP" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t9hJEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-cWIN6jEee0kIKIEebuqA" name="MentalStatusObservationAssessmentScaleObservation" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-c9MN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vwzEkN6jEee0kIKIEebuqA" name="MentalStatusObservationAuthorParticipation" constrainedElement="_-lJmEI0kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vwzEkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-lJmEY0kEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_t-c9Md6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_t-c9NN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_t-c9NN6jEee0kIKIEebuqA" name="body" constrainedElement="_t-c9Md6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-c9Nd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_t-c9Mt6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t-c9M96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_NP5zMI05EeOB0eBUISUB4Q" name="NutritionAssessment">
      <ownedComment xmi:id="_itqVQI05EeOB0eBUISUB4Q">
        <body>This template represents the patient's nutrition abilities and habits including intake, diet requirements or diet followed.</body>
      </ownedComment>
      <ownedRule xmi:id="_mBQoMP6JEeSoDZvueq4eYw" name="NutritionAssessmentValueOfTypeCDIsFromSnomed" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7fQa0P6JEeSoDZvueq4eYw">
          <language>OCL</language>
          <body>self.value->forAll(val | val.oclIsTypeOf(datatypes::CD) implies (val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-dkQN6jEee0kIKIEebuqA" name="NutritionAssessmentTemplateId" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-eLUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.138')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-jq4N6jEee0kIKIEebuqA" name="NutritionAssessmentClassCode" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-jq4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-ojYN6jEee0kIKIEebuqA" name="NutritionAssessmentMoodCode" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-ojYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-tb4N6jEee0kIKIEebuqA" name="NutritionAssessmentId" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-tb4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-1-wN6jEee0kIKIEebuqA" name="NutritionAssessmentCodeP" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-1-wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-xGQN6jEee0kIKIEebuqA" name="NutritionAssessmentCode" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-xGQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75303-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t-8FYN6jEee0kIKIEebuqA" name="NutritionAssessmentStatusCode" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t-8FYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_CMAN6jEee0kIKIEebuqA" name="NutritionAssessmentStatusCodeP" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_CMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_HEgN6jEee0kIKIEebuqA" name="NutritionAssessmentEffectiveTime" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_HrkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_LV8N6jEee0kIKIEebuqA" name="NutritionAssessmentValue" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_LV8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vxMGIN6jEee0kIKIEebuqA" name="NutritionAssessmentAuthorParticipation" constrainedElement="_NP5zMI05EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vxMGId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_NP5zMY05EeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_FhAIMI3FEeOB0eBUISUB4Q" name="NutritionRecommendation">
      <ownedComment xmi:id="_YFQGgI3FEeOB0eBUISUB4Q">
        <body>This template represents nutrition regimens (e.g., fluid restrictions, calorie minimum), interventions (e.g., NPO, nutritional supplements), and procedures (e.g., G-Tube by bolus, TPN by central line). It may also depict the need for nutrition education.</body>
      </ownedComment>
      <ownedRule xmi:id="_t_NyMN6jEee0kIKIEebuqA" name="NutritionRecommendationTemplateId" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_OZQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.130')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_TRwN6jEee0kIKIEebuqA" name="NutritionRecommendationClassCode" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_TRwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_8yAN6jEee0kIKIEebuqA" name="NutritionRecommendationMoodCodeP" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_8yAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_t_YKQN6jEee0kIKIEebuqA" name="NutritionRecommendationMoodCode" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t_YxUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::INT or value = vocab::x_DocumentActMood::ARQ or value = vocab::x_DocumentActMood::PRMS or value = vocab::x_DocumentActMood::PRP or value = vocab::x_DocumentActMood::RQO or value = vocab::x_DocumentActMood::APT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uBIdwN6jEee0kIKIEebuqA" name="NutritionRecommendationCodeP" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uBIdwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uAj2AN6jEee0kIKIEebuqA" name="NutritionRecommendationCode" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uAj2Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '61310001' or value.code = '386373004' or value.code = '418995006' or value.code = '413315001' or value.code = '182922004' or value.code = '229912004' or value.code = '225372007' or value.code = '448556005'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uBtskN6jEee0kIKIEebuqA" name="NutritionRecommendationStatusCode" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uBuToN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uB0aQN6jEee0kIKIEebuqA" name="NutritionRecommendationStatusCodeP" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uB0aQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uB550N6jEee0kIKIEebuqA" name="NutritionRecommendationEffectiveTime" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uB550d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Dz_MN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedEncounter2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Dz_Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(consol::PlannedEncounter2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3ERSMN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedMedicationActivity2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ERSMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3EvMQN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedObservation2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3EvMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PlannedObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3FQwsN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedProcedure2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3FQwsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::PlannedProcedure2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3FuqwN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedSupply2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Fuqwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::PlannedSupply2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3GLWsN6jEee0kIKIEebuqA" name="NutritionRecommendationPlannedAct2" constrainedElement="_FhAIMI3FEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3GLWsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_FhAvQI3FEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_3D0mQN6jEee0kIKIEebuqA" name="getPlannedEncounter2s" bodyCondition="_3D0mQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3D0mQ96jEee0kIKIEebuqA" name="body" constrainedElement="_3D0mQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3D0mRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::PlannedEncounter2)).oclAsType(consol::PlannedEncounter2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3D0mQd6jEee0kIKIEebuqA" type="_bDPFMOdXEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3D0mQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3ERSMt6jEee0kIKIEebuqA" name="getPlannedMedicationActivity2s" bodyCondition="_3ERSNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3ERSNd6jEee0kIKIEebuqA" name="body" constrainedElement="_3ERSMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3ERSNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2)).oclAsType(consol::PlannedMedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3ERSM96jEee0kIKIEebuqA" type="_Yj45YOgREeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3ERSNN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3EvzUN6jEee0kIKIEebuqA" name="getPlannedObservation2s" bodyCondition="_3EvzU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3EvzU96jEee0kIKIEebuqA" name="body" constrainedElement="_3EvzUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3EvzVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PlannedObservation2)).oclAsType(consol::PlannedObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3EvzUd6jEee0kIKIEebuqA" type="_jKZssOdvEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3EvzUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3FRXwN6jEee0kIKIEebuqA" name="getPlannedProcedure2s" bodyCondition="_3FRXw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3FRXw96jEee0kIKIEebuqA" name="body" constrainedElement="_3FRXwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3FRXxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlannedProcedure2)).oclAsType(consol::PlannedProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3FRXwd6jEee0kIKIEebuqA" type="_cs0YsOeEEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3FRXwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3FvR0N6jEee0kIKIEebuqA" name="getPlannedSupply2s" bodyCondition="_3FvR096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3FvR096jEee0kIKIEebuqA" name="body" constrainedElement="_3FvR0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3FvR1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::PlannedSupply2)).oclAsType(consol::PlannedSupply2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3FvR0d6jEee0kIKIEebuqA" type="_vEd1cOg0EeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3FvR0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3GL9wN6jEee0kIKIEebuqA" name="getPlannedAct2s" bodyCondition="_3GL9w96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3GL9w96jEee0kIKIEebuqA" name="body" constrainedElement="_3GL9wN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3GL9xN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedAct2)).oclAsType(consol::PlannedAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3GL9wd6jEee0kIKIEebuqA" type="_lLnRMOaYEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3GL9wt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_T1dcwI37EeOB0eBUISUB4Q" name="NutritionalStatusObservation">
      <ownedComment xmi:id="_C93YEI38EeOB0eBUISUB4Q">
        <body>This template describes the overall nutritional status of the patient including findings related to nutritional status.</body>
      </ownedComment>
      <ownedRule xmi:id="_uB9kMN6jEee0kIKIEebuqA" name="NutritionalStatusObservationTemplateId" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uB-LQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.124')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCCcsN6jEee0kIKIEebuqA" name="NutritionalStatusObservationClassCode" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCCcsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCGuIN6jEee0kIKIEebuqA" name="NutritionalStatusObservationMoodCode" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCGuId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCMNsN6jEee0kIKIEebuqA" name="NutritionalStatusObservationId" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCMNsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCXz4N6jEee0kIKIEebuqA" name="NutritionalStatusObservationCodeP" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCXz4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCRGMN6jEee0kIKIEebuqA" name="NutritionalStatusObservationCode" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCRGMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75305-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCehkN6jEee0kIKIEebuqA" name="NutritionalStatusObservationStatusCode" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCehkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCkBIN6jEee0kIKIEebuqA" name="NutritionalStatusObservationStatusCodeP" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCkBId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCpgsN6jEee0kIKIEebuqA" name="NutritionalStatusObservationEffectiveTime" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCqHwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uCvnUN6jEee0kIKIEebuqA" name="NutritionalStatusObservationValue" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uCvnUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uDQksN6jEee0kIKIEebuqA" name="NutritionalStatusObservationValueP" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uDRLwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEMY0N6jEee0kIKIEebuqA" name="NutritionalStatusObservationNutritionAssessment" constrainedElement="_T1dcwI37EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEMY0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionAssessment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_T1eD0I37EeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uEM_4N6jEee0kIKIEebuqA" name="getNutritionAssessments" bodyCondition="_uEM_496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uEM_496jEee0kIKIEebuqA" name="body" constrainedElement="_uEM_4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEM_5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionAssessment)).oclAsType(consol::NutritionAssessment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uEM_4d6jEee0kIKIEebuqA" type="_NP5zMI05EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uEM_4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ihaWkI55EeOB0eBUISUB4Q" name="OutcomeObservation">
      <ownedComment xmi:id="_nN3oMI6FEeOB0eBUISUB4Q">
        <body>&lt;p>&#xD;
This template represents the outcome of care resulting from the interventions used to treat the patient. In the Care Planning workflow, the judgment about how well the person is progressing towards the goal is based on the observations made about the status of the patient with respect to interventions performed in the pursuit of achieving that goal.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Often thought of as an &quot;actual outcome&quot;, the Outcome Observation may be related to goals, progression toward goals, and the associated interventions. For example, an observation outcome of a blood oxygen saturation level of 95% is related to the goal of &quot;Maintain Pulse Ox greater than 92&quot;, which in turn is related to the health concern of respiratory insufficiency and the problem of pneumonia. The template makes use of the Entry Reference (templateId:2.16.840.1.113883.10.20.22.4.122) to reference the interventions and goals defined elsewhere in the Care Plan CDA instance.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_vn4UAK4qEeORf5eJaKt1KQ" name="OutcomeObservationProgTowardGoalObsInversionIndIsTrue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vn4UAa4qEeORf5eJaKt1KQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::ProgressTowardGoalObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uENm8N6jEee0kIKIEebuqA" name="OutcomeObservationTemplateId" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uENm8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.144')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uETtkN6jEee0kIKIEebuqA" name="OutcomeObservationClassCode" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEUUoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEX_AN6jEee0kIKIEebuqA" name="OutcomeObservationMoodCode" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEX_Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEcQcN6jEee0kIKIEebuqA" name="OutcomeObservationId" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEcQcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEmogN6jEee0kIKIEebuqA" name="OutcomeObservationCodeP" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEmogd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEgh4N6jEee0kIKIEebuqA" name="OutcomeObservationCode" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEgh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uEq58N6jEee0kIKIEebuqA" name="OutcomeObservationValue" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uEq58d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uFO6oN6jEee0kIKIEebuqA" name="OutcomeObservationEntryReferenceGoalObs" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFO6od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::GEVL)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uFpxYN6jEee0kIKIEebuqA" name="OutcomeObservationEntryReferenceInterventionAct" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFpxYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vxrOUN6jEee0kIKIEebuqA" name="OutcomeObservationAuthorParticipation" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vxrOUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vyFeAN6jEee0kIKIEebuqA" name="OutcomeObservationProgressTowardGoalObservation" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vyFeAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProgressTowardGoalObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3GpQwN6jEee0kIKIEebuqA" name="OutcomeObservationReference" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Gp30N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3HJnEN6jEee0kIKIEebuqA" name="OutcomeObservationEntryRelationship" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3HJnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wvbEN6jEee0kIKIEebuqA" name="OutcomeObservationReferenceTypeCode" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wvbEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wvbEt6jEee0kIKIEebuqA" name="OutcomeObservationReferenceExternalDocumentReference" constrainedElement="_ihaWkI55EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wvbE96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ihaWkY55EeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uFO6ot6jEee0kIKIEebuqA" name="getEntryReferenceGoalObss" bodyCondition="_uFO6pd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uFO6pd6jEee0kIKIEebuqA" name="body" constrainedElement="_uFO6ot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFO6pt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uFO6o96jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uFO6pN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uFqYcN6jEee0kIKIEebuqA" name="getEntryReferenceInterventionActs" bodyCondition="_uFqYc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uFqYc96jEee0kIKIEebuqA" name="body" constrainedElement="_uFqYcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFqYdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uFqYcd6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uFqYct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vyFeAt6jEee0kIKIEebuqA" name="getProgressTowardGoalObservation" bodyCondition="_vyFeBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vyFeBd6jEee0kIKIEebuqA" name="body" constrainedElement="_vyFeAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vyFeBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProgressTowardGoalObservation))->asSequence()->any(true).oclAsType(consol::ProgressTowardGoalObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vyFeA96jEee0kIKIEebuqA" type="_0NewYJmVEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vyFeBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_50a2UI62EeOB0eBUISUB4Q" name="PatientReferralAct">
      <ownedComment xmi:id="_HHU20I63EeOB0eBUISUB4Q">
        <body>This template represents the type of referral (e.g., for dental care, to a specialist, for aging problems) and represents whether the referral is for full care or shared care. It may contain a reference to another act in the document instance representing the clinical reason for the referral (e.g., problem, concern, procedure).</body>
      </ownedComment>
      <ownedRule xmi:id="_uFq_gN6jEee0kIKIEebuqA" name="PatientReferralActTemplateId" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFq_gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.140')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uFuC0N6jEee0kIKIEebuqA" name="PatientReferralActClassCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFuC0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::PCPR</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uGSqkN6jEee0kIKIEebuqA" name="PatientReferralActMoodCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uGSqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uFziYN6jEee0kIKIEebuqA" name="PatientReferralActMoodCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uFziYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::INT or value = vocab::x_DocumentActMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uG0PAN6jEee0kIKIEebuqA" name="PatientReferralActId" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uG0PAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uHWagN6jEee0kIKIEebuqA" name="PatientReferralActCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uHWagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uG35YN6jEee0kIKIEebuqA" name="PatientReferralActCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uG35Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uH6bMN6jEee0kIKIEebuqA" name="PatientReferralActStatusCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uH6bMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uH_6wN6jEee0kIKIEebuqA" name="PatientReferralActStatusCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uH_6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uIEMMN6jEee0kIKIEebuqA" name="PatientReferralActEffectiveTime" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uIEMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uIH2kN6jEee0kIKIEebuqA" name="PatientReferralActPriorityCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uIH2kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uMNsYN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationship" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uMNsYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vyfGoN6jEee0kIKIEebuqA" name="PatientReferralActAuthorParticipation" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vyfGod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3HovQN6jEee0kIKIEebuqA" name="PatientReferralActIndication2" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3HovQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3IaLUN6jEee0kIKIEebuqA" name="PatientReferralActParticipant" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3IaLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xisUN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationClassCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xisUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xjTYN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationMoodCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xjTYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::RQO)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xj6cN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xj6cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xj6ct6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xj6c96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xkhgN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationStatusCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xkhgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined() and statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xlIkN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationStatusCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xlIkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xlvoN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationPriorityCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xlvod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((priorityCode.oclIsUndefined() or priorityCode.isNullFlavorUndefined()) implies (not priorityCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xmWsN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationPriorityCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xmWsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((priorityCode.oclIsUndefined() or priorityCode.isNullFlavorUndefined()) implies (not priorityCode.oclIsUndefined() and priorityCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = priorityCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.7' and (value.code = 'A' or value.code = 'CR' or value.code = 'CS' or value.code = 'CSP' or value.code = 'CSR' or value.code = 'EL' or value.code = 'EM' or value.code = 'P' or value.code = 'PRN' or value.code = 'R' or value.code = 'RR' or value.code = 'S' or value.code = 'T' or value.code = 'UD' or value.code = 'UR')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xmWst6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationValue" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xmWs96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() = 1 and value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '370985002' or value.code = '170941001' or value.code = '170935008' or value.code = '268528005' or value.code = '170939002' or value.code = '268529002' or value.code = '170936009' or value.code = '170937000' or value.code = '170940000'))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xm9wN6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservationValueP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xm9wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() =  1 and value->forAll(element | element.oclIsTypeOf(datatypes::CD))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xnk0N6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipTypeCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xnk0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xoL4N6jEee0kIKIEebuqA" name="PatientReferralActEntryRelationshipObservation" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xoL4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yaPAN6jEee0kIKIEebuqA" name="PatientReferralActParticipantParticipantRoleCodeP" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ya2EN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ya2Ed6jEee0kIKIEebuqA" name="PatientReferralActParticipantParticipantRoleCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ybdIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ybdId6jEee0kIKIEebuqA" name="PatientReferralActParticipantTypeCode" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ybdIt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(typeCode=vocab::ParticipationType::REFT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ycEMN6jEee0kIKIEebuqA" name="PatientReferralActParticipantParticipantRole" constrainedElement="_50a2UI62EeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ycEMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_50a2UY62EeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_3HpWUN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_3HpWU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3HpWU96jEee0kIKIEebuqA" name="body" constrainedElement="_3HpWUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3HpWVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3HpWUd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3HpWUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_O2I3AI9DEeOB0eBUISUB4Q" name="PlannedCoverage">
      <ownedComment xmi:id="_olcGwI9DEeOB0eBUISUB4Q">
        <body>This template represents the insurance coverage intended to cover an act or procedure.</body>
      </ownedComment>
      <ownedRule xmi:id="_uMrmcN6jEee0kIKIEebuqA" name="PlannedCoverageTemplateId" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uMrmcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.129')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uMvQ0N6jEee0kIKIEebuqA" name="PlannedCoverageClassCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uMvQ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uMxtEN6jEee0kIKIEebuqA" name="PlannedCoverageMoodCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uMxtEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uM1-gN6jEee0kIKIEebuqA" name="PlannedCoverageId" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uM1-gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uM_IcN6jEee0kIKIEebuqA" name="PlannedCoverageCodeP" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uM_Icd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uM63AN6jEee0kIKIEebuqA" name="PlannedCoverageCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uM63Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uNDZ4N6jEee0kIKIEebuqA" name="PlannedCoverageStatusCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uNDZ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uNISYN6jEee0kIKIEebuqA" name="PlannedCoverageStatusCodeP" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uNISYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uPBIwN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationship" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPBIwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3JgXgN6jEee0kIKIEebuqA" name="PlannedCoverageAuthorParticipation" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3JgXgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zQjkN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActClassCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zQjkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject(classCode=vocab::x_ActClassDocumentEntryAct::ACT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zRKoN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActMoodCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zRKod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject(moodCode=vocab::x_DocumentActMood::INT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zRxsN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActId" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zRxsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zSYwN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActCodeP" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSYwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zS_0N6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zS_0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.221.5' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zTm4N6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActStatusCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zTm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined() and statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zUN8N6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipActStatusCodeP" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zUN8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).act->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zVcEN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipTypeCode" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zVcEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zWDIN6jEee0kIKIEebuqA" name="PlannedCoverageEntryRelationshipAct" constrainedElement="_O2I3AI9DEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zWDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->reject(act->one(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(cda::Act)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_O2JeEI9DEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_-miMII9TEeOB0eBUISUB4Q" name="GoalObservation">
      <ownedComment xmi:id="_iSyNMI9UEeOB0eBUISUB4Q">
        <body>&lt;p>&#xD;
This template represents a patient health goal. A Goal Observation template may have related components that are acts, encounters, observations, procedures, substance administrations, or supplies.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A goal may be a patient or provider goal. If the author is the recordTarget (patient), this is a patient goal. If the author is a provider, this is a provider goal. If both patient and provider are authors, this is a negotiated goal. If no author is present, it is assumed the document or section author(s) is the author of this goal.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A goal usually has a related health concern and/or risk.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A goal may have components consisting of other goals (milestones). These milestones are related to the overall goal through entryRelationships.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_uPfC0t6jEee0kIKIEebuqA" name="GoalObservationTemplateId" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPfp4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.121')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uPitMN6jEee0kIKIEebuqA" name="GoalObservationClassCode" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPitMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uPnlsN6jEee0kIKIEebuqA" name="GoalObservationMoodCode" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPnlsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::GOL</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uPseMN6jEee0kIKIEebuqA" name="GoalObservationId" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPseMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uP1BEN6jEee0kIKIEebuqA" name="GoalObservationCodeP" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uP1oIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uPwvoN6jEee0kIKIEebuqA" name="GoalObservationCode" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uPwvod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uP7uwN6jEee0kIKIEebuqA" name="GoalObservationStatusCode" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uP7uwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uQAAMN6jEee0kIKIEebuqA" name="GoalObservationStatusCodeP" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uQAAMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uQERoN6jEee0kIKIEebuqA" name="GoalObservationEffectiveTime" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uQERod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uQH8AN6jEee0kIKIEebuqA" name="GoalObservationValue" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uQH8Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uQoSUN6jEee0kIKIEebuqA" name="GoalObservationGoalObservation" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uQo5YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::GoalObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRHagN6jEee0kIKIEebuqA" name="GoalObservationActReferenceER" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRHagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vsxgMN6jEee0kIKIEebuqA" name="GoalObservationAuthorParticipation" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vsxgMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vtPaQN6jEee0kIKIEebuqA" name="GoalObservationHealthConcernActER" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vtPaQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vtpC4N6jEee0kIKIEebuqA" name="GoalObservationPriorityPreference" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vtpC4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1UYB4N6jEee0kIKIEebuqA" name="GoalObservationPlannedERs" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1UYB4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2_7kwN6jEee0kIKIEebuqA" name="GoalObservationReference" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2_7kwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zw54N6jEee0kIKIEebuqA" name="GoalObservationReferenceTypeCode" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zw54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zxg8N6jEee0kIKIEebuqA" name="GoalObservationReferenceExternalDocumentReference" constrainedElement="_-miMII9TEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zxg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-miMIY9TEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uQo5Yd6jEee0kIKIEebuqA" name="getGoalObservations" bodyCondition="_uQo5ZN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uQo5ZN6jEee0kIKIEebuqA" name="body" constrainedElement="_uQo5Yd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uQo5Zd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::GoalObservation)).oclAsType(consol::GoalObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uQo5Yt6jEee0kIKIEebuqA" type="_-miMII9TEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uQo5Y96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uRIBkN6jEee0kIKIEebuqA" name="getActReferenceERs" bodyCondition="_uRIBk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uRIBk96jEee0kIKIEebuqA" name="body" constrainedElement="_uRIBkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRIBlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uRIBkd6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uRIBkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vtPaQt6jEee0kIKIEebuqA" name="getHealthConcernActERs" bodyCondition="_vtQBUt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vtQBUt6jEee0kIKIEebuqA" name="body" constrainedElement="_vtPaQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vtQBU96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vtQBUN6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vtQBUd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vtpC4t6jEee0kIKIEebuqA" name="getPriorityPreference" bodyCondition="_vtpp8N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vtpp8N6jEee0kIKIEebuqA" name="body" constrainedElement="_vtpC4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vtpp8d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference))->asSequence()->any(true).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vtpC496jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vtpC5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1UYB4t6jEee0kIKIEebuqA" name="getPlannedERss" bodyCondition="_1UYB5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1UYB5d6jEee0kIKIEebuqA" name="body" constrainedElement="_1UYB4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1UYB5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1UYB496jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1UYB5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_An8P8I9kEeOB0eBUISUB4Q" name="HealthConcernAct">
      <ownedComment xmi:id="_f2uAII9kEeOB0eBUISUB4Q">
        <body>&lt;p>&#xD;
This template represents a health concern.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
It is a wrapper for a single health concern which may be derived from a variety of sources within an EHR (such as Problem List, Family History, Social History, Social Worker Note, etc.).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Health Concern Act is used to track non-optimal physical or psychological situations drawing the patient to the healthcare system. These may be from the perspective of the care team or from the perspective of the patient.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
When the underlying condition is of concern (i.e., as long as the condition, whether active or resolved, is of ongoing concern and interest), the statusCode is &quot;active&quot;. Only when the underlying condition is no longer of concern is the statusCode set to &quot;completed&quot;. The effectiveTime reflects the time that the underlying condition was felt to be a concern; it may or may not correspond to the effectiveTime of the condition (e.g., even five years later, a prior heart attack may remain a concern).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Health concerns require intervention(s) to increase the likelihood of achieving the goals of care for the patient and they specify the condition oriented reasons for creating the plan.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_uRIooN6jEee0kIKIEebuqA" name="HealthConcernActTemplateId" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRIood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.132' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRMTAN6jEee0kIKIEebuqA" name="HealthConcernActClassCode" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRMTAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRQkcN6jEee0kIKIEebuqA" name="HealthConcernActMoodCode" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRQkcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRTnwN6jEee0kIKIEebuqA" name="HealthConcernActId" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRTnwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRcKoN6jEee0kIKIEebuqA" name="HealthConcernActCodeP" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRcKod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRXSIN6jEee0kIKIEebuqA" name="HealthConcernActCode" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRXSId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75310-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uRhqMN6jEee0kIKIEebuqA" name="HealthConcernActStatusCode" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uRhqMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uR_kQN6jEee0kIKIEebuqA" name="HealthConcernActStatusCodeP" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uSALUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uShvwN6jEee0kIKIEebuqA" name="HealthConcernActEffectiveTime" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uShvwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uTJa0N6jEee0kIKIEebuqA" name="HealthConcernActHealthConcernActErRefr" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uTJa0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uTmt0N6jEee0kIKIEebuqA" name="HealthConcernActHealthConcernActErComp" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uTmt0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uUKHcN6jEee0kIKIEebuqA" name="HealthConcernActAssessmentScaleObservation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uUKHcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uUoBgN6jEee0kIKIEebuqA" name="HealthConcernActFamilyHistoryOrganizer2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uUoBgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.organizer.oclIsUndefined() and entryRelationship.organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uVHwwN6jEee0kIKIEebuqA" name="HealthConcernActNutritionAssessment" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uVHwwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionAssessment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uVmR4N6jEee0kIKIEebuqA" name="HealthConcernActPregnancyObservation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uVmR4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PregnancyObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uWEL8N6jEee0kIKIEebuqA" name="HealthConcernActCaregiverCharacteristics" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uWEL8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uWgQ0N6jEee0kIKIEebuqA" name="HealthConcernActCulturalAndReligiousObservation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uWgQ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CulturalAndReligiousObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uW7uoN6jEee0kIKIEebuqA" name="HealthConcernActCharacteristicsOfHomeEnvironment" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uW7uod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uXWlYN6jEee0kIKIEebuqA" name="HealthConcernActNutritionalStatusObservation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uXWlYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionalStatusObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uXyqQN6jEee0kIKIEebuqA" name="HealthConcernActEntryReferenceGeneral" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uXyqQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vucUIN6jEee0kIKIEebuqA" name="HealthConcernActAuthorParticipation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vucUId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vu1VsN6jEee0kIKIEebuqA" name="HealthConcernActSelfCareActivities" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vu1Vsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SelfCareActivities) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vvOXQN6jEee0kIKIEebuqA" name="HealthConcernActSensoryStatus" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vvO-UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SensoryStatus) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vvnY0N6jEee0kIKIEebuqA" name="HealthConcernActLongitudinalCareWoundObservation" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vvn_4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::LongitudinalCareWoundObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vwBBcN6jEee0kIKIEebuqA" name="HealthConcernActPriorityPreference" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vwBBcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1UxqgN6jEee0kIKIEebuqA" name="HealthConcernActProblemObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Uxqgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1VLTIN6jEee0kIKIEebuqA" name="HealthConcernActAllergyObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1VLTId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1Vk7wN6jEee0kIKIEebuqA" name="HealthConcernActMentalStatusObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Vk7wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::MentalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1V-kYN6jEee0kIKIEebuqA" name="HealthConcernActSmokingStatusMeaningfulUse2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1V-kYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1WY0EN6jEee0kIKIEebuqA" name="HealthConcernActEncounterDiagnosis2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1WY0Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EncounterDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1WycsN6jEee0kIKIEebuqA" name="HealthConcernActFunctionalStatusObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Wycsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::FunctionalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1XMFUN6jEee0kIKIEebuqA" name="HealthConcernActHospitalAdmissionDiagnosis2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1XMFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1XnjIN6jEee0kIKIEebuqA" name="HealthConcernActPostprocedureDiagnosis2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1XnjId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PostprocedureDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1YBLwN6jEee0kIKIEebuqA" name="HealthConcernActPreoperativeDiagnosis2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1YBLwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PreoperativeDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1Ya0YN6jEee0kIKIEebuqA" name="HealthConcernActReactionObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Ya0Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1Y0dAN6jEee0kIKIEebuqA" name="HealthConcernActResultObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Y0dAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ResultObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ZOFoN6jEee0kIKIEebuqA" name="HealthConcernActSocialHistoryObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ZOFod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SocialHistoryObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ZnuQN6jEee0kIKIEebuqA" name="HealthConcernActSubstanceOrDeviceAllergyObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ZnuQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SubstanceOrDeviceAllergyObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1aFBQN6jEee0kIKIEebuqA" name="HealthConcernActTobaccoUse2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1aFBQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::TobaccoUse2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1aep4N6jEee0kIKIEebuqA" name="HealthConcernActVitalSignObservation2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1aep4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::VitalSignObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1a45kN6jEee0kIKIEebuqA" name="HealthConcernActProblemObservation2Support" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1a45kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1bSiMN6jEee0kIKIEebuqA" name="HealthConcernActResultOrganizer2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1bTJQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.organizer.oclIsUndefined() and entryRelationship.organizer.oclIsKindOf(consol::ResultOrganizer2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1bsx4N6jEee0kIKIEebuqA" name="HealthConcernActProblemConcernAct2" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1bsx4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::ProblemConcernAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3A_UsN6jEee0kIKIEebuqA" name="HealthConcernActReference" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3A_Usd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41A3EN6jEee0kIKIEebuqA" name="HealthConcernActReferenceTypeCode" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41BeIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41BeId6jEee0kIKIEebuqA" name="HealthConcernActReferenceExternalDocumentReference" constrainedElement="_An8P8I9kEeOB0eBUISUB4Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41BeIt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_An8P8Y9kEeOB0eBUISUB4Q">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uUKHct6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_uUKugt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uUKugt6jEee0kIKIEebuqA" name="body" constrainedElement="_uUKHct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uUKug96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uUKugN6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uUKugd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uUookN6jEee0kIKIEebuqA" name="getFamilyHistoryOrganizer2s" bodyCondition="_uUook96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uUook96jEee0kIKIEebuqA" name="body" constrainedElement="_uUookN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uUoolN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2)).oclAsType(consol::FamilyHistoryOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uUookd6jEee0kIKIEebuqA" type="_6whQEIbpEeSxzopshBnQuw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uUookt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uVIX0N6jEee0kIKIEebuqA" name="getNutritionAssessments" bodyCondition="_uVIX096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uVIX096jEee0kIKIEebuqA" name="body" constrainedElement="_uVIX0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uVIX1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionAssessment)).oclAsType(consol::NutritionAssessment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uVIX0d6jEee0kIKIEebuqA" type="_NP5zMI05EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uVIX0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uVmR4t6jEee0kIKIEebuqA" name="getPregnancyObservations" bodyCondition="_uVm48N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uVm48N6jEee0kIKIEebuqA" name="body" constrainedElement="_uVmR4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uVm48d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PregnancyObservation)).oclAsType(consol::PregnancyObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uVmR496jEee0kIKIEebuqA" type="_2N6soBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uVmR5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uWEzAN6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_uWEzA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uWEzA96jEee0kIKIEebuqA" name="body" constrainedElement="_uWEzAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uWEzBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uWEzAd6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uWEzAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uWg34N6jEee0kIKIEebuqA" name="getCulturalAndReligiousObservations" bodyCondition="_uWg3496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uWg3496jEee0kIKIEebuqA" name="body" constrainedElement="_uWg34N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uWg35N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CulturalAndReligiousObservation)).oclAsType(consol::CulturalAndReligiousObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uWg34d6jEee0kIKIEebuqA" type="_H2EzIIqZEeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uWg34t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uW7uot6jEee0kIKIEebuqA" name="getCharacteristicsOfHomeEnvironments" bodyCondition="_uW7upd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uW7upd6jEee0kIKIEebuqA" name="body" constrainedElement="_uW7uot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uW7upt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment)).oclAsType(consol::CharacteristicsOfHomeEnvironment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uW7uo96jEee0kIKIEebuqA" type="_O-O-IInUEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uW7upN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uXXMcN6jEee0kIKIEebuqA" name="getNutritionalStatusObservations" bodyCondition="_uXXMc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uXXMc96jEee0kIKIEebuqA" name="body" constrainedElement="_uXXMcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uXXMdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionalStatusObservation)).oclAsType(consol::NutritionalStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uXXMcd6jEee0kIKIEebuqA" type="_T1dcwI37EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uXXMct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uXyqQt6jEee0kIKIEebuqA" name="getEntryReferenceGenerals" bodyCondition="_uXyqRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uXyqRd6jEee0kIKIEebuqA" name="body" constrainedElement="_uXyqQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uXyqRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uXyqQ96jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uXyqRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vu18wN6jEee0kIKIEebuqA" name="getSelfCareActivitiess" bodyCondition="_vu18w96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vu18w96jEee0kIKIEebuqA" name="body" constrainedElement="_vu18wN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vu18xN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SelfCareActivities)).oclAsType(consol::SelfCareActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vu18wd6jEee0kIKIEebuqA" type="_nC0xUJmzEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vu18wt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vvO-Ud6jEee0kIKIEebuqA" name="getSensoryStatuss" bodyCondition="_vvO-VN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vvO-VN6jEee0kIKIEebuqA" name="body" constrainedElement="_vvO-Ud6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vvO-Vd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SensoryStatus)).oclAsType(consol::SensoryStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vvO-Ut6jEee0kIKIEebuqA" type="_kyeGAJm4EeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vvO-U96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vvn_4d6jEee0kIKIEebuqA" name="getLongitudinalCareWoundObservations" bodyCondition="_vvn_5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vvn_5N6jEee0kIKIEebuqA" name="body" constrainedElement="_vvn_4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vvn_5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::LongitudinalCareWoundObservation)).oclAsType(consol::LongitudinalCareWoundObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vvn_4t6jEee0kIKIEebuqA" type="_09uFMJp_EeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vvn_496jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vwBBct6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_vwBBdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vwBBdd6jEee0kIKIEebuqA" name="body" constrainedElement="_vwBBct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vwBBdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vwBBc96jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vwBBdN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1Uxqgt6jEee0kIKIEebuqA" name="getProblemObservation2s" bodyCondition="_1Uxqhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Uxqhd6jEee0kIKIEebuqA" name="body" constrainedElement="_1Uxqgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Uxqht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Uxqg96jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1UxqhN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1VLTIt6jEee0kIKIEebuqA" name="getAllergyObservation2s" bodyCondition="_1VLTJd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1VLTJd6jEee0kIKIEebuqA" name="body" constrainedElement="_1VLTIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1VLTJt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyObservation2)).oclAsType(consol::AllergyObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1VLTI96jEee0kIKIEebuqA" type="_uVJogLj5EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1VLTJN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1Vk7wt6jEee0kIKIEebuqA" name="getMentalStatusObservation2s" bodyCondition="_1Vk7xd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Vk7xd6jEee0kIKIEebuqA" name="body" constrainedElement="_1Vk7wt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Vk7xt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Vk7w96jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Vk7xN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1V_LcN6jEee0kIKIEebuqA" name="getSmokingStatusMeaningfulUse2s" bodyCondition="_1V_Lc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1V_Lc96jEee0kIKIEebuqA" name="body" constrainedElement="_1V_LcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1V_LdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2)).oclAsType(consol::SmokingStatusMeaningfulUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1V_Lcd6jEee0kIKIEebuqA" type="_Hl3ScLk0EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1V_Lct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1WY0Et6jEee0kIKIEebuqA" name="getEncounterDiagnosis2s" bodyCondition="_1WZbIt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1WZbIt6jEee0kIKIEebuqA" name="body" constrainedElement="_1WY0Et6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1WZbI96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EncounterDiagnosis2)).oclAsType(consol::EncounterDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1WZbIN6jEee0kIKIEebuqA" type="_jH6CcMzNEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1WZbId6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1Wycst6jEee0kIKIEebuqA" name="getFunctionalStatusObservation2s" bodyCondition="_1Wyctd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Wyctd6jEee0kIKIEebuqA" name="body" constrainedElement="_1Wycst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Wyctt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusObservation2)).oclAsType(consol::FunctionalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Wycs96jEee0kIKIEebuqA" type="_3WqogMzSEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1WyctN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1XMFUt6jEee0kIKIEebuqA" name="getHospitalAdmissionDiagnosis2s" bodyCondition="_1XMFVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1XMFVd6jEee0kIKIEebuqA" name="body" constrainedElement="_1XMFUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1XMFVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2)).oclAsType(consol::HospitalAdmissionDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1XMFU96jEee0kIKIEebuqA" type="_GM6icOEIEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1XMFVN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1XoKMN6jEee0kIKIEebuqA" name="getPostprocedureDiagnosis2s" bodyCondition="_1XoKM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1XoKM96jEee0kIKIEebuqA" name="body" constrainedElement="_1XoKMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1XoKNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PostprocedureDiagnosis2)).oclAsType(consol::PostprocedureDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1XoKMd6jEee0kIKIEebuqA" type="__SgUwOwuEeOqa975IP2wug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1XoKMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1YBy0N6jEee0kIKIEebuqA" name="getPreoperativeDiagnosis2s" bodyCondition="_1YBy096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1YBy096jEee0kIKIEebuqA" name="body" constrainedElement="_1YBy0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1YBy1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PreoperativeDiagnosis2)).oclAsType(consol::PreoperativeDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1YBy0d6jEee0kIKIEebuqA" type="_5l3g0OzYEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1YBy0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1YbbcN6jEee0kIKIEebuqA" name="getReactionObservation2s" bodyCondition="_1Ybbc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Ybbc96jEee0kIKIEebuqA" name="body" constrainedElement="_1YbbcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1YbbdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Ybbcd6jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Ybbct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1Y1EEN6jEee0kIKIEebuqA" name="getResultObservation2s" bodyCondition="_1Y1EE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Y1EE96jEee0kIKIEebuqA" name="body" constrainedElement="_1Y1EEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Y1EFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ResultObservation2)).oclAsType(consol::ResultObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Y1EEd6jEee0kIKIEebuqA" type="_H85E0PF7EeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Y1EEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1ZOFot6jEee0kIKIEebuqA" name="getSocialHistoryObservation2s" bodyCondition="_1ZOFpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1ZOFpd6jEee0kIKIEebuqA" name="body" constrainedElement="_1ZOFot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ZOFpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SocialHistoryObservation2)).oclAsType(consol::SocialHistoryObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1ZOFo96jEee0kIKIEebuqA" type="_b_iGIPJfEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ZOFpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1ZnuQt6jEee0kIKIEebuqA" name="getSubstanceOrDeviceAllergyObservation2s" bodyCondition="_1ZnuRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1ZnuRd6jEee0kIKIEebuqA" name="body" constrainedElement="_1ZnuQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ZnuRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SubstanceOrDeviceAllergyObservation2)).oclAsType(consol::SubstanceOrDeviceAllergyObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1ZnuQ96jEee0kIKIEebuqA" type="_K3M6IPKJEeOn7bMsPcStOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ZnuRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1aFBQt6jEee0kIKIEebuqA" name="getTobaccoUse2s" bodyCondition="_1aFoUt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1aFoUt6jEee0kIKIEebuqA" name="body" constrainedElement="_1aFBQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1aFoU96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::TobaccoUse2)).oclAsType(consol::TobaccoUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1aFoUN6jEee0kIKIEebuqA" type="_qHUXwPMxEeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1aFoUd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1afQ8N6jEee0kIKIEebuqA" name="getVitalSignObservation2s" bodyCondition="_1afQ896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1afQ896jEee0kIKIEebuqA" name="body" constrainedElement="_1afQ8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1afQ9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::VitalSignObservation2)).oclAsType(consol::VitalSignObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1afQ8d6jEee0kIKIEebuqA" type="__zeTcPM3EeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1afQ8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1a5goN6jEee0kIKIEebuqA" name="getProblemObservation2Supports" bodyCondition="_1a5go96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1a5go96jEee0kIKIEebuqA" name="body" constrainedElement="_1a5goN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1a5gpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1a5god6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1a5got6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1bTJQd6jEee0kIKIEebuqA" name="getResultOrganizer2s" bodyCondition="_1bTJRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1bTJRN6jEee0kIKIEebuqA" name="body" constrainedElement="_1bTJQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1bTJRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer2)).oclAsType(consol::ResultOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1bTJQt6jEee0kIKIEebuqA" type="_gU40UPGEEeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1bTJQ96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1btY8N6jEee0kIKIEebuqA" name="getProblemConcernAct2s" bodyCondition="_1btY896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1btY896jEee0kIKIEebuqA" name="body" constrainedElement="_1btY8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1btY9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct2)).oclAsType(consol::ProblemConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1btY8d6jEee0kIKIEebuqA" type="_y5C8IOzbEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1btY8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XD5vgJA8EeOZX935IVJfOg" name="InterventionAct">
      <ownedComment xmi:id="_nULqoJA9EeOZX935IVJfOg">
        <body>&lt;p>&#xD;
This template represents an Intervention Act. It is a wrapper for intervention-type activities considered to be parts of the same intervention. For example, an activity such as &quot;elevate head of bed&quot; combined with &quot;provide humidified O2 per nasal cannula&quot; may be the interventions performed for a health concern of &quot;respiratory insufficiency&quot; to achieve a goal of &quot;pulse oximetry greater than 92%&quot;. These intervention activities may be newly described or derived from a variety of sources within an EHR.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Interventions are actions taken to increase the likelihood of achieving the patient's or providers' goals. An Intervention Act should contain a reference to a Goal Observation representing the reason for the intervention.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Intervention Acts can be related to each other, or to Planned Intervention Acts (E.g., a Planned Intervention Act with moodCode of INT could be related to a series of Intervention Acts with moodCode of EVN, each having an effectiveTime containing the time of the intervention).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
All interventions referenced in an Intervention Act must have a moodCode of EVN, indicating that they have occurred.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_uXzRUN6jEee0kIKIEebuqA" name="InterventionActTemplateId" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uXzRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.131' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uX27sN6jEee0kIKIEebuqA" name="InterventionActClassCode" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uX27sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uX6mEN6jEee0kIKIEebuqA" name="InterventionActMoodCode" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uX6mEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uX-QcN6jEee0kIKIEebuqA" name="InterventionActId" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uX-Qcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYGMQN6jEee0kIKIEebuqA" name="InterventionActCodeP" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYGMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYB60N6jEee0kIKIEebuqA" name="InterventionActCode" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYB60d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '362956003' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYJ2oN6jEee0kIKIEebuqA" name="InterventionActStatusCode" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYJ2od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYOIEN6jEee0kIKIEebuqA" name="InterventionActStatusCodeP" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYOIEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYRycN6jEee0kIKIEebuqA" name="InterventionActEffectiveTime" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYRycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uYyIwN6jEee0kIKIEebuqA" name="InterventionActInterventionAct" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYyIwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::InterventionAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uZO0sN6jEee0kIKIEebuqA" name="InterventionActNutritionRecommendation" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uZO0sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::NutritionRecommendation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uZn2QN6jEee0kIKIEebuqA" name="InterventionActInterventionEntryReference" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uZodUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaBe4N6jEee0kIKIEebuqA" name="InterventionActGoalObsEntryReference" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaBe4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vwaDAN6jEee0kIKIEebuqA" name="InterventionActAuthorParticipation" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vwaDAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1cGagN6jEee0kIKIEebuqA" name="InterventionActAdvanceDirectiveObservation2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1cGagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AdvanceDirectiveObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1cgDIN6jEee0kIKIEebuqA" name="InterventionActImmunizationActivity2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1cgDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1c5rwN6jEee0kIKIEebuqA" name="InterventionActMedicationActivity2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1c5rwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1dTUYN6jEee0kIKIEebuqA" name="InterventionActProcedureActivityAct2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1dTUYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::ProcedureActivityAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1duLIN6jEee0kIKIEebuqA" name="InterventionActProcedureActivityObservation2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1duLId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProcedureActivityObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1eHzwN6jEee0kIKIEebuqA" name="InterventionActProcedureActivityProcedure2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1eHzwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ehcYN6jEee0kIKIEebuqA" name="InterventionActEncounterActivity2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ehcYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(consol::EncounterActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1e7sEN6jEee0kIKIEebuqA" name="InterventionActNonMedicinalSupplyActivity2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1e7sEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1fVUsN6jEee0kIKIEebuqA" name="InterventionActInstruction2" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1fVUsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3B6hwN6jEee0kIKIEebuqA" name="InterventionActHandoffCommunicationParticipants" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3B6hwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::HandoffCommunicationParticipants) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3CX0wN6jEee0kIKIEebuqA" name="InterventionActPlannedInterventionAct" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3CX0wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedInterventionAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3C288N6jEee0kIKIEebuqA" name="InterventionActReference" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3C288d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4119gN6jEee0kIKIEebuqA" name="InterventionActReferenceTypeCode" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4119gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_412kkN6jEee0kIKIEebuqA" name="InterventionActReferenceExternalDocumentReference" constrainedElement="_XD5vgJA8EeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_412kkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_XENRgJA8EeOZX935IVJfOg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uYyIwt6jEee0kIKIEebuqA" name="getInterventionActs" bodyCondition="_uYyIxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uYyIxd6jEee0kIKIEebuqA" name="body" constrainedElement="_uYyIwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uYyIxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::InterventionAct)).oclAsType(consol::InterventionAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uYyIw96jEee0kIKIEebuqA" type="_XD5vgJA8EeOZX935IVJfOg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uYyIxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uZO0st6jEee0kIKIEebuqA" name="getNutritionRecommendations" bodyCondition="_uZO0td6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uZO0td6jEee0kIKIEebuqA" name="body" constrainedElement="_uZO0st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uZO0tt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::NutritionRecommendation)).oclAsType(consol::NutritionRecommendation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uZO0s96jEee0kIKIEebuqA" type="_FhAIMI3FEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uZO0tN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_uZodUd6jEee0kIKIEebuqA" name="getInterventionEntryReferences" bodyCondition="_uZodVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uZodVN6jEee0kIKIEebuqA" name="body" constrainedElement="_uZodUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uZodVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uZodUt6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uZodU96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1cGagt6jEee0kIKIEebuqA" name="getAdvanceDirectiveObservation2s" bodyCondition="_1cHBkN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1cHBkN6jEee0kIKIEebuqA" name="body" constrainedElement="_1cGagt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1cHBkd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)).oclAsType(consol::AdvanceDirectiveObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1cGag96jEee0kIKIEebuqA" type="_GnllUK-9EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1cGahN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1cgDIt6jEee0kIKIEebuqA" name="getImmunizationActivity2s" bodyCondition="_1cgqMt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1cgqMt6jEee0kIKIEebuqA" name="body" constrainedElement="_1cgDIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1cgqM96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2)).oclAsType(consol::ImmunizationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1cgqMN6jEee0kIKIEebuqA" type="_zI6vcOE7EeOTq9XEMvvkWw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1cgqMd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1c6S0N6jEee0kIKIEebuqA" name="getMedicationActivity2s" bodyCondition="_1c6S096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1c6S096jEee0kIKIEebuqA" name="body" constrainedElement="_1c6S0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1c6S1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1c6S0d6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1c6S0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1dT7cN6jEee0kIKIEebuqA" name="getProcedureActivityAct2s" bodyCondition="_1dT7c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1dT7c96jEee0kIKIEebuqA" name="body" constrainedElement="_1dT7cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1dT7dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct2)).oclAsType(consol::ProcedureActivityAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1dT7cd6jEee0kIKIEebuqA" type="_CFMuYPDbEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1dT7ct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1duyMN6jEee0kIKIEebuqA" name="getProcedureActivityObservation2s" bodyCondition="_1duyM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1duyM96jEee0kIKIEebuqA" name="body" constrainedElement="_1duyMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1duyNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation2)).oclAsType(consol::ProcedureActivityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1duyMd6jEee0kIKIEebuqA" type="_QoLWAPDjEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1duyMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1eHzwt6jEee0kIKIEebuqA" name="getProcedureActivityProcedure2s" bodyCondition="_1eIa0d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1eIa0d6jEee0kIKIEebuqA" name="body" constrainedElement="_1eHzwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1eIa0t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1eHzw96jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1eIa0N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1eiDcN6jEee0kIKIEebuqA" name="getEncounterActivity2s" bodyCondition="_1eiDc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1eiDc96jEee0kIKIEebuqA" name="body" constrainedElement="_1eiDcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1eiDdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivity2)).oclAsType(consol::EncounterActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1eiDcd6jEee0kIKIEebuqA" type="_RGU34MzDEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1eiDct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1e7sEt6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivity2s" bodyCondition="_1e7sFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1e7sFd6jEee0kIKIEebuqA" name="body" constrainedElement="_1e7sEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1e7sFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1e7sE96jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1e7sFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1fV7wN6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_1fV7w96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1fV7w96jEee0kIKIEebuqA" name="body" constrainedElement="_1fV7wN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1fV7xN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1fV7wd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1fV7wt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3B6hwt6jEee0kIKIEebuqA" name="getHandoffCommunicationParticipantss" bodyCondition="_3B6hxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3B6hxd6jEee0kIKIEebuqA" name="body" constrainedElement="_3B6hwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3B6hxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HandoffCommunicationParticipants)).oclAsType(consol::HandoffCommunicationParticipants)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3B6hw96jEee0kIKIEebuqA" type="_POfwAIz7EeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3B6hxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3CYb0N6jEee0kIKIEebuqA" name="getPlannedInterventionActs" bodyCondition="_3CYb096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3CYb096jEee0kIKIEebuqA" name="body" constrainedElement="_3CYb0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3CYb1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedInterventionAct)).oclAsType(consol::PlannedInterventionAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3CYb0d6jEee0kIKIEebuqA" type="_dGARYOLSEeS505YV9ux2XA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3CYb0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_QcUL8JBGEeOZX935IVJfOg" name="ExternalDocumentReference">
      <ownedComment xmi:id="_v3YrsJBGEeOZX935IVJfOg">
        <body>Where it is necessary to reference an external clinical document, the External Document Reference template can be used to reference this external document. However, if the containing document is replacing or appending to another document in the same set, that relationship is set in the header, using ClinicalDocument/relatedDocument.</body>
      </ownedComment>
      <ownedRule xmi:id="_uaCF8N6jEee0kIKIEebuqA" name="ExternalDocumentReferenceTemplateId" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaCF8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.115')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaFJQN6jEee0kIKIEebuqA" name="ExternalDocumentReferenceClassCode" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaFJQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::ActClassDocument::DOCCLIN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaIMkN6jEee0kIKIEebuqA" name="ExternalDocumentReferenceMoodCode" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaIMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('moodCode') and self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaLP4N6jEee0kIKIEebuqA" name="ExternalDocumentReferenceId" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaLP4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaNsIN6jEee0kIKIEebuqA" name="ExternalDocumentReferenceCode" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaOTMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaQvcN6jEee0kIKIEebuqA" name="ExternalDocumentReferenceSetId" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaQvcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.setId.oclIsUndefined() or self.setId.isNullFlavorUndefined()) implies (not self.setId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaTywN6jEee0kIKIEebuqA" name="ExternalDocumentReferenceVersionNumber" constrainedElement="_QcUL8JBGEeOZX935IVJfOg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaTywd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.versionNumber.oclIsUndefined() or self.versionNumber.isNullFlavorUndefined()) implies (not self.versionNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_QcUL8ZBGEeOZX935IVJfOg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_gRO4cEcHEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_KRcPwJXFEeOgXcDbh8Igkw" name="PlannedImmunizationActivity">
      <ownedComment xmi:id="_tvCUUJXGEeOgXcDbh8Igkw">
        <body>&lt;p>&#xD;
This template represents planned immunizations. Planned Immunization Activity is very similar to Planned Medication Activity with some key differences, for example, the drug code system is constrained to CVX codes.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The priority of the immunization activity to the patient and provider is communicated through Priority Preference. The effectiveTime indicates the time when the immunization activity is intended to take place and authorTime indicates when the documentation of the plan occurred.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_uaVn8N6jEee0kIKIEebuqA" name="PlannedImmunizationActivityTemplateId" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaVn8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.120')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uaYrQN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityClassCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uaYrQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ua5ooN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityMoodCodeP" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ua5ood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uac8sN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityMoodCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uac8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::INT or value = vocab::x_DocumentSubstanceMood::PRMS or value = vocab::x_DocumentSubstanceMood::PRP or value = vocab::x_DocumentSubstanceMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ubWUkN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityId" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ubWUkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ubZX4N6jEee0kIKIEebuqA" name="PlannedImmunizationActivityStatusCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ubZ-8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ubdpUN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityStatusCodeP" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ubdpUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ubh6wN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityEffectiveTime" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ubh6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (self.effectiveTime->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ubk-EN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityRepeatNumber" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ubk-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ucHwoN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityRouteCodeP" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ucHwod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uboocN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityRouteCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uboocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uc_6YN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityApproachSiteCodeP" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uc_6Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.approachSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ucj1gN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityApproachSiteCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ucj1gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_udb_QN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityDoseQuantity" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_udb_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ud9jsN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityPerformer" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ud9jsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vy8ZoN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityAuthorParticipation" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vy8Zod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vzVbMN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityPriorityPreference" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vzVbMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1fuWQN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityIndication2" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1fuWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1gLpQN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityInstruction2" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1gLpQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1gl48N6jEee0kIKIEebuqA" name="PlannedImmunizationActivityPrecondition" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1gl48d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1haYUN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityConsumable" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1haYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_415A0N6jEee0kIKIEebuqA" name="PlannedImmunizationActivityIVLPQUnit" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_415A0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.doseQuantity->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not unit.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42SpcN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityConsumableImmunizationMedicationInformation2" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Spcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::ImmunizationMedicationInformation2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42s5IN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityPreconditionTypeCode" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42s5Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42tgMN6jEee0kIKIEebuqA" name="PlannedImmunizationActivityPreconditionPreconditionForSubstanceAdministration2" constrainedElement="_KRcPwJXFEeOgXcDbh8Igkw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42tgMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_KResAJXFEeOgXcDbh8Igkw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_vzWCQN6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_vzWCQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vzWCQ96jEee0kIKIEebuqA" name="body" constrainedElement="_vzWCQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vzWCRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vzWCQd6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vzWCQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1fu9UN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_1fu9U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1fu9U96jEee0kIKIEebuqA" name="body" constrainedElement="_1fu9UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1fu9VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1fu9Ud6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1fu9Ut6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1gMQUN6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_1gMQU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1gMQU96jEee0kIKIEebuqA" name="body" constrainedElement="_1gMQUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1gMQVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1gMQUd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1gMQUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_GXlxYJmLEeOeSLwbllPCyw" name="PrognosisObservation">
      <ownedComment xmi:id="_RUa14JmMEeOeSLwbllPCyw">
        <body>&lt;p>&#xD;
This template represents the patient's prognosis, which must be associated with a problem observation. It may serve as an alert to scope intervention plans. &#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The effectiveTime represents the clinically relevant time of the observation. The observation/value is not constrained and can represent the expected life duration in PQ, an anticipated course of the disease in text, or coded term.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_ud-KwN6jEee0kIKIEebuqA" name="PrognosisObservationTemplateId" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ud-x0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.113')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueB1IN6jEee0kIKIEebuqA" name="PrognosisObservationClassCode" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueB1Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueFfgN6jEee0kIKIEebuqA" name="PrognosisObservationMoodCode" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueFfgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueNbUN6jEee0kIKIEebuqA" name="PrognosisObservationCodeP" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueNbUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueJw8N6jEee0kIKIEebuqA" name="PrognosisObservationCode" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueJw8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '75328-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueST0N6jEee0kIKIEebuqA" name="PrognosisObservationStatusCode" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueST0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueXMUN6jEee0kIKIEebuqA" name="PrognosisObservationStatusCodeP" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueXMUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uea2sN6jEee0kIKIEebuqA" name="PrognosisObservationEffectiveTime" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uea2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ued6AN6jEee0kIKIEebuqA" name="PrognosisObservationValue" constrainedElement="_GXlxYJmLEeOeSLwbllPCyw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ued6Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_GXoNoJmLEeOeSLwbllPCyw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0NewYJmVEeOLJeQez13EkQ" name="ProgressTowardGoalObservation">
      <ownedComment xmi:id="_MXrDgJmWEeOLJeQez13EkQ">
        <body>&lt;p>&#xD;
This template represents a patient's progress toward a goal. It can describe whether a goal has been achieved or not and can also describe movement a patient is making toward the achievement of a goal (e.g., &quot;Goal not achieved - no discernible change&quot;, &quot;Goal not achieved - progressing toward goal&quot;, &quot;Goal not achieved - declining from goal&quot;).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
In the Care Planning workflow, the judgment about how well the person is progressing towards the goal is based on the observations made about the status of the patient with respect to interventions performed in the pursuit of achieving that goal.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
For example, an observation outcome of a blood oxygen saturation level of 95% is related to the goal of &quot;Maintain Pulse Ox greater than 92&quot; and in this case the Progress Toward Goal Observation template would record that the related goal has been achieved.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_uegWQN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationTemplateId" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uegWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.110')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uejZkN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationClassCode" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uejZkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uenrAN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationMoodCode" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uenrAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uequUN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationId" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uequUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueyDEN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationCodeP" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueyqIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ueuYsN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationCode" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ueuYsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ue3ioN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationStatusCode" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ue3iod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ue9CMN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationStatusCodeP" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ue9CMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ufBToN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationValue" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ufBTod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '390802008' or value.code = '390801001')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ufdYgN6jEee0kIKIEebuqA" name="ProgressTowardGoalObservationValueP" constrainedElement="_0NewYJmVEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ufdYgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_0NewYZmVEeOLJeQez13EkQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ncafYJmaEeOLJeQez13EkQ" name="PriorityPreference">
      <ownedComment xmi:id="_zPCY4JmaEeOLJeQez13EkQ">
        <body>This template represents priority preferences chosen by a patient or a care provider. Priority preferences are choices made by care providers or patients or both relative to options for care or treatment (including scheduling, care experience, and meeting of personal health goals), the sharing and disclosure of health information, and the prioritization of concerns and problems.</body>
      </ownedComment>
      <ownedRule xmi:id="_uf3oMN6jEee0kIKIEebuqA" name="PriorityPreferenceTemplateId" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uf3oMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.143')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uf6rgN6jEee0kIKIEebuqA" name="PriorityPreferenceClassCode" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uf6rgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uf-V4N6jEee0kIKIEebuqA" name="PriorityPreferenceMoodCode" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uf-V4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugBZMN6jEee0kIKIEebuqA" name="PriorityPreferenceId" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugBZMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugIt8N6jEee0kIKIEebuqA" name="PriorityPreferenceCodeP" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugJVAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugFDkN6jEee0kIKIEebuqA" name="PriorityPreferenceCode" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugFDkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '225773000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugM_YN6jEee0kIKIEebuqA" name="PriorityPreferenceEffectiveTime" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugM_Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugQpwN6jEee0kIKIEebuqA" name="PriorityPreferenceValue" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugQpwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '394849002' or value.code = '394848005' or value.code = '441808003')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ugvx8N6jEee0kIKIEebuqA" name="PriorityPreferenceValueP" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ugvx8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vzvD0N6jEee0kIKIEebuqA" name="PriorityPreferenceAuthorParticipation" constrainedElement="_ncafYJmaEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vzvD0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ncbGcJmaEeOLJeQez13EkQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_nC0xUJmzEeOLJeQez13EkQ" name="SelfCareActivities">
      <ownedComment xmi:id="_LAG4AJm0EeOLJeQez13EkQ">
        <body>This template represents a patient's daily self-care ability. These activities are called Activities of Daily Living (ADL) and Instrumental Activities of Daily Living (IADL). ADLs involve caring for and moving of the body (e.g., dressing, bathing, eating). IADLs support an independent life style (e.g., cooking, managing medications, driving, shopping).</body>
      </ownedComment>
      <ownedRule xmi:id="_uhJakN6jEee0kIKIEebuqA" name="SelfCareActivitiesTemplateId" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uhKBoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.128')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uhNE8N6jEee0kIKIEebuqA" name="SelfCareActivitiesClassCode" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uhNE8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uhQvUN6jEee0kIKIEebuqA" name="SelfCareActivitiesMoodCode" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uhQvUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uhv3gN6jEee0kIKIEebuqA" name="SelfCareActivitiesCodeP" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uhv3gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uhVAwN6jEee0kIKIEebuqA" name="SelfCareActivitiesCode" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uhVAwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '46008-9' or value.code = '28409-1' or value.code = '28408-3' or value.code = '46484-2' or value.code = '46482-6' or value.code = '28413-3'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uiKuQN6jEee0kIKIEebuqA" name="SelfCareActivitiesStatusCode" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uiKuQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uiO_sN6jEee0kIKIEebuqA" name="SelfCareActivitiesStatusCodeP" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uiO_sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uiSqEN6jEee0kIKIEebuqA" name="SelfCareActivitiesEffectiveTime" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uiSqEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uiWUcN6jEee0kIKIEebuqA" name="SelfCareActivitiesValue" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uiWUcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '371150009' or value.code = '371153006' or value.code = '371155004' or value.code = '371152001' or value.code = '371154000' or value.code = '371151008' or value.code = '371156003' or value.code = '371157007' or value.code = '385640009')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uixyQN6jEee0kIKIEebuqA" name="SelfCareActivitiesValueP" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uixyQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3KFmUN6jEee0kIKIEebuqA" name="SelfCareActivitiesAuthorParticipation" constrainedElement="_nC0xUJmzEeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3KFmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_nC1YYJmzEeOLJeQez13EkQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_kyeGAJm4EeOLJeQez13EkQ" name="SensoryStatus">
      <ownedComment xmi:id="_LirAQJm5EeOLJeQez13EkQ">
        <body>This template represents a patient's sensory or speech ability. It may contain an assessment scale observations related to the sensory or speech ability.</body>
      </ownedComment>
      <ownedRule xmi:id="_ujLa4N6jEee0kIKIEebuqA" name="SensoryStatusTemplateId" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ujLa4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.127')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ujOeMN6jEee0kIKIEebuqA" name="SensoryStatusClassCode" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ujOeMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ujSIkN6jEee0kIKIEebuqA" name="SensoryStatusMoodCode" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ujSIkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ujxQwN6jEee0kIKIEebuqA" name="SensoryStatusCodeP" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ujxQwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ujWaAN6jEee0kIKIEebuqA" name="SensoryStatusCode" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ujWaAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '47078008' or value.code = '405183003' or value.code = '373713005' or value.code = '397627001' or value.code = '397686008' or value.code = '397624008' or value.code = '128542002' or value.code = '285567008'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ukQY8N6jEee0kIKIEebuqA" name="SensoryStatusStatusCode" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ukQY8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ukUqYN6jEee0kIKIEebuqA" name="SensoryStatusStatusCodeP" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ukUqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ukYUwN6jEee0kIKIEebuqA" name="SensoryStatusEffectiveTime" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ukYUwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ukcmMN6jEee0kIKIEebuqA" name="SensoryStatusValue" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ukcmMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uk5SIN6jEee0kIKIEebuqA" name="SensoryStatusValueP" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uk5SId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ulyqAN6jEee0kIKIEebuqA" name="SensoryStatusAssessmentScaleObservation" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ulyqAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3KoY4N6jEee0kIKIEebuqA" name="SensoryStatusAuthorParticipation" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3KoY4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42xKkN6jEee0kIKIEebuqA" name="SensoryStatusIVLTSLow" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42xKkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42xxoN6jEee0kIKIEebuqA" name="SensoryStatusIVLTSHigh" constrainedElement="_kyeGAJm4EeOLJeQez13EkQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42xxod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_kyeGAZm4EeOLJeQez13EkQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_ulyqAt6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_ulyqBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ulyqBd6jEee0kIKIEebuqA" name="body" constrainedElement="_ulyqAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ulyqBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ulyqA96jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ulyqBN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_KTrEAJpdEeOK6dzbL4VoTA" name="SubstanceAdministeredAct">
      <ownedComment xmi:id="_tU2HwJpdEeOK6dzbL4VoTA">
        <body>This template represents the administration course in a series. The entryRelationship/sequenceNumber in the containing template shows the order of this particular administration in that medication series.</body>
      </ownedComment>
      <ownedRule xmi:id="_ulzREN6jEee0kIKIEebuqA" name="SubstanceAdministeredActTemplateId" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ulzREd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.118')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ul2UYN6jEee0kIKIEebuqA" name="SubstanceAdministeredActClassCode" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ul2UYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ul5-wN6jEee0kIKIEebuqA" name="SubstanceAdministeredActMoodCode" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ul5-wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ul9CEN6jEee0kIKIEebuqA" name="SubstanceAdministeredActId" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ul9CEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umEW0N6jEee0kIKIEebuqA" name="SubstanceAdministeredActCodeP" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umEW0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umAscN6jEee0kIKIEebuqA" name="SubstanceAdministeredActCode" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umAscd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '416118004' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umIoQN6jEee0kIKIEebuqA" name="SubstanceAdministeredActStatusCode" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umIoQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umM5sN6jEee0kIKIEebuqA" name="SubstanceAdministeredActStatusCodeP" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umM5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umQkEN6jEee0kIKIEebuqA" name="SubstanceAdministeredActEffectiveTime" constrainedElement="_KTrEAJpdEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umQkEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_KTtgQJpdEeOK6dzbL4VoTA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_D6Lm0JpnEeOK6dzbL4VoTA" name="WoundCharacteristic">
      <ownedComment xmi:id="_eeKb0JpnEeOK6dzbL4VoTA">
        <body>This template represents characteristics of a wound (e.g., integrity of suture line, odor, erythema).</body>
      </ownedComment>
      <ownedRule xmi:id="_umSZQN6jEee0kIKIEebuqA" name="WoundCharacteristicTemplateId" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umTAUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.134')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umVckN6jEee0kIKIEebuqA" name="WoundCharacteristicClassCode" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umWDoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umZuAN6jEee0kIKIEebuqA" name="WoundCharacteristicMoodCode" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umZuAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umdYYN6jEee0kIKIEebuqA" name="WoundCharacteristicId" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umdYYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umktIN6jEee0kIKIEebuqA" name="WoundCharacteristicCodeP" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umktId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umgbsN6jEee0kIKIEebuqA" name="WoundCharacteristicCode" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umgbsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umo-kN6jEee0kIKIEebuqA" name="WoundCharacteristicStatusCode" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umo-kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umso8N6jEee0kIKIEebuqA" name="WoundCharacteristicStatusCodeP" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umso8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umwTUN6jEee0kIKIEebuqA" name="WoundCharacteristicEffectiveTime" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umwTUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_umz9sN6jEee0kIKIEebuqA" name="WoundCharacteristicValue" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_umz9sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_unO0cN6jEee0kIKIEebuqA" name="WoundCharacteristicValueP" constrainedElement="_D6Lm0JpnEeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_unO0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_D6Lm0ZpnEeOK6dzbL4VoTA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_94MpsJp7EeOK6dzbL4VoTA" name="WoundMeasurementObservation">
      <ownedComment xmi:id="_Ul6XwJp8EeOK6dzbL4VoTA">
        <body>This template represents the Wound Measurement Observations of wound width, depth and length.</body>
      </ownedComment>
      <ownedRule xmi:id="_unodEN6jEee0kIKIEebuqA" name="WoundMeasurementObservationTemplateId" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_unpEIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.133')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_unsHcN6jEee0kIKIEebuqA" name="WoundMeasurementObservationClassCode" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_unsHcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_unvx0N6jEee0kIKIEebuqA" name="WoundMeasurementObservationMoodCode" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_unvx0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_unzcMN6jEee0kIKIEebuqA" name="WoundMeasurementObservationId" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_unzcMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uoSkYN6jEee0kIKIEebuqA" name="WoundMeasurementObservationCodeP" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uoSkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_un3GkN6jEee0kIKIEebuqA" name="WoundMeasurementObservationCode" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_un3Gkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '39125-0' or value.code = '39127-6' or value.code = '39126-8'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uoupQN6jEee0kIKIEebuqA" name="WoundMeasurementObservationStatusCode" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uoupQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uoyToN6jEee0kIKIEebuqA" name="WoundMeasurementObservationStatusCodeP" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uoy6sN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uo1-AN6jEee0kIKIEebuqA" name="WoundMeasurementObservationEffectiveTime" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uo1-Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uo5BUN6jEee0kIKIEebuqA" name="WoundMeasurementObservationValue" constrainedElement="_94MpsJp7EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uo5oYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::PQ)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_94MpsZp7EeOK6dzbL4VoTA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_09uFMJp_EeOK6dzbL4VoTA" name="LongitudinalCareWoundObservation">
      <ownedComment xmi:id="_bkc6YJqAEeOK6dzbL4VoTA">
        <body>This template represents acquired or surgical wounds and is not intended to encompass all wound types. The template applies to wounds such as pressure ulcers, surgical incisions, and deep tissue injury wounds. Information in this template may include information about the wound measurements characteristics.</body>
      </ownedComment>
      <ownedRule xmi:id="_uo8EoN6jEee0kIKIEebuqA" name="ProblemObservationTemplateId" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uo8rsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.114' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uo_vAN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationClassCode" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uo_vAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_upHq0N6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationMoodCode" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_upHq0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_upXicN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCodeP" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_upXicd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_upPmoN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCode" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_upPmod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uqAboN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationValueP" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uqAbod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_upgFUN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationValue" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_upgFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uqj1QN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationTargetSiteCode" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uqj1Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_urAhMN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationTargetSiteCodeP" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_urAhMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.targetSiteCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_usIikN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationWoundMeasurementObservation" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_usIikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::WoundMeasurementObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uslOgN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationWoundCharacteristics" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uslOgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::WoundCharacteristic) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_us_eMN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationHighestPressureUlcerStage" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_us_eMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::HighestPressureUlcerStage) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v0J6kN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationAuthorParticipation" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0J6kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_18t0QN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationNumberOfPressureUlcersObservation2" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_18t0Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43UkMN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDCRCDValueTerminology" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43UkMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined()).qualifier->excluding(null)->select(isNullFlavorUndefined()).value->excluding(null)->select(isNullFlavorUndefined())->reject(code = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43VLQN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDCRCDCode" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43VLQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined()).qualifier->excluding(null)->select(isNullFlavorUndefined()).value->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43VyUN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDCRName" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43VyUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined()).qualifier->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined() and name.oclIsKindOf(datatypes::CV) and &#xD;
let value : datatypes::CV = name.oclAsType(datatypes::CV) in &#xD;
value.code = '272741003') )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43WZYN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDCRNameP" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43WZYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined()).qualifier->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43XAcN6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDCRValue" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43XAcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined()).qualifier->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((value.oclIsUndefined() or value.isNullFlavorUndefined()) implies (not value.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43XAct6jEee0kIKIEebuqA" name="LongitudinalCareWoundObservationCDQualifier" constrainedElement="_09uFMJp_EeOK6dzbL4VoTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43XAc96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((qualifier->isEmpty() or qualifier->exists(element | element.isNullFlavorUndefined())) implies (not qualifier->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_09uFMZp_EeOK6dzbL4VoTA" general="_prDAkPDCEeOKPKE9au0oug"/>
      <ownedOperation xmi:id="_usIikt6jEee0kIKIEebuqA" name="getWoundMeasurementObservations" bodyCondition="_usIild6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_usIild6jEee0kIKIEebuqA" name="body" constrainedElement="_usIikt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_usIilt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::WoundMeasurementObservation)).oclAsType(consol::WoundMeasurementObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_usIik96jEee0kIKIEebuqA" type="_94MpsJp7EeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_usIilN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_usl1kN6jEee0kIKIEebuqA" name="getWoundCharacteristicss" bodyCondition="_usl1k96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_usl1k96jEee0kIKIEebuqA" name="body" constrainedElement="_usl1kN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_usl1lN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::WoundCharacteristic)).oclAsType(consol::WoundCharacteristic)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_usl1kd6jEee0kIKIEebuqA" type="_D6Lm0JpnEeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_usl1kt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_us_eMt6jEee0kIKIEebuqA" name="getHighestPressureUlcerStage" bodyCondition="_utAFQt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_utAFQt6jEee0kIKIEebuqA" name="body" constrainedElement="_us_eMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_utAFQ96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HighestPressureUlcerStage))->asSequence()->any(true).oclAsType(consol::HighestPressureUlcerStage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_utAFQN6jEee0kIKIEebuqA" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_utAFQd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_18ubUN6jEee0kIKIEebuqA" name="getNumberOfPressureUlcersObservation2s" bodyCondition="_18ubU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_18ubU96jEee0kIKIEebuqA" name="body" constrainedElement="_18ubUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_18ubVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation2)).oclAsType(consol::NumberOfPressureUlcersObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_18ubUd6jEee0kIKIEebuqA" type="_YYgjwIC3EeS108flGLVEBA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_18ubUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_YPOXoJ14EeORR8_YW0n_jQ" name="GoalsSection">
      <ownedComment xmi:id="_k_kdoJ14EeORR8_YW0n_jQ">
        <body>This template represents patient Goals. A goal is a defined outcome or condition to be achieved in the process of patient care. Goals include patient-defined over-arching goals (e.g., alleviation of health concerns, desired/intended positive outcomes from interventions, longevity, function, symptom management, comfort) and health concern-specific or intervention-specific goals to achieve desired outcomes.</body>
      </ownedComment>
      <ownedRule xmi:id="_utAFRN6jEee0kIKIEebuqA" name="GoalsSectionTemplateId" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utAFRd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.60')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utDIkN6jEee0kIKIEebuqA" name="GoalsSectionNullFlavor" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utDIkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utGy8N6jEee0kIKIEebuqA" name="GoalsSectionCode" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utGy8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '61146-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utLEYN6jEee0kIKIEebuqA" name="GoalsSectionCodeP" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utLEYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utOuwN6jEee0kIKIEebuqA" name="GoalsSectionTitle" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utOuwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utRLAN6jEee0kIKIEebuqA" name="GoalsSectionText" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utRLAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uttP4N6jEee0kIKIEebuqA" name="GoalsSectionGoalObservation" constrainedElement="_YPOXoJ14EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uttP4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::GoalObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_YPQM0J14EeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uttP4t6jEee0kIKIEebuqA" name="getGoalObservations" bodyCondition="_uttP5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uttP5d6jEee0kIKIEebuqA" name="body" constrainedElement="_uttP4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uttP5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::GoalObservation)).oclAsType(consol::GoalObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uttP496jEee0kIKIEebuqA" type="_-miMII9TEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uttP5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2umuYJ18EeORR8_YW0n_jQ" name="HealthConcernsSection">
      <ownedComment xmi:id="_iK49QJ19EeORR8_YW0n_jQ">
        <body>&lt;p>&#xD;
This section contains data describing an interest or worry about a health state or process that could possibly require attention, intervention, or management. A Health Concern is a health related matter that is of interest, importance or worry to someone, who may be the patient, patient's family or patient's health care provider. Health concerns are derived from a variety of sources within an EHR (such as Problem List, Family History, Social History, Social Worker Note, etc.). Health concerns can be medical, surgical, nursing, allied health or patient-reported concerns.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Problem Concerns are a subset of Health Concerns that have risen to the level of importance that they typically would belong on a classic &quot;Problem List&quot;, such as &quot;Diabetes Mellitus&quot; or &quot;Family History of Melanoma&quot; or &quot;Tobacco abuse&quot;. These are of broad interest to multiple members of the care team. Examples of other Health Concerns that might not typically be considered a Problem Concern include &quot;Risk of Hyperkalemia&quot; for a patient taking an ACE-inhibitor medication, or &quot;Transportation difficulties&quot; for someone who doesn't drive and has trouble getting to appointments, or &quot;Under-insured&quot; for someone who doesn't have sufficient insurance to properly cover their medical needs such as medications. These are typically most important to just a limited number of care team members.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_utt28N6jEee0kIKIEebuqA" name="HealthConcernsSectionTemplateId" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utt28d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.58' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_utw6QN6jEee0kIKIEebuqA" name="HealthConcernsSectionNullFlavor" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_utw6Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ut0koN6jEee0kIKIEebuqA" name="HealthConcernsSectionCode" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ut0kod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '75310-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ut4PAN6jEee0kIKIEebuqA" name="HealthConcernsSectionCodeP" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ut4PAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ut75YN6jEee0kIKIEebuqA" name="HealthConcernsSectionTitle" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ut75Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ut-8sN6jEee0kIKIEebuqA" name="HealthConcernsSectionText" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ut-8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uuaagN6jEee0kIKIEebuqA" name="HealthConcernsSectionHealthConcernAct" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uuaagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HealthConcernAct))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1iOQoN6jEee0kIKIEebuqA" name="HealthConcernsSectionHealthStatusObservation2" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1iOQod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::HealthStatusObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_298AsN6jEee0kIKIEebuqA" name="HealthConcernsSectionRiskConcernAct" constrainedElement="_2umuYJ18EeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_298Asd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::RiskConcernAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2unVcJ18EeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uuaagt6jEee0kIKIEebuqA" name="getHealthConcernActs" bodyCondition="_uuaahd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uuaahd6jEee0kIKIEebuqA" name="body" constrainedElement="_uuaagt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uuaaht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HealthConcernAct)).oclAsType(consol::HealthConcernAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uuaag96jEee0kIKIEebuqA" type="_An8P8I9kEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uuaahN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1iOQot6jEee0kIKIEebuqA" name="getHealthStatusObservation2s" bodyCondition="_1iOQpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1iOQpd6jEee0kIKIEebuqA" name="body" constrainedElement="_1iOQot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1iOQpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation2)).oclAsType(consol::HealthStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1iOQo96jEee0kIKIEebuqA" type="_DMvdYOEFEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1iOQpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_298nwN6jEee0kIKIEebuqA" name="getRiskConcernActs" bodyCondition="_298nw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_298nw96jEee0kIKIEebuqA" name="body" constrainedElement="_298nwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_298nxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::RiskConcernAct)).oclAsType(consol::RiskConcernAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_298nwd6jEee0kIKIEebuqA" type="_mMk3QON1EeS_XOr-dz_KWA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_298nwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_EHgh0J2AEeORR8_YW0n_jQ" name="HealthStatusEvaluationsAndOutcomesSection">
      <ownedComment xmi:id="_1oCLEJ2AEeORR8_YW0n_jQ">
        <body>This template represents observations regarding the outcome of care from the interventions used to treat the patient. These observations represent status, at points in time, related to established care plan goals and/or interventions.</body>
      </ownedComment>
      <ownedRule xmi:id="_uubBkN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionTemplateId" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uubBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.61')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uueE4N6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionNullFlavor" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uueE4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uuhvQN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionCode" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uuhvQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11383-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uumAsN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionCodeP" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uumAsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uuprEN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionTitle" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uuprEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uusuYN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionText" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uusuYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uvG-EN6jEee0kIKIEebuqA" name="HealthStatusEvaluationsAndOutcomesSectionOutcomeObservation" constrainedElement="_EHgh0J2AEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvHlIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::OutcomeObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_EHgh0Z2AEeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uvHlId6jEee0kIKIEebuqA" name="getOutcomeObservations" bodyCondition="_uvHlJN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uvHlJN6jEee0kIKIEebuqA" name="body" constrainedElement="_uvHlId6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvHlJd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::OutcomeObservation)).oclAsType(consol::OutcomeObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uvHlIt6jEee0kIKIEebuqA" type="_ihaWkI55EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uvHlI96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4tfOMJ2CEeORR8_YW0n_jQ" name="MentalStatusSection">
      <ownedComment xmi:id="_HxweoJ2DEeORR8_YW0n_jQ">
        <body>&lt;p>&#xD;
The Mental Status Section contains observations and evaluations related to a patient's psychological and mental competency and deficits including, but not limited to any of the following types of information:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>Appearance (e.g., unusual grooming, clothing or body modifications)&lt;/li>&#xD;
&lt;li>Attitude (e.g., cooperative, guarded, hostile)&lt;/li>&#xD;
&lt;li>Behavior/psychomotor (e.g., abnormal movements, eye contact, tics)&lt;/li>&#xD;
&lt;li>Mood and affect (e.g., anxious, angry, euphoric)&lt;/li>&#xD;
&lt;li>Speech and Language (e.g., pressured speech, perseveration)&lt;/li>&#xD;
&lt;li>Thought process (e.g., logic, coherence)&lt;/li>&#xD;
&lt;li>Thought content (e.g., delusions, phobias)&lt;/li>&#xD;
&lt;li>Perception (e.g., voices, hallucinations)&lt;/li>&#xD;
&lt;li>Cognition (e.g., memory, alertness/consciousness, attention, orientation) – which were included in Cognitive Status Observation in earlier publications of C-CDA.&lt;/li>&#xD;
&lt;li>Insight and judgment (e.g., understanding of condition, decision making)&lt;/li>&#xD;
&lt;/ul></body>
      </ownedComment>
      <ownedRule xmi:id="_uvIMMN6jEee0kIKIEebuqA" name="MentalStatusSectionTemplateId" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvIMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.56' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uvLPgN6jEee0kIKIEebuqA" name="MentalStatusSectionCode" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvLPgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10190-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uvPg8N6jEee0kIKIEebuqA" name="MentalStatusSectionCodeP" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvPg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uvTLUN6jEee0kIKIEebuqA" name="MentalStatusSectionTitle" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvTLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uvWOoN6jEee0kIKIEebuqA" name="MentalStatusSectionText" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uvWOod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uv194N6jEee0kIKIEebuqA" name="MentalStatusSectionAssessmentScaleObservation" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uv194d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AssessmentScaleObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2-ezQN6jEee0kIKIEebuqA" name="MentalStatusSectionMentalStatusOrganizer2" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2-ezQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::MentalStatusOrganizer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2-9UYN6jEee0kIKIEebuqA" name="MentalStatusSectionMentalStatusObservation2" constrainedElement="_4tfOMJ2CEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2-9UYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::MentalStatusObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4tf1QJ2CEeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uv2k8N6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_uv2k896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uv2k896jEee0kIKIEebuqA" name="body" constrainedElement="_uv2k8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uv2k9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uv2k8d6jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uv2k8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2-ezQt6jEee0kIKIEebuqA" name="getMentalStatusOrganizer2s" bodyCondition="_2-ezRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2-ezRd6jEee0kIKIEebuqA" name="body" constrainedElement="_2-ezQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2-ezRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::MentalStatusOrganizer2)).oclAsType(consol::MentalStatusOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2-ezQ96jEee0kIKIEebuqA" type="_6LYrULkoEeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2-ezRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2-9UYt6jEee0kIKIEebuqA" name="getMentalStatusObservation2s" bodyCondition="_2-9UZd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2-9UZd6jEee0kIKIEebuqA" name="body" constrainedElement="_2-9UYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2-9UZt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2-9UY96jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2-9UZN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_MlM4IJ2GEeORR8_YW0n_jQ" name="NutritionSection">
      <ownedComment xmi:id="_bshckJ2GEeORR8_YW0n_jQ">
        <body>The Nutrition Section represents diet and nutrition information including special diet requirements and restrictions (e.g., texture modified diet, liquids only, enteral feeding). It also represents the overall nutritional status of the patient and nutrition assessment findings.</body>
      </ownedComment>
      <ownedRule xmi:id="_uv2k9d6jEee0kIKIEebuqA" name="NutritionSectionTemplateId" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uv3MAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.57')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uv6PUN6jEee0kIKIEebuqA" name="NutritionSectionCode" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uv6PUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '61144-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uv95sN6jEee0kIKIEebuqA" name="NutritionSectionCodeP" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uv95sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwBkEN6jEee0kIKIEebuqA" name="NutritionSectionTitle" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwBkEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwEnYN6jEee0kIKIEebuqA" name="NutritionSectionText" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwEnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwgFMN6jEee0kIKIEebuqA" name="NutritionSectionNutritionalStatusObservation" constrainedElement="_MlM4IJ2GEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwgFMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::NutritionalStatusObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_MlM4IZ2GEeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uwgsQN6jEee0kIKIEebuqA" name="getNutritionalStatusObservations" bodyCondition="_uwgsQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uwgsQ96jEee0kIKIEebuqA" name="body" constrainedElement="_uwgsQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwgsRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionalStatusObservation)).oclAsType(consol::NutritionalStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uwgsQd6jEee0kIKIEebuqA" type="_T1dcwI37EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uwgsQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_CDn9gJ2LEeORR8_YW0n_jQ" name="PhysicalFindingsOfSkinSection">
      <ownedComment xmi:id="_VjDKoJ2LEeORR8_YW0n_jQ">
        <body>The Skin Physical Exam section includes direct observations made by the clinician. This section includes only observations made by the examining clinician using inspection and palpation; it does not include laboratory or imaging findings. The examination may be reported as a collection of random clinical statements or it may be reported categorically.</body>
      </ownedComment>
      <ownedComment xmi:id="_k98SkPm-EeSGHoih4Jm09A">
        <body>REMOVED</body>
      </ownedComment>
      <ownedRule xmi:id="_uwgsRd6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionTemplateId" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwhTUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.62')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwkWoN6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionCode" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwkWod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10206-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwoBAN6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionCodeP" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwoBAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwrrYN6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionTitle" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwrrYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uwuusN6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionText" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uwuusd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uxJlcN6jEee0kIKIEebuqA" name="PhysicalFindingsOfSkinSectionWoundObservation" constrainedElement="_CDn9gJ2LEeORR8_YW0n_jQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uxJlcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::LongitudinalCareWoundObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_CDn9gZ2LEeORR8_YW0n_jQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_uxJlct6jEee0kIKIEebuqA" name="getWoundObservations" bodyCondition="_uxKMgt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_uxKMgt6jEee0kIKIEebuqA" name="body" constrainedElement="_uxJlct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_uxKMg96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::LongitudinalCareWoundObservation)).oclAsType(consol::LongitudinalCareWoundObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_uxKMgN6jEee0kIKIEebuqA" type="_09uFMJp_EeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uxKMgd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_dduXkJ5OEeOr4eM3k36wAg" name="USRealmHeader2">
      <ownedComment xmi:id="_B-WxAJ5REeOr4eM3k36wAg">
        <body>This template defines constraints that represent common administrative and demographic concepts for US Realm CDA documents. Further specification, such as ClinicalDocument/code, are provided in document templates that conform to this template.</body>
      </ownedComment>
      <ownedRule xmi:id="_uxKzkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uxKzkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uxN24N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRealmCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uxN24d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.realmCode->isEmpty() or self.realmCode->exists(element | element.isNullFlavorUndefined())) implies (self.realmCode->size() = 1 and self.realmCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = element.oclAsType(datatypes::CS) in &#xD;
value.code = 'US'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uxUkkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTitle" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uxUkkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zCzn4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTarget" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zCzn4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->exists(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zE7HwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEnterer" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zE7Hwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zFWlkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthor" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zFWlkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zF4xEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsCustodian" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zF5YIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zGU18N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipient" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zGU18d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zGxh4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsLegalAuthenticator" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zGxh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(cda::LegalAuthenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zHM_sN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthenticator" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zHNmwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->exists(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zHodgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformant" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zHodgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->exists(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(cda::Informant12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zID7UN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInFulfillmentOf" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zID7Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zIhOUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOf" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zIhOUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zJYJ8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsSupportParticipant" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zJYJ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zJ0O0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOf" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zJ0O0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zLEMAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorization" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zLEMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->exists(authorization : cda::Authorization | not authorization.oclIsUndefined() and authorization.oclIsKindOf(cda::Authorization))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45FewN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45Fewd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45GF0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45GF0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45Gs4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45Gs4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45HT8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45HT8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45H7AN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45H7Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45hjoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45hjod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((languageCode.oclIsUndefined() or languageCode.isNullFlavorUndefined()) implies (not languageCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45iKsN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45iKsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((languageCode.oclIsUndefined() or languageCode.isNullFlavorUndefined()) implies (not languageCode.oclIsUndefined() and languageCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = languageCode.oclAsType(datatypes::CS) in &#xD;
not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45ixwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45ixwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((preferenceInd.oclIsUndefined() or preferenceInd.isNullFlavorUndefined()) implies (not preferenceInd.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45nDMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45nqQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() >= 4)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45nqQd6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45nqQt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() >= 8)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45oRUN6jEee0kIKIEebuqA" name="USRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45oRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject(not value.oclIsUndefined() and value.size() >= 10)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45o4YN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45o4Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (true )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46qMEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46qMEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthplace->excluding(null).place->excluding(null)->reject((addr.country->exists(curCountry | not curCountry.oclIsUndefined() and curCountry.getText() = 'US')) implies (addr.state->size() = 1) and ((addr.state->exists(curState | (curState.getText() = 'AL' or curState.getText() = 'AK' or curState.getText() = 'AS' or curState.getText() = 'AZ' or curState.getText() = 'AR' or curState.getText() = 'CA' or curState.getText() = 'CO' or curState.getText() = 'CT' or curState.getText() = 'DE' or curState.getText() = 'DC' or curState.getText() = 'FL' or curState.getText() = 'FM' or curState.getText() = 'GA' or curState.getText() = 'GU' or curState.getText() = 'HI' or curState.getText() = 'ID' or curState.getText() = 'IL' or curState.getText() = 'IN' or curState.getText() = 'IA' or curState.getText() = 'KS' or curState.getText() = 'KY' or curState.getText() = 'LA' or curState.getText() = 'ME' or curState.getText() = 'MH' or curState.getText() = 'MD' or curState.getText() = 'MA' or curState.getText() = 'MI' or curState.getText() = 'MN' or curState.getText() = 'MS' or curState.getText() = 'MO' or curState.getText() = 'MT' or curState.getText() = 'NE' or curState.getText() = 'NV' or curState.getText() = 'NH' or curState.getText() = 'NJ' or curState.getText() = 'NM' or curState.getText() = 'NY' or curState.getText() = 'NC' or curState.getText() = 'ND' or curState.getText() = 'MP' or curState.getText() = 'OH' or curState.getText() = 'OK' or curState.getText() = 'OR' or curState.getText() = 'PW' or curState.getText() = 'PA' or curState.getText() = 'PR' or curState.getText() = 'RI' or curState.getText() = 'SC' or curState.getText() = 'SD' or curState.getText() = 'TN' or curState.getText() = 'TX' or curState.getText() = 'UM' or curState.getText() = 'UT' or curState.getText() = 'VT' or curState.getText() = 'VA' or curState.getText() = 'VI' or curState.getText() = 'WA' or curState.getText() = 'WV' or curState.getText() = 'WI' or curState.getText() = 'WY' ))) or (addr.state->exists(curState | curState.isNullFlavorDefined()))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46qzIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46qzId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).birthplace->excluding(null)->reject(place->one(place : cda::Place | not place.oclIsUndefined() and place.oclIsKindOf(cda::Place)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46raMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46raMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((raceCode.oclIsUndefined() or raceCode.isNullFlavorUndefined()) implies (not raceCode.oclIsUndefined() and raceCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = raceCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and (value.code = '1002-5' or value.code = '2028-9' or value.code = '2054-5' or value.code = '2076-8' or value.code = '2106-3')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46sBQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46sBQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((raceCode.oclIsUndefined() or raceCode.isNullFlavorUndefined()) implies (not raceCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46soUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46soUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((ethnicGroupCode.oclIsUndefined() or ethnicGroupCode.isNullFlavorUndefined()) implies (not ethnicGroupCode.oclIsUndefined() and ethnicGroupCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = ethnicGroupCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and (value.code = '2135-2' or value.code = '2186-5')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46tPYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46tPYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((ethnicGroupCode.oclIsUndefined() or ethnicGroupCode.isNullFlavorUndefined()) implies (not ethnicGroupCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46t2cN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46t2cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((birthTime.oclIsUndefined() or birthTime.isNullFlavorUndefined()) implies (not birthTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46udgN6jEee0kIKIEebuqA" name="USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46udgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((sDTCEthnicGroupCode->isEmpty() or sDTCEthnicGroupCode->exists(element | element.isNullFlavorUndefined())) implies (not sDTCEthnicGroupCode->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46udgt6jEee0kIKIEebuqA" name="USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46udg96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject((sDTCEthnicGroupCode->isEmpty() or sDTCEthnicGroupCode->exists(element | element.isNullFlavorUndefined())) implies (sDTCEthnicGroupCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46vEkN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46vEkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(guardian->exists(guardian : cda::Guardian | not guardian.oclIsUndefined() and guardian.oclIsKindOf(cda::Guardian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46vroN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wSsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(languageCommunication->exists(languageCommunication : cda::LanguageCommunication | not languageCommunication.oclIsUndefined() and languageCommunication.oclIsKindOf(cda::LanguageCommunication)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46wSsd6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wSst6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(birthplace->one(birthplace : cda::Birthplace | not birthplace.oclIsUndefined() and birthplace.oclIsKindOf(cda::Birthplace)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46w5wN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRolePatient" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46w5wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject(patient->one(patient : cda::Patient | not patient.oclIsUndefined() and patient.oclIsKindOf(cda::Patient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46xg0N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsRecordTargetPatientRole" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46xg0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null)->reject(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47kLAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47kyEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47kyEd6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntityCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47kyEt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47lZIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDataEntererAssignedEntity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47lZId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48bGoN6jEee0kIKIEebuqA" name="USRealmHeader2AuthorAssignedAuthorIfAssignedPersonThenContainsCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48bGod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(not assignedPerson.oclIsUndefined() and (code.oclIsUndefined() or code.isNullFlavorUndefined()) implies not code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48btsN6jEee0kIKIEebuqA" name="USRealmHeader2AuthorAssignedAuthorCodeTerminology" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48btsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(not assignedPerson.oclIsUndefined() and (code.oclIsUndefined() or code.isNullFlavorUndefined()) implies not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48c70N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48c70d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (true))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48di4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthorCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48di4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (true))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48eJ8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsAuthorAssignedAuthor" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48eJ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49rq4N6jEee0kIKIEebuqA" name="USRealmHeader2InformationRecipientIntendedRecipientId" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49rq4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49sR8N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipient" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49sR8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-KMAN6jEee0kIKIEebuqA" name="USRealmHeader2LegalAuthenticatorSDTCSignatureText" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-KMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((sDTCSignatureText.oclIsUndefined() or sDTCSignatureText.isNullFlavorUndefined()) implies (not sDTCSignatureText.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-lCwN6jEee0kIKIEebuqA" name="USRealmHeader2AuthenticatorSDTCSignatureText" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-lCwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((sDTCSignatureText.oclIsUndefined() or sDTCSignatureText.isNullFlavorUndefined()) implies (not sDTCSignatureText.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_trMN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_trMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_uSQN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_uSQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_vgYN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_vgYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_wHcN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_wugN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_x8oN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_x8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_yjsN6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_zKwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_zx0N6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_zx0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_0Y4N6jEee0kIKIEebuqA" name="USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_0_8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_1nAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_1nAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_2OEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_2OEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_21IN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantAssignedEntityAddr" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_21Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AVWQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityAddr" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AVWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject(addr->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AWkYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantRelatedEntityPerson" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AWkYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AXLcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AXLcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(assignedEntity.oclIsUndefined() xor relatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AYZkN6jEee0kIKIEebuqA" name="USRealmHeader2GeneralHeaderConstraintsInformantAssignedEntity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AYZkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AZAoN6jEee0kIKIEebuqA" name="USRealmHeader2GeneralHeaderConstraintsInformantRelatedEntity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AZAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Bz88N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsComponentOfEncompassingEncounter" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Bz88d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5CSeEN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CSeEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject((not associatedEntity.associatedPerson.oclIsUndefined()) or (not associatedEntity.scopingOrganization.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EI4MN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EI4Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EJfQN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EJfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EKGUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EKGUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EKtYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EKtYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.88' and (value.code = 'ADMPHYS' or value.code = 'ANEST' or value.code = 'ANRS' or value.code = 'ATTPHYS' or value.code = 'DISPHYS' or value.code = 'FASST' or value.code = 'MDWF' or value.code = 'NASST' or value.code = 'PCP' or value.code = 'PRISURG' or value.code = 'RNDPHYS' or value.code = 'SASST' or value.code = 'SNRS' or value.code = 'TASST')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ELUcN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EL7gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EMikN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EMikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ENJoN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsDocumentationOfServiceEvent" constrainedElement="_dduXkJ5OEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ENJod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ddxa4J5OEeOr4eM3k36wAg" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2jWfwJ5wEeOr4eM3k36wAg" name="CarePlan">
      <ownedComment xmi:id="_hOzuoJ5xEeOr4eM3k36wAg">
        <body>&lt;p>&#xD;
CARE PLAN FRAMEWORK&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Care Plan (including Home Health Plan of Care (HHPoC)) is a consensus-driven dynamic plan that represents a patient's and Care Team Members' prioritized concerns, goals, and planned interventions. It serves as a blueprint shared by all Care Team Members (including the patient, their caregivers and providers), to guide the patient's care. A Care Plan integrates multiple interventions proposed by multiple providers and disciplines for multiple conditions.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Care Plan represents one or more Plan(s) of Care and serves to reconcile and resolve conflicts between the various Plans of Care developed for a specific patient by different providers. While both a plan of care and a care plan include the patient's life goals and require Care Team Members (including patients) to prioritize goals and interventions, the reconciliation process becomes more complex as the number of plans of care increases. The Care Plan also serves to enable longitudinal coordination of care.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The CDA Care Plan represents an instance of this dynamic Care Plan at a point in time. The CDA document itself is NOT dynamic.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Key differentiators between a Care Plan CDA and CCD (another &quot;snapshot in time&quot; document):&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>Requires relationships between various acts:&lt;/li>&#xD;
&lt;ul>&#xD;
&lt;li>Health Concerns&lt;/li>&#xD;
&lt;li>Problems&lt;/li>&#xD;
&lt;li>Interventions&lt;/li>&#xD;
&lt;li>Goals&lt;/li>&#xD;
&lt;li>Outcomes&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;li>Provides the ability to identify patient and provider priorities with each act&lt;/li>&#xD;
&lt;li>Provides a header participant to indicate occurrences of Care Plan review&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
Please see Volume 1 of this guide to view a Care Plan Relationship diagram and story board.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_qk9kcJ8bEeOr4eM3k36wAg" name="CarePlanDoesNotHavePlanOfTreatmentSectionV2" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zdJGEJ8bEeOr4eM3k36wAg">
          <language>OCL</language>
          <body>not self.getAllSections()->exists(s : cda::Section | s.oclIsTypeOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u6gVwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_u6g80N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.15' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u6sjAN6jEee0kIKIEebuqA" name="CarePlanCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_u6sjAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u6lOQN6jEee0kIKIEebuqA" name="CarePlanCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_u6lOQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '52521-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u60e0N6jEee0kIKIEebuqA" name="CarePlanSetId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_u60e0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.setId.oclIsUndefined() or self.setId.isNullFlavorUndefined()) implies (not self.setId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_u67zkN6jEee0kIKIEebuqA" name="CarePlanVersionNumber" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_u67zkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.versionNumber.oclIsUndefined() or self.versionNumber.isNullFlavorUndefined()) implies (not self.versionNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vA4qkN6jEee0kIKIEebuqA" name="CarePlanInformationRecipient" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vA4qkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vBXLsN6jEee0kIKIEebuqA" name="CarePlanAuthenticator" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vBXLsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->one(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vCJ14N6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReview" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vCJ14d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode=vocab::ParticipationType::VRF)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vC8gEN6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiver" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vC8gEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode=vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vENrYN6jEee0kIKIEebuqA" name="CarePlanDocumentationOf" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vENrYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vF3RMN6jEee0kIKIEebuqA" name="CarePlanRelatedDocument" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vF3RMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->exists(relatedDocument : cda::RelatedDocument | not relatedDocument.oclIsUndefined() and relatedDocument.oclIsKindOf(cda::RelatedDocument))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vGzFUN6jEee0kIKIEebuqA" name="CarePlanComponentOf" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vGzsYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vHlIcN6jEee0kIKIEebuqA" name="CarePlanHealthConcernsSection" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vHlIcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HealthConcernsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vH_YIN6jEee0kIKIEebuqA" name="CarePlanGoalsSection" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vH_YId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GoalsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vIYZsN6jEee0kIKIEebuqA" name="CarePlanHealthStatusEvaluationsOutcomesSection" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vIYZsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HealthStatusEvaluationsAndOutcomesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1iogUN6jEee0kIKIEebuqA" name="CarePlanInterventionsSection2" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1iogUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GY68N6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientInformationRecipientName" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GY68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).informationRecipient->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G21AN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientReceivedOrganizationId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G21Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).receivedOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G3cEN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientReceivedOrganizationName" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G3cEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).receivedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G4DIN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G4DId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).receivedOrganization->excluding(null)->reject((standardIndustryClassCode.oclIsUndefined() or standardIndustryClassCode.isNullFlavorUndefined()) implies (not standardIndustryClassCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G4qMN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G4qMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).receivedOrganization->excluding(null)->reject((standardIndustryClassCode.oclIsUndefined() or standardIndustryClassCode.isNullFlavorUndefined()) implies (not standardIndustryClassCode.oclIsUndefined() and standardIndustryClassCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = standardIndustryClassCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G5RQN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G5RQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G54UN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientAddr" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G54Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G6fYN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientTelecom" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G6fYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G6fYt6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientInformationRecipient" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G6fY96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject(informationRecipient->one(informationRecipient : cda::Person | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G7GcN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipientReceivedOrganization" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G7Gcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject(receivedOrganization->one(receivedOrganization : cda::Organization | not receivedOrganization.oclIsUndefined() and receivedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G7tgN6jEee0kIKIEebuqA" name="CarePlanInformationRecipientIntendedRecipient" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G7tgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H4vwN6jEee0kIKIEebuqA" name="CarePlanAuthenticatorAssignedEntityId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H4vwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H5W0N6jEee0kIKIEebuqA" name="CarePlanAuthenticatorAssignedEntityCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H5W0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.code = 'ONESELF' and value.codeSystem = '2.16.840.1.113883.5.111'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H594N6jEee0kIKIEebuqA" name="CarePlanAuthenticatorAssignedEntityCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H594d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H6k8N6jEee0kIKIEebuqA" name="CarePlanAuthenticatorTime" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H6k8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H7MAN6jEee0kIKIEebuqA" name="CarePlanAuthenticatorSignatureCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H7MAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H8aIN6jEee0kIKIEebuqA" name="CarePlanAuthenticatorSDTCSignatureText" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H8aId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((sDTCSignatureText.oclIsUndefined() or sDTCSignatureText.isNullFlavorUndefined()) implies (not sDTCSignatureText.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H9BMN6jEee0kIKIEebuqA" name="CarePlanAuthenticatorAssignedEntity" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H9BMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I3nMN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewAssociatedEntityClassCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I3nMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).associatedEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I41UN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewAssociatedEntityId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I41Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).associatedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I5cYN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewAssociatedEntityCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I5cYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).associatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I6DcN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewAssociatedEntityCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I6Dcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).associatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I6qgN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewTypeCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I6qgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(typeCode=vocab::ParticipationType::VRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I7RkN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewFunctionCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I7Rkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.code = '425268008' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I74oN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewFunctionCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I74od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I8fsN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewTime" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I8fsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I9GwN6jEee0kIKIEebuqA" name="CarePlanParticipantCarePlanReviewAssociatedEntity" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I9Gwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KVm0N6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverAssociatedEntityAssociatedPersonName" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KVm0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KWN4N6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverAssociatedEntityClassCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KWN4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KW08N6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverAssociatedEntityClassCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KW08d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(not classCode.oclIsUndefined() and classCode.oclIsKindOf(vocab::RoleClassAssociative) and &#xD;
let value : vocab::RoleClassAssociative = classCode.oclAsType(vocab::RoleClassAssociative) in &#xD;
value = vocab::RoleClassAssociative::PRS or value = vocab::RoleClassAssociative::NOK or value = vocab::RoleClassAssociative::CAREGIVER or value = vocab::RoleClassAssociative::AGNT or value = vocab::RoleClassAssociative::GUAR or value = vocab::RoleClassAssociative::ECON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KXcAN6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverAssociatedEntityAssociatedPerson" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KXcAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KYDEN6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverTypeCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KYDEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND)->select(typeCode=vocab::ParticipationType::IND)->reject(typeCode=vocab::ParticipationType::IND)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KYqIN6jEee0kIKIEebuqA" name="CarePlanParticipantCaregiverAssociatedEntity" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KYqId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND)->select(typeCode=vocab::ParticipationType::IND)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LW6gN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventIVLTSLow" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LW6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LYIoN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventIVLTSHigh" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LYIod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxPwN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPersonName" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxPwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Mx20N6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformerAssignedEntityId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Mx20d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MzE8N6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MzE8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MzsAN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPerson" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MzsAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M0TEN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M0TEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M06IN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventClassCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M06Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M1hMN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventEffectiveTime" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M1hMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M2IQN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEventPerformer1" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M2IQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M2vUN6jEee0kIKIEebuqA" name="CarePlanDocumentationOfServiceEvent" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M2vUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NwHMN6jEee0kIKIEebuqA" name="CarePlanRelatedDocumentParentDocumentSetId" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NwHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null).parentDocument->excluding(null)->reject((setId.oclIsUndefined() or setId.isNullFlavorUndefined()) implies (not setId.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NwuQN6jEee0kIKIEebuqA" name="CarePlanRelatedDocumentParentDocumentVersionNumber" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NwuQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null).parentDocument->excluding(null)->reject((versionNumber.oclIsUndefined() or versionNumber.isNullFlavorUndefined()) implies (not versionNumber.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NxVUN6jEee0kIKIEebuqA" name="CarePlanRelatedDocumentTypeCodeP" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NxVUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null)->reject(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Nx8YN6jEee0kIKIEebuqA" name="CarePlanRelatedDocumentTypeCode" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Nx8Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::x_ActRelationshipDocument) and &#xD;
let value : vocab::x_ActRelationshipDocument = typeCode.oclAsType(vocab::x_ActRelationshipDocument) in &#xD;
value = vocab::x_ActRelationshipDocument::APND or value = vocab::x_ActRelationshipDocument::RPLC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NyjcN6jEee0kIKIEebuqA" name="CarePlanRelatedDocumentParentDocument" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Nyjcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null)->reject(parentDocument->one(parentDocument : cda::ParentDocument | not parentDocument.oclIsUndefined() and parentDocument.oclIsKindOf(cda::ParentDocument)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OtwgN6jEee0kIKIEebuqA" name="CarePlanComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Otwgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OuXkN6jEee0kIKIEebuqA" name="CarePlanComponentOfEncompassingEncounter" constrainedElement="_2jWfwJ5wEeOr4eM3k36wAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OuXkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2jWfwZ5wEeOr4eM3k36wAg" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_vHlvgN6jEee0kIKIEebuqA" name="getHealthConcernsSection" bodyCondition="_vHlvg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vHlvg96jEee0kIKIEebuqA" name="body" constrainedElement="_vHlvgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vHlvhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HealthConcernsSection))->asSequence()->any(true).oclAsType(consol::HealthConcernsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vHlvgd6jEee0kIKIEebuqA" type="_2umuYJ18EeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vHlvgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vH__MN6jEee0kIKIEebuqA" name="getGoalsSection" bodyCondition="_vH__M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vH__M96jEee0kIKIEebuqA" name="body" constrainedElement="_vH__MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vH__NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GoalsSection))->asSequence()->any(true).oclAsType(consol::GoalsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vH__Md6jEee0kIKIEebuqA" type="_YPOXoJ14EeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vH__Mt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_vIZAwN6jEee0kIKIEebuqA" name="getHealthStatusEvaluationsOutcomesSection" bodyCondition="_vIZAw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_vIZAw96jEee0kIKIEebuqA" name="body" constrainedElement="_vIZAwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_vIZAxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HealthStatusEvaluationsAndOutcomesSection))->asSequence()->any(true).oclAsType(consol::HealthStatusEvaluationsAndOutcomesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_vIZAwd6jEee0kIKIEebuqA" type="_EHgh0J2AEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vIZAwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1iogUt6jEee0kIKIEebuqA" name="getInterventionsSection2" bodyCondition="_1iogVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1iogVd6jEee0kIKIEebuqA" name="body" constrainedElement="_1iogUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1iogVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection2))->asSequence()->any(true).oclAsType(consol::InterventionsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1iogU96jEee0kIKIEebuqA" type="_YCS1AP1WEeOW-qBXb0kbTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1iogVN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_itRPkKAEEeOQs7VC4HptuQ" name="ReferralNote">
      <ownedComment xmi:id="_3p_hIKAEEeOQs7VC4HptuQ">
        <body>&lt;p>&#xD;
A Referral Note communicates pertinent information from a provider who is requesting services of another provider of clinical or non-clinical services. The information in this document includes the reason for the referral and additional information that would augment decision making and care delivery.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Examples of referral situations are when a patient is referred from a family physician to a cardiologist for cardiac evaluation or when patient is sent by a cardiologist to an emergency department for angina or when a patient is referred by a nurse practitioner to an audiologist for hearing screening or when a patient is referred by a hospitalist to social services.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_Y-s94KAXEeOQs7VC4HptuQ" name="ReferralNoteHasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3CkaIKAXEeOQs7VC4HptuQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_8wCTQKAXEeOQs7VC4HptuQ" name="ReferralNoteDoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Dun2AKAYEeOQs7VC4HptuQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vIaO4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vIaO4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.14' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vI-2oN6jEee0kIKIEebuqA" name="ReferralNoteCodeP" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vI_dsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vIfucN6jEee0kIKIEebuqA" name="ReferralNoteCode" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vIfucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vLZ4gN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipient" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vLZ4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->one(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vMOX4N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiver" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vMO-8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode=vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vNcf4N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContact" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vNcf4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode=vocab::ParticipationType::CALLBCK)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1jCI8N6jEee0kIKIEebuqA" name="ReferralNotePlanOfTreatmentSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1jCI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1jcYoN6jEee0kIKIEebuqA" name="ReferralNoteAdvanceDirectivesSectionEntriesOptional2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1jcYod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1j2BQN6jEee0kIKIEebuqA" name="ReferralNoteHistoryOfPresentIllnessSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1j2oUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1kQ4AN6jEee0kIKIEebuqA" name="ReferralNoteImmunizationsSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1kQ4Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1krHsN6jEee0kIKIEebuqA" name="ReferralNoteProblemSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1krHsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1lEwUN6jEee0kIKIEebuqA" name="ReferralNoteProceduresSectionEntriesOptional2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1lEwUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1lfAAN6jEee0kIKIEebuqA" name="ReferralNoteResultsSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1lfAAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1l4BkN6jEee0kIKIEebuqA" name="ReferralNoteReviewOfSystemsSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1l4Bkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1mVUkN6jEee0kIKIEebuqA" name="ReferralNoteSocialHistorySection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1mVUkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1mu9MN6jEee0kIKIEebuqA" name="ReferralNoteVitalSignsSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1mu9Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1nIl0N6jEee0kIKIEebuqA" name="ReferralNoteFunctionalStatusSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1nIl0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1nhnYN6jEee0kIKIEebuqA" name="ReferralNotePhysicalExamSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1nhnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1n7QAN6jEee0kIKIEebuqA" name="ReferralNoteAdvanceDirectivesSectionEntriesOptional2b" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1n7QAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1oU4oN6jEee0kIKIEebuqA" name="ReferralNoteNutritionSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1oU4od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ouhQN6jEee0kIKIEebuqA" name="ReferralNoteMentalStatusSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ouhQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1pIJ4N6jEee0kIKIEebuqA" name="ReferralNoteMedicalEquipmentSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1pIJ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1phLcN6jEee0kIKIEebuqA" name="ReferralNoteAllergiesSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1phLcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1p60EN6jEee0kIKIEebuqA" name="ReferralNoteAssessmentSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1p60Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1qUcsN6jEee0kIKIEebuqA" name="ReferralNoteAssessmentAndPlanSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1qUcsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1qv6gN6jEee0kIKIEebuqA" name="ReferralNoteHistoryOfPastIllnessSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1qv6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1rI8EN6jEee0kIKIEebuqA" name="ReferralNoteGeneralStatusSection" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1rI8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1rh9oN6jEee0kIKIEebuqA" name="ReferralNoteMedicationsSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1riksN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1r8NUN6jEee0kIKIEebuqA" name="ReferralNoteReasonForReferralSection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1r8NUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_27kCIN6jEee0kIKIEebuqA" name="ReferralNoteFamilyHistorySection2" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_27kCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNlUN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipientIntendedRecipientPersonName" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNlUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).informationRecipient->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QOMYN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipientIntendedRecipientAddr" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QOMYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QOzcN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipientIntendedRecipientTelecom" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QOzcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QPagN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipientIntendedRecipientInformationRecipient" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QPagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject(informationRecipient->one(informationRecipient : cda::Person | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QQBkN6jEee0kIKIEebuqA" name="ReferralNoteInformationRecipientIntendedRecipient" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QQBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RpIsN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPersonName" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RpIsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RpvwN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Rpvwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RqW0N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverAssociatedEntityClassCode" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RqW0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(not classCode.oclIsUndefined() and classCode.oclIsKindOf(vocab::RoleClassAssociative) and &#xD;
let value : vocab::RoleClassAssociative = classCode.oclAsType(vocab::RoleClassAssociative) in &#xD;
value = vocab::RoleClassAssociative::PRS or value = vocab::RoleClassAssociative::NOK or value = vocab::RoleClassAssociative::CAREGIVER or value = vocab::RoleClassAssociative::AGNT or value = vocab::RoleClassAssociative::GUAR or value = vocab::RoleClassAssociative::ECON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Rq94N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPerson" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Rq94d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Rrk8N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverTypeCode" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Rrk8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND)->select(typeCode=vocab::ParticipationType::IND)->reject(typeCode=vocab::ParticipationType::IND)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RsMAN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCaregiverAssociatedEntity" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RsMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::IND)->select(typeCode=vocab::ParticipationType::IND)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TCP0N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPersonName" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCP0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TDd8N6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityId" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TDd8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TEFAN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityAddr" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TEFAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TEsEN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityTelecom" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TEsEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TFTIN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityClassCode" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TFTId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(classCode=vocab::RoleClassAssociative::ASSIGNED)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TFTIt6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPerson" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TFTI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TGhQN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntityScopingOrganization" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TGhQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(scopingOrganization->one(scopingOrganization : cda::Organization | not scopingOrganization.oclIsUndefined() and scopingOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5THIUN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactTypeCode" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5THIUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK)->select(typeCode=vocab::ParticipationType::CALLBCK)->reject(typeCode=vocab::ParticipationType::CALLBCK)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5THvYN6jEee0kIKIEebuqA" name="ReferralNoteParticipantCallbackContactAssociatedEntity" constrainedElement="_itRPkKAEEeOQs7VC4HptuQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5THvYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CALLBCK)->select(typeCode=vocab::ParticipationType::CALLBCK)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_itUS4KAEEeOQs7VC4HptuQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_1jCwAN6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_1jCwA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1jCwA96jEee0kIKIEebuqA" name="body" constrainedElement="_1jCwAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1jCwBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1jCwAd6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1jCwAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1jc_sN6jEee0kIKIEebuqA" name="getAdvanceDirectivesSectionEntriesOptional2" bodyCondition="_1jc_s96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1jc_s96jEee0kIKIEebuqA" name="body" constrainedElement="_1jc_sN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1jc_tN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1jc_sd6jEee0kIKIEebuqA" type="_jsKhYAFXEeSLIY0bHb-fFQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1jc_st6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1j2oUd6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_1j2oVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1j2oVN6jEee0kIKIEebuqA" name="body" constrainedElement="_1j2oUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1j2oVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1j2oUt6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1j2oU96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1kQ4At6jEee0kIKIEebuqA" name="getImmunizationsSection2" bodyCondition="_1kRfEN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1kRfEN6jEee0kIKIEebuqA" name="body" constrainedElement="_1kQ4At6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1kRfEd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1kQ4A96jEee0kIKIEebuqA" type="_14bikALNEeSIPYXg7AgJzw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1kQ4BN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1krHst6jEee0kIKIEebuqA" name="getProblemSection2" bodyCondition="_1krHtd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1krHtd6jEee0kIKIEebuqA" name="body" constrainedElement="_1krHst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1krHtt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))->asSequence()->any(true).oclAsType(consol::ProblemSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1krHs96jEee0kIKIEebuqA" type="_IXrA4ALVEeSyydFGYJajGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1krHtN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1lFXYN6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional2" bodyCondition="_1lFXY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1lFXY96jEee0kIKIEebuqA" name="body" constrainedElement="_1lFXYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1lFXZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1lFXYd6jEee0kIKIEebuqA" type="_80dMoAB0EeSLOb2O6vSPzg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1lFXYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1lfAAt6jEee0kIKIEebuqA" name="getResultsSection2" bodyCondition="_1lfnEN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1lfnEN6jEee0kIKIEebuqA" name="body" constrainedElement="_1lfAAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1lfnEd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))->asSequence()->any(true).oclAsType(consol::ResultsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1lfAA96jEee0kIKIEebuqA" type="_bAAhEALtEeSueJWOLw5iaQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1lfABN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1l4ooN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_1l4oo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1l4oo96jEee0kIKIEebuqA" name="body" constrainedElement="_1l4ooN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1l4opN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1l4ood6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1l4oot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1mVUkt6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_1mV7ot6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1mV7ot6jEee0kIKIEebuqA" name="body" constrainedElement="_1mVUkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1mV7o96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1mV7oN6jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1mV7od6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1mvkQN6jEee0kIKIEebuqA" name="getVitalSignsSection2" bodyCondition="_1mvkQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1mvkQ96jEee0kIKIEebuqA" name="body" constrainedElement="_1mvkQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1mvkRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))->asSequence()->any(true).oclAsType(consol::VitalSignsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1mvkQd6jEee0kIKIEebuqA" type="_D3010ALzEeSM0Jd2D1FgKw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1mvkQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1nIl0t6jEee0kIKIEebuqA" name="getFunctionalStatusSection2" bodyCondition="_1nIl1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1nIl1d6jEee0kIKIEebuqA" name="body" constrainedElement="_1nIl0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1nIl1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1nIl096jEee0kIKIEebuqA" type="_8rMFkPyHEeOozpLKXSm5NA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1nIl1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1niOcN6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_1niOc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1niOc96jEee0kIKIEebuqA" name="body" constrainedElement="_1niOcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1niOdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1niOcd6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1niOct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1n7QAt6jEee0kIKIEebuqA" name="getAdvanceDirectivesSectionEntriesOptional2b" bodyCondition="_1n73Ed6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1n73Ed6jEee0kIKIEebuqA" name="body" constrainedElement="_1n7QAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1n73Et6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1n7QA96jEee0kIKIEebuqA" type="_jsKhYAFXEeSLIY0bHb-fFQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1n73EN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1oU4ot6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_1oVfsd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1oVfsd6jEee0kIKIEebuqA" name="body" constrainedElement="_1oU4ot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1oVfst6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1oU4o96jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1oVfsN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1ouhQt6jEee0kIKIEebuqA" name="getMentalStatusSection" bodyCondition="_1ovIUN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1ovIUN6jEee0kIKIEebuqA" name="body" constrainedElement="_1ouhQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ovIUd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))->asSequence()->any(true).oclAsType(consol::MentalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1ouhQ96jEee0kIKIEebuqA" type="_4tfOMJ2CEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ouhRN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1pIJ4t6jEee0kIKIEebuqA" name="getMedicalEquipmentSection2" bodyCondition="_1pIJ5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1pIJ5d6jEee0kIKIEebuqA" name="body" constrainedElement="_1pIJ4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1pIJ5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))->asSequence()->any(true).oclAsType(consol::MedicalEquipmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1pIJ496jEee0kIKIEebuqA" type="_5OKxwP1bEeO5Hq-yrsJSmg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1pIJ5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1phygN6jEee0kIKIEebuqA" name="getAllergiesSection2" bodyCondition="_1phyg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1phyg96jEee0kIKIEebuqA" name="body" constrainedElement="_1phygN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1phyhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))->asSequence()->any(true).oclAsType(consol::AllergiesSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1phygd6jEee0kIKIEebuqA" type="_EONPMAInEeSr1aKUYorURA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1phygt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1p7bIN6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_1p7bI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1p7bI96jEee0kIKIEebuqA" name="body" constrainedElement="_1p7bIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1p7bJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1p7bId6jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1p7bIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1qVDwN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_1qVDw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1qVDw96jEee0kIKIEebuqA" name="body" constrainedElement="_1qVDwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1qVDxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1qVDwd6jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1qVDwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1qv6gt6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_1qv6hd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1qv6hd6jEee0kIKIEebuqA" name="body" constrainedElement="_1qv6gt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1qv6ht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1qv6g96jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1qv6hN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1rJjIN6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_1rJjI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1rJjI96jEee0kIKIEebuqA" name="body" constrainedElement="_1rJjIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1rJjJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1rJjId6jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1rJjIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1riksd6jEee0kIKIEebuqA" name="getMedicationsSection2" bodyCondition="_1riktN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1riktN6jEee0kIKIEebuqA" name="body" constrainedElement="_1riksd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1riktd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))->asSequence()->any(true).oclAsType(consol::MedicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1rikst6jEee0kIKIEebuqA" type="_P2mp4ALQEeS0YMHMf4rRtQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1riks96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1r80YN6jEee0kIKIEebuqA" name="getReasonForReferralSection2" bodyCondition="_1r80Y96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1r80Y96jEee0kIKIEebuqA" name="body" constrainedElement="_1r80YN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1r80ZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection2))->asSequence()->any(true).oclAsType(consol::ReasonForReferralSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1r80Yd6jEee0kIKIEebuqA" type="_Ya0H0AB5EeS20Pddu0dxVw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1r80Yt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_27kpMN6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_27kpM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_27kpM96jEee0kIKIEebuqA" name="body" constrainedElement="_27kpMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_27kpNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_27kpMd6jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_27kpMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_mgnrsKDQEeOPqKnBFQcY_A" name="TransferSummary">
      <ownedComment xmi:id="_23t18KDQEeOPqKnBFQcY_A">
        <body>&lt;p>&#xD;
This document describes constraints on the Clinical Document Architecture (CDA) header and body elements for a Transfer Summary. The Transfer Summary standardizes critical information for exchange of information between providers of care when a patient moves between health care settings.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Standardization of information used in this form will promote interoperability; create information suitable for reuse in quality measurement, public health, research, and for reimbursement.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_O78fQKWYEeOPqKnBFQcY_A" name="TransferSummaryHasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_heAsQKWYEeOPqKnBFQcY_A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_NBehMKWZEeOPqKnBFQcY_A" name="TransferSummaryDoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_W5AnAKWZEeOPqKnBFQcY_A">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vOpZwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vOqA0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.13' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vPPPoN6jEee0kIKIEebuqA" name="TransferSummaryCodeP" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vPPPod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vOvgYN6jEee0kIKIEebuqA" name="TransferSummaryCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vOvgYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vPuX0N6jEee0kIKIEebuqA" name="TransferSummaryTitle" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vPuX0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vSrlMN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupport" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vSrlMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vT5tMN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContact" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vT5tMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::CALLBCK)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vVj6EN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOf" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vVj6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1sY5QN6jEee0kIKIEebuqA" name="TransferSummaryAdvanceDirectivesSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1sY5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1sx60N6jEee0kIKIEebuqA" name="TransferSummaryAllergiesSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1sx60d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1tK8YN6jEee0kIKIEebuqA" name="TransferSummaryPhysicalExamSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1tLjcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1tklAN6jEee0kIKIEebuqA" name="TransferSummaryEncountersSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1tklAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1t9mkN6jEee0kIKIEebuqA" name="TransferSummaryFamilyHistorySection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1t9mkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1uX2QN6jEee0kIKIEebuqA" name="TransferSummaryFunctionalStatusSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1uX2Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1uw30N6jEee0kIKIEebuqA" name="TransferSummaryImmunizationsSectionEntriesOptional2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1uw30d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1vJ5YN6jEee0kIKIEebuqA" name="TransferSummaryMedicalEquipmentSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1vJ5Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1vi68N6jEee0kIKIEebuqA" name="TransferSummaryMedicationsSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1vi68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1v-_0N6jEee0kIKIEebuqA" name="TransferSummaryPayersSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1v-_0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1wYBYN6jEee0kIKIEebuqA" name="TransferSummaryPlanOfTreatmentSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1wYocN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1wxqAN6jEee0kIKIEebuqA" name="TransferSummaryProblemSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1wxqAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1xKrkN6jEee0kIKIEebuqA" name="TransferSummaryProceduresSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1xKrkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1xjtIN6jEee0kIKIEebuqA" name="TransferSummaryResultsSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1xjtId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1x980N6jEee0kIKIEebuqA" name="TransferSummarySocialHistorySection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1x980d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1yaowN6jEee0kIKIEebuqA" name="TransferSummaryVitalSignsSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1yaowd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1y04cN6jEee0kIKIEebuqA" name="TransferSummaryMentalStatusSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1y04cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1zPIIN6jEee0kIKIEebuqA" name="TransferSummaryGeneralStatusSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1zPIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1zp-4N6jEee0kIKIEebuqA" name="TransferSummaryReviewOfSystemsSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1zql8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_10IgAN6jEee0kIKIEebuqA" name="TransferSummaryNutritionSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_10IgAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_10ivsN6jEee0kIKIEebuqA" name="TransferSummaryReasonForReferralSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_10ivsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_108YUN6jEee0kIKIEebuqA" name="TransferSummaryHistoryOfPastIllnessSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_108YUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_11VZ4N6jEee0kIKIEebuqA" name="TransferSummaryHistoryOfPresentIllnessSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_11VZ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_11ubcN6jEee0kIKIEebuqA" name="TransferSummaryAssessmentAndPlanSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_11ubcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_12IEEN6jEee0kIKIEebuqA" name="TransferSummaryAssessmentSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_12IEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_28DKUN6jEee0kIKIEebuqA" name="TransferSummaryDischargeDiagnosisSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_28DKUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_28hEYN6jEee0kIKIEebuqA" name="TransferSummaryAdmissionMedicationsSectionEntriesOptional2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_28hEYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionMedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_28-XYN6jEee0kIKIEebuqA" name="TransferSummaryAdmissionDiagnosisSection2" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_28-XYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_29bqYN6jEee0kIKIEebuqA" name="TransferSummaryCourseOfCareSection" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_29bqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::CourseOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UqAcN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportAssociatedEntityAssociatedPersonName" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UqAcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UqngN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportAssociatedEntityClassCodeP" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uqngd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrOkN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportAssociatedEntityClassCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrOkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(not classCode.oclIsUndefined() and classCode.oclIsKindOf(vocab::RoleClassAssociative) and &#xD;
let value : vocab::RoleClassAssociative = classCode.oclAsType(vocab::RoleClassAssociative) in &#xD;
value = vocab::RoleClassAssociative::PRS or value = vocab::RoleClassAssociative::NOK or value = vocab::RoleClassAssociative::CAREGIVER or value = vocab::RoleClassAssociative::AGNT or value = vocab::RoleClassAssociative::GUAR or value = vocab::RoleClassAssociative::ECON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Ur1oN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportAssociatedEntityAssociatedPerson" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Ur1od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UscsN6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportTypeCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uscsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject(typeCode=vocab::ParticipationType::IND)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Utq0N6jEee0kIKIEebuqA" name="TransferSummaryParticipantSupportAssociatedEntity" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Utq0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WHZAN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPersonName" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WHZAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WIAEN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityClassCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WIAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(classCode=vocab::RoleClassAssociative::ASSIGNED)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WInIN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityId" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WInId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WJOMN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityAddr" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WJOMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WJ1QN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityTelecom" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WJ1Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WKcUN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPerson" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WKcUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WLDYN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntityScopingOrganization" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WLDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(scopingOrganization->one(scopingOrganization : cda::Organization | not scopingOrganization.oclIsUndefined() and scopingOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WLqcN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactTypeCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WLqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK)->select(typeCode = vocab::ParticipationType::CALLBCK)->reject(typeCode=vocab::ParticipationType::CALLBCK)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WMRgN6jEee0kIKIEebuqA" name="TransferSummaryParticipantCallbackContactAssociatedEntity" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WMRgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK)->select(typeCode = vocab::ParticipationType::CALLBCK)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XpqEN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventPerformerTypeCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XpqEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Xq4MN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Xq4Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XrfQN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventPerformerFunctionCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XrfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XsGUN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventClassCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XsGUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XstYN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventCode" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XstYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Xt7gN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEventPerformer1" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Xt7gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XvJoN6jEee0kIKIEebuqA" name="TransferSummaryDocumentationOfServiceEvent" constrainedElement="_mgnrsKDQEeOPqKnBFQcY_A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XvJod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_mgoSwKDQEeOPqKnBFQcY_A" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_1sY5Qt6jEee0kIKIEebuqA" name="getAdvanceDirectivesSection2" bodyCondition="_1sY5Rd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1sY5Rd6jEee0kIKIEebuqA" name="body" constrainedElement="_1sY5Qt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1sY5Rt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection2))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1sY5Q96jEee0kIKIEebuqA" type="_ZFbCkAIPEeS-F85KYVlDyA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1sY5RN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1sx60t6jEee0kIKIEebuqA" name="getAllergiesSection2" bodyCondition="_1syh4t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1syh4t6jEee0kIKIEebuqA" name="body" constrainedElement="_1sx60t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1syh496jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))->asSequence()->any(true).oclAsType(consol::AllergiesSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1syh4N6jEee0kIKIEebuqA" type="_EONPMAInEeSr1aKUYorURA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1syh4d6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1tLjcd6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_1tLjdN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1tLjdN6jEee0kIKIEebuqA" name="body" constrainedElement="_1tLjcd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1tLjdd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1tLjct6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1tLjc96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1tlMEN6jEee0kIKIEebuqA" name="getEncountersSection2" bodyCondition="_1tlME96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1tlME96jEee0kIKIEebuqA" name="body" constrainedElement="_1tlMEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1tlMFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection2))->asSequence()->any(true).oclAsType(consol::EncountersSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1tlMEd6jEee0kIKIEebuqA" type="_ogD-EAIvEeScubSeRE1upQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1tlMEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1t-NoN6jEee0kIKIEebuqA" name="getFamilyHistorySection" bodyCondition="_1t-No96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1t-No96jEee0kIKIEebuqA" name="body" constrainedElement="_1t-NoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1t-NpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1t-Nod6jEee0kIKIEebuqA" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1t-Not6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1uX2Qt6jEee0kIKIEebuqA" name="getFunctionalStatusSection2" bodyCondition="_1uX2Rd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1uX2Rd6jEee0kIKIEebuqA" name="body" constrainedElement="_1uX2Qt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1uYdUN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1uX2Q96jEee0kIKIEebuqA" type="_8rMFkPyHEeOozpLKXSm5NA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1uX2RN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1uxe4N6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional2" bodyCondition="_1uxe496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1uxe496jEee0kIKIEebuqA" name="body" constrainedElement="_1uxe4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1uxe5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1uxe4d6jEee0kIKIEebuqA" type="_kdQhIPy3EeO1SvUcmWeLDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1uxe4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1vKgcN6jEee0kIKIEebuqA" name="getMedicalEquipmentSection2" bodyCondition="_1vKgc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1vKgc96jEee0kIKIEebuqA" name="body" constrainedElement="_1vKgcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1vKgdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))->asSequence()->any(true).oclAsType(consol::MedicalEquipmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1vKgcd6jEee0kIKIEebuqA" type="_5OKxwP1bEeO5Hq-yrsJSmg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1vKgct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1vi68t6jEee0kIKIEebuqA" name="getMedicationsSection2" bodyCondition="_1vjiAd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1vjiAd6jEee0kIKIEebuqA" name="body" constrainedElement="_1vi68t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1vjiAt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))->asSequence()->any(true).oclAsType(consol::MedicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1vi6896jEee0kIKIEebuqA" type="_P2mp4ALQEeS0YMHMf4rRtQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1vjiAN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1v-_0t6jEee0kIKIEebuqA" name="getPayersSection2" bodyCondition="_1v-_1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1v-_1d6jEee0kIKIEebuqA" name="body" constrainedElement="_1v-_0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1v-_1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection2))->asSequence()->any(true).oclAsType(consol::PayersSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1v-_096jEee0kIKIEebuqA" type="_twgM0P4lEeOzC5ykp-XCaA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1v-_1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1wYocd6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_1wYodN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1wYodN6jEee0kIKIEebuqA" name="body" constrainedElement="_1wYocd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1wYodd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1wYoct6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1wYoc96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1wxqAt6jEee0kIKIEebuqA" name="getProblemSection2" bodyCondition="_1wxqBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1wxqBd6jEee0kIKIEebuqA" name="body" constrainedElement="_1wxqAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1wxqBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))->asSequence()->any(true).oclAsType(consol::ProblemSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1wxqA96jEee0kIKIEebuqA" type="_IXrA4ALVEeSyydFGYJajGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1wxqBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1xKrkt6jEee0kIKIEebuqA" name="getProceduresSection2" bodyCondition="_1xKrld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1xKrld6jEee0kIKIEebuqA" name="body" constrainedElement="_1xKrkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1xKrlt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection2))->asSequence()->any(true).oclAsType(consol::ProceduresSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1xKrk96jEee0kIKIEebuqA" type="_N6wUUALoEeSBA9s7kRnaEg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1xKrlN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1xkUMN6jEee0kIKIEebuqA" name="getResultsSection2" bodyCondition="_1xkUM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1xkUM96jEee0kIKIEebuqA" name="body" constrainedElement="_1xkUMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1xkUNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))->asSequence()->any(true).oclAsType(consol::ResultsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1xkUMd6jEee0kIKIEebuqA" type="_bAAhEALtEeSueJWOLw5iaQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1xkUMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1x980t6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_1x981d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1x981d6jEee0kIKIEebuqA" name="body" constrainedElement="_1x980t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1x981t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1x98096jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1x981N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1ybP0N6jEee0kIKIEebuqA" name="getVitalSignsSection2" bodyCondition="_1ybP096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1ybP096jEee0kIKIEebuqA" name="body" constrainedElement="_1ybP0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ybP1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))->asSequence()->any(true).oclAsType(consol::VitalSignsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1ybP0d6jEee0kIKIEebuqA" type="_D3010ALzEeSM0Jd2D1FgKw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ybP0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1y1fgN6jEee0kIKIEebuqA" name="getMentalStatusSection" bodyCondition="_1y1fg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1y1fg96jEee0kIKIEebuqA" name="body" constrainedElement="_1y1fgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1y1fhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))->asSequence()->any(true).oclAsType(consol::MentalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1y1fgd6jEee0kIKIEebuqA" type="_4tfOMJ2CEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1y1fgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1zPvMN6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_1zPvM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1zPvM96jEee0kIKIEebuqA" name="body" constrainedElement="_1zPvMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1zPvNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1zPvMd6jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1zPvMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1zql8d6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_1zrNAN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1zrNAN6jEee0kIKIEebuqA" name="body" constrainedElement="_1zql8d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1zrNAd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1zql8t6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1zql896jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_10JHEN6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_10JHE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_10JHE96jEee0kIKIEebuqA" name="body" constrainedElement="_10JHEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_10JHFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_10JHEd6jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_10JHEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_10jWwN6jEee0kIKIEebuqA" name="getReasonForReferralSection2" bodyCondition="_10jWw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_10jWw96jEee0kIKIEebuqA" name="body" constrainedElement="_10jWwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_10jWxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection2))->asSequence()->any(true).oclAsType(consol::ReasonForReferralSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_10jWwd6jEee0kIKIEebuqA" type="_Ya0H0AB5EeS20Pddu0dxVw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_10jWwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_108YUt6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_108YVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_108YVd6jEee0kIKIEebuqA" name="body" constrainedElement="_108YUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_108YVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_108YU96jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_108YVN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_11VZ4t6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_11VZ5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_11VZ5d6jEee0kIKIEebuqA" name="body" constrainedElement="_11VZ4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_11VZ5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_11VZ496jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_11VZ5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_11vCgN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_11vCg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_11vCg96jEee0kIKIEebuqA" name="body" constrainedElement="_11vCgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_11vChN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_11vCgd6jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_11vCgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_12IEEt6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_12IrId6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_12IrId6jEee0kIKIEebuqA" name="body" constrainedElement="_12IEEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_12IrIt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_12IEE96jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_12IrIN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_28DxYN6jEee0kIKIEebuqA" name="getDischargeDiagnosisSection2" bodyCondition="_28DxY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_28DxY96jEee0kIKIEebuqA" name="body" constrainedElement="_28DxYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_28DxZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::DischargeDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_28DxYd6jEee0kIKIEebuqA" type="_jfuGYPytEeOmn53IDV99zw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_28DxYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_28hEYt6jEee0kIKIEebuqA" name="getAdmissionMedicationsSectionEntriesOptional2" bodyCondition="_28hEZd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_28hEZd6jEee0kIKIEebuqA" name="body" constrainedElement="_28hEYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_28hrcN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionMedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdmissionMedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_28hEY96jEee0kIKIEebuqA" type="_ZLY3MPyqEeOlg_Cnc5bODw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_28hEZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_28--cN6jEee0kIKIEebuqA" name="getAdmissionDiagnosisSection2" bodyCondition="_28--c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_28--c96jEee0kIKIEebuqA" name="body" constrainedElement="_28--cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_28--dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::AdmissionDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_28--cd6jEee0kIKIEebuqA" type="_ctJgAPylEeOc0tW1-DpN-Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_28--ct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_29cRcN6jEee0kIKIEebuqA" name="getCourseOfCareSection" bodyCondition="_29cRc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_29cRc96jEee0kIKIEebuqA" name="body" constrainedElement="_29cRcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_29cRdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::CourseOfCareSection))->asSequence()->any(true).oclAsType(consol::CourseOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_29cRcd6jEee0kIKIEebuqA" type="_S0oqIIfLEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_29cRct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_OA1xkKi8EeOTwZftO6CV5g" name="USRealmHeaderPatientGeneratedDocument">
      <ownedComment xmi:id="_YjwhQKi9EeOTwZftO6CV5g">
        <body>&lt;p>&#xD;
This template is designed to be used in conjunction with the US Realm Header (V3). It includes additional conformances which further constrain the US Realm Header (V3). &#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Patient Generated Document Header template is not a separate document type. The document body may contain any structured or unstructured content from C-CDA.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_vWXyYN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vWXyYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.29.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vd7y8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTarget" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vd7y8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->one(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vgbGQN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthor" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vgbGQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vhSo8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDataEnterer" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vhSo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_viKLoN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformant" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_viKLod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->exists(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(cda::Informant12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vjCVYN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentCustodian" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vjCVYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vkVV4N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformationRecipient" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vkVV4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vlS_MN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticator" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vlTmQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(cda::LegalAuthenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vmLI8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthenticator" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vmLI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->exists(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vnCEkN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipant" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vnCEkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vn6OUN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInFulfillmentOf" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vn61YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_voyYEN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOf" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_voyYEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5aKykN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5aKykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5aLZoN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5aLZod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5aMAsN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5aMAsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).guardian->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5arI4N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5arI4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null).languageCommunication->excluding(null)->reject((preferenceInd.oclIsUndefined() or preferenceInd.isNullFlavorUndefined()) implies (not preferenceInd.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5arv8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientIfMoreThanOneLangComm" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5arv8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(languageCommunication->size() > 1 implies languageCommunication->one( langCom : cda::LanguageCommunication | langCom.preferenceInd.value))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5asXAN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardian" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5asXAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(guardian->exists(guardian : cda::Guardian | not guardian.oclIsUndefined() and guardian.oclIsKindOf(cda::Guardian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5atlIN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunication" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5atlId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).patient->excluding(null)->reject(languageCommunication->exists(languageCommunication : cda::LanguageCommunication | not languageCommunication.oclIsUndefined() and languageCommunication.oclIsKindOf(cda::LanguageCommunication)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5atlIt6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5atlI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5auMMN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatient" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5auMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject(patient->one(patient : cda::Patient | not patient.oclIsUndefined() and patient.oclIsKindOf(cda::Patient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5auzQN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleProviderOrganization" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5auzQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject(providerOrganization->one(providerOrganization : cda::Organization | not providerOrganization.oclIsUndefined() and providerOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5avaUN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRole" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5avaUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null)->reject(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5bzKQN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5bzKQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (codeSystem = '2.16.840.1.113883.5.111'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5bzKQt6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5bzxUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5bzxUd6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5bzxUt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5b0YYN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5b0YYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5b1mgN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthor" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5b1mgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5czP0N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5czP0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5cz24N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5cz24d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5c0d8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5c0d8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.dataEnterer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5dw5IN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5dxgMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5dyHQN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5dyHQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5dyuUN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformantHasRelatedEntityOrAssignedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5dyuUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(relatedEntity->one(relatedEntity : cda::RelatedEntity | not relatedEntity.oclIsUndefined() and relatedEntity.oclIsKindOf(cda::RelatedEntity)) xor assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5dzVYN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformantRelatedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5dzVYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(relatedEntity->one(relatedEntity : cda::RelatedEntity | not relatedEntity.oclIsUndefined() and relatedEntity.oclIsKindOf(cda::RelatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5fLOYN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganizationId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5fLOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null).representedCustodianOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5fL1cN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganization" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5fL1cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null)->reject(representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(cda::CustodianOrganization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5fMcgN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodian" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5fMcgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null)->reject(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5gKs4N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5gKs4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null).id->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not root.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5gL7AN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5gL7Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null).intendedRecipient->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5gMiEN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipient" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5gMiEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5hNOsN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5hNOsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies (codeSystem = '2.16.840.1.113883.5.111'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5hN1wN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5hN1wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5hOc0N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5hOc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5hPq8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5hPq8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5hQSAN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5hQSAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5iQXkN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5iQXkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5iRlsN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5iRlsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5iSMwN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5iSMwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5iUB8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5iUB8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5jUHgN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5jUHgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5jUukN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5jUukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5jVVoN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipantIfTypeCodeINDThenAEClassCodeFromINDRoleclassCodes" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5jVVod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(p : cda::Participant1 | p.typeCode = vocab::ParticipationType::IND and not ( p.associatedEntity.classCode = vocab::RoleClassAssociative::PRS  or p.associatedEntity.classCode = vocab::RoleClassAssociative::NOK or p.associatedEntity.classCode = vocab::RoleClassAssociative::CAREGIVER or p.associatedEntity.classCode = vocab::RoleClassAssociative::AGNT or p.associatedEntity.classCode = vocab::RoleClassAssociative::GUAR or p.associatedEntity.classCode = vocab::RoleClassAssociative::ECON or p.associatedEntity.isNullFlavorDefined() ) or p.associatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5jV8sN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipantTypeCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5jV8sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5jV8st6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5jV8s96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5kKcEN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrderId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5kKcEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null).order->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5kLDIN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrder" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5kLDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null)->reject(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5lw-kN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityId" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5lxloN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5lxlod6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5lyMsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5lyMsd6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5lyMst6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5lyzwN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5lyzwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5lza0N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5lza0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.90' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5l0B4N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5l0B4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5l0o8N6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventCode" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5l0o8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5l1QAN6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformer" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5l1QAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5l1QAt6jEee0kIKIEebuqA" name="USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEvent" constrainedElement="_OA1xkKi8EeOTwZftO6CV5g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5l1QA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_OA2_sKi8EeOTwZftO6CV5g" general="_dduXkJ5OEeOr4eM3k36wAg"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_7jqj4KrlEeOxqJAXCMXUYg" name="AuthorParticipation">
      <ownedComment xmi:id="_JvfwcKrmEeOxqJAXCMXUYg">
        <body>&lt;p>&#xD;
This template represents the Author Participation (including the author timestamp). CDA R2 requires that Author and Author timestamp be asserted in the document header. From there, authorship propagates to contained sections and contained entries, unless explicitly overridden.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Author Participation template was added to those templates in scope for analysis in R2. Although it is not explicitly stated in all templates the Author Participation template can be used in any template.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_vp-D0N6jEee0kIKIEebuqA" name="AuthorParticipationTemplateId" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vp-D0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.119')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vqBHIN6jEee0kIKIEebuqA" name="AuthorParticipationTime" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vqBHId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vqwuAN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthor" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vqwuAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5mun4N6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorAssignedPersonName" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5mvO8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nIQgN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorRepresentedOrganizationId" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nIQgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null).representedOrganization->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nI3kN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorRepresentedOrganizationName" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nI3kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nI3kt6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorRepresentedOrganizationTelecom" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nI3k96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null).representedOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nJeoN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorRepresentedOrganizationAddr" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nJeod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null).representedOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nKFsN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorCodeTerminology" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nKFsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null)->reject(code.codeSystem = '2.16.840.1.113883.6.101' or code.codeSystem = '2.16.840.1.113883.5.111')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nKswN6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorId" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nKswd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nKswt6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorCode" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nKsw96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nLT0N6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorAssignedPerson" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nLT0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nL64N6jEee0kIKIEebuqA" name="AuthorParticipationAssignedAuthorRepresentedOrganization" constrainedElement="_7jqj4KrlEeOxqJAXCMXUYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nL64d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedAuthor->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_7juOQKrlEeOxqJAXCMXUYg">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZQpEwK-1EeO8duI_7f6kZw" name="AdmissionMedication2">
      <ownedComment xmi:id="_qsCkoK-1EeO8duI_7f6kZw">
        <body>This template represents the medications taken by the patient prior to and at the time of admission.</body>
      </ownedComment>
      <ownedRule xmi:id="_v0LIsN6jEee0kIKIEebuqA" name="AdmissionMedicationTemplateId" constrainedElement="_ZQpEwK-1EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0LIsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.36' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v0TrkN6jEee0kIKIEebuqA" name="AdmissionMedicationCodeP" constrainedElement="_ZQpEwK-1EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0Trkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v0OMAN6jEee0kIKIEebuqA" name="AdmissionMedicationCode" constrainedElement="_ZQpEwK-1EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0OMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x6mpsN6jEee0kIKIEebuqA" name="AdmissionMedicationMedicationActivity" constrainedElement="_ZQpEwK-1EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x6mpsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ZQxAkK-1EeO8duI_7f6kZw" general="_LNP08EFGEeGorO80f-Cppg"/>
      <ownedOperation xmi:id="_x6mpst6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_x6nQwt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x6nQwt6jEee0kIKIEebuqA" name="body" constrainedElement="_x6mpst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x6nQw96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x6nQwN6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x6nQwd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_GnllUK-9EeO8duI_7f6kZw" name="AdvanceDirectiveObservation2">
      <ownedComment xmi:id="_V-vVgK-9EeO8duI_7f6kZw">
        <body>&lt;p>&#xD;
This clinical statement represents Advance Directive Observation findings (e.g., &quot;resuscitation status is Full Code&quot;) rather than orders. It should not be considered a legal document or a substitute for the actual Advance Directive document. The related legal documents are referenced using the reference/externalReference element.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Advance Directive Observation describes the patient's directives, including but not limited to:&#xD;
&lt;ul>&#xD;
&lt;li>Medications&lt;/li>&#xD;
&lt;li>Transfer of Care to Hospital&lt;/li>&#xD;
&lt;li>Treatment&lt;/li>&#xD;
&lt;li>Procedures&lt;/li>&#xD;
&lt;li>Intubation and Ventilation&lt;/li>&#xD;
&lt;li>Diagnostic Tests&lt;/li>&#xD;
&lt;li>Tests&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The observation/value element contains the detailed patient directive which may be coded or text. For example, a category directive may be antibiotics, and the details would be intravenous antibiotics only.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_B2cNcKvXEeS-mulaI3YUlw" name="AdvanceDirectiveObservationHasStartingTime" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_59fpUKvYEeS-mulaI3YUlw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_FPudcKvXEeS-mulaI3YUlw" name="AdvanceDirectiveObservationHasEndingTime" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_K8cIoKvXEeS-mulaI3YUlw">
          <language>OCL</language>
          <body>self.effectiveTime.high.hasContent() or self.effectiveTime.high.nullFlavor = vocab::NullFlavor::NA</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v0YkEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationTemplateId" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0YkEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.48' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v07WoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCodeP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v07Wod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v0eDoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0eDod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '52765003' or value.code = '61420007' or value.code = '71388002' or value.code = '78823007' or value.code = '89666000' or value.code = '225204009' or value.code = '281789004' or value.code = '304251008'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v1YpoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationEffectiveTime" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v1Ypod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v1ewQN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2Value" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v1ewQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v6MRIN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifier" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v6MRId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::VRF)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v6rZUN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodian" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v6sAYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::CST)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v7hG0N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReference" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v7hG0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2ROrsN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2AuthorParticipation" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ROrsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nn_wN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CDTranslation" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nn_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75320-2' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nom0N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CDTranslationP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nom0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5nsRMN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2IVLTSLow" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5nsRMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ns4QN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2IVLTSHigh" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ns4Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o4kAN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o4kAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o5LEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o5LEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '63161005' or value.code = '2603003')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o5yIN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityName" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o5yId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o8OYN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRoleCodeP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o8OYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o81cN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRoleCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o81cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o9cgN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRoleAddr" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o9cgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o-DkN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntity" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o-Dkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o-qoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2VerifierTemplateId" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o-qod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.58'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o_RsN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifierTime" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o_Rsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5o_4wN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationVerifierParticipantRole" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5o_4wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::VRF)->select(typeCode=vocab::ParticipationType::VRF)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qUucN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qUucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qVVgN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qVVgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '63161005' or value.code = '2603003')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qV8kN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qV8kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qWjoN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CustodianCustodianRoleCodeP" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qWjod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qWjot6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2CustodianCustodianRoleCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qWjo96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qXKsN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleAddr" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qXKsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qXxwN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRoleTelecom" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qXxwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qYY0N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qYY0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5qY_4N6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5qY_4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::CST)->select(typeCode=vocab::ParticipationType::CST)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rLqEN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextMediaType" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rLqEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject(not text.mediaType.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rLqEt6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextReference" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rLqE96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject(not text.oclIsUndefined() implies not text.reference.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rMRIN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentId" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rMRId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rM4MN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceExternalDocumentText" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rM4Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject((text.oclIsUndefined() or text.isNullFlavorUndefined()) implies (not text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rNfQN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservationReferenceTypeCode" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rNfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::x_ActRelationshipExternalReference) and &#xD;
let value : vocab::x_ActRelationshipExternalReference = typeCode.oclAsType(vocab::x_ActRelationshipExternalReference) in &#xD;
value = vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rOGUN6jEee0kIKIEebuqA" name="AdvanceDirectiveObservation2AdvanceDirectiveObservationReferenceExternalDocument" constrainedElement="_GnllUK-9EeO8duI_7f6kZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rOGUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(cda::ExternalDocument)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_GnmMYK-9EeO8duI_7f6kZw" general="_2KlEwBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_uCiIYLNwEeOtlapy2HWYww" name="AllergyConcernAct2">
      <ownedComment xmi:id="_kWCYcLNxEeOtlapy2HWYww">
        <body>&lt;p>&#xD;
This template reflects an ongoing concern on behalf of the provider that placed the allergy on a patient's allergy list. As long as the underlying condition is of concern to the provider (i.e., as long as the allergy, whether active or resolved, is of ongoing concern and interest to the provider), the statusCode is &quot;active&quot;. Only when the underlying allergy is no longer of concern is the statusCode set to &quot;completed&quot;. The effectiveTime reflects the time that the underlying allergy was felt to be a concern.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The statusCode of the Allergy Concern Act is the definitive indication of the status of the concern, whereas the effectiveTime of the nested Allergy - Intolerance Observation is the definitive indication of whether or not the underlying allergy is resolved.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The effectiveTime/low of the Allergy Concern Act asserts when the concern became active. This equates to the time the concern was authored in the patient's chart. The effectiveTime/high asserts when the concern was completed (e.g., when the clinician deemed there is no longer any need to track the underlying condition).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_v8xEAN6jEee0kIKIEebuqA" name="AllergyProblemActTemplateId" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v8xEAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.30' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v80HUN6jEee0kIKIEebuqA" name="AllergyProblemActCode" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v80HUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v9W54N6jEee0kIKIEebuqA" name="AllergyConcernAct2AuthorParticipation" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v9W54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x7GY8N6jEee0kIKIEebuqA" name="AllergyProblemActAllergyObservation" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7GY8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rVbEN6jEee0kIKIEebuqA" name="AllergyProblemActCDCodeAndCodeSystemValues" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rVbEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject((code = 'CONC' and codeSystem = '2.16.840.1.113883.5.6') or (code = '48765-2' and codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rWCIN6jEee0kIKIEebuqA" name="AllergyProblemActCDCode" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rWCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rWpMN6jEee0kIKIEebuqA" name="AllergyProblemActCDCodeSystem" constrainedElement="_uCiIYLNwEeOtlapy2HWYww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rWpMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not codeSystem.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_uCivcLNwEeOtlapy2HWYww" general="_2EAisBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_x7HAAN6jEee0kIKIEebuqA" name="getConsolAllergyObservation2s" bodyCondition="_x7HAA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x7HAA96jEee0kIKIEebuqA" name="body" constrainedElement="_x7HAAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7HABN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyObservation2)).oclAsType(consol::AllergyObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x7HAAd6jEee0kIKIEebuqA" type="_uVJogLj5EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x7HAAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_uVJogLj5EeODDJAC5t5vpw" name="AllergyObservation2">
      <ownedComment xmi:id="_d2V3QLj6EeODDJAC5t5vpw">
        <body>This template reflects a discrete observation about a patient's allergy or intolerance. Because it is a discrete observation, it will have a statusCode of &quot;completed&quot;. The effectiveTime, also referred to as the &quot;biologically relevant time&quot; is the time at which the observation holds for the patient. For a provider seeing a patient in the clinic today, observing a history of penicillin allergy that developed five years ago, the effectiveTime is five years ago. &#xD;
The effectiveTime of the Allergy - Intolerance Observation is the definitive indication of whether or not the underlying allergy/intolerance is resolved. If known to be resolved, then an effectiveTime/high would be present. If the date of resolution is not known, then effectiveTime/high will be present with a nullFlavor of &quot;UNK&quot;.&#xD;
The agent responsible for an allergy or adverse reaction is not always a manufactured material (for example, food allergies), nor is it necessarily consumed. The following constraints reflect limitations in the base CDA R2 specification, and should be used to represent any type of responsible agent, i.e., use playingEntity classCode = &quot;MMAT&quot; for all agents, manufactured or not.</body>
      </ownedComment>
      <ownedRule xmi:id="_OMO6kLkVEeODDJAC5t5vpw" name="AllergyObservationValueOriginalText" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_OMO6kbkVEeODDJAC5t5vpw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_okdgoLkXEeODDJAC5t5vpw" name="AllergyObservationOriginalTextReference" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_okdgobkXEeODDJAC5t5vpw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_E9i2ELkYEeODDJAC5t5vpw" name="AllergyObservationOriginalTextReferenceValue" constrainedElement="_cf38gCFLEeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_E9i2EbkYEeODDJAC5t5vpw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_dwX2gLkYEeODDJAC5t5vpw" name="AllergyObservationReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_dwX2gbkYEeODDJAC5t5vpw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6bV7wKwAEeS-mulaI3YUlw" name="SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6bV7wawAEeS-mulaI3YUlw">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_YbNUcPfpEeO297ryy8ptVg" name="SubstanceOrDeviceAllergyObservationReactionInversionIndicator">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YbNUcffpEeO297ryy8ptVg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::ReactionObservation2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_uBVvYPfpEeO297ryy8ptVg" name="SubstanceOrDeviceAllergyObservationSeverityInversionIndicator">
        <ownedComment xmi:id="_XahGwLvbEead0dyhUBLajQ">
          <body>&lt;!--SHALL enforced as SHOULD due to such that it clause--></body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_uBVvYffpEeO297ryy8ptVg">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0cksgLsyEead0dyhUBLajQ" name="AllergyObservation2CriticalityInversionIndicator">
        <ownedComment xmi:id="_nwzLMLs3Eead0dyhUBLajQ">
          <body>&lt;!--SHALL enforced as SHOULD due to such that it clause--></body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0cksgbsyEead0dyhUBLajQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::CriticalityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v9YvEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationTemplateId" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v9YvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.7' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v9juMN6jEee0kIKIEebuqA" name="AllergyObservation2NegationInd" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v9juMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v9xJkN6jEee0kIKIEebuqA" name="AllergyObservationCodeP" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v9xJkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v9omsN6jEee0kIKIEebuqA" name="AllergyObservationCode" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v9omsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v-ap0N6jEee0kIKIEebuqA" name="AllergyObservationValueP" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v-ap0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v95scN6jEee0kIKIEebuqA" name="AllergyObservationValue" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v95scd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '420134006' or value.code = '418038007' or value.code = '419511003' or value.code = '418471000' or value.code = '419199007' or value.code = '416098002' or value.code = '414285001' or value.code = '59037007' or value.code = '235719002' or value.code = '232347008' or value.code = '426232007')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v_Le0N6jEee0kIKIEebuqA" name="AllergyObservationStatusCodeP" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v_Le0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v-81UN6jEee0kIKIEebuqA" name="AllergyObservationStatusCode" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v-81Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_v_XFAN6jEee0kIKIEebuqA" name="AllergyObservationEffectiveTime" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v_XFAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wAQc4N6jEee0kIKIEebuqA" name="AllergyObservation2AuthorParticipation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wAQc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wAxaQN6jEee0kIKIEebuqA" name="AllergyObservationAllergyStatusObservation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wAxaQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x7mIMN6jEee0kIKIEebuqA" name="AllergyObservationReactionObservation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7mvQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::MFST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x7pykN6jEee0kIKIEebuqA" name="AllergyObservationSeverityObservation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7pykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yONiMN6jEee0kIKIEebuqA" name="AllergyObservationParticipant" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yONiMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3UITIN6jEee0kIKIEebuqA" name="AllergyObservation2CriticalityObservation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3UI6MN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CriticalityObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rdW4N6jEee0kIKIEebuqA" name="AllergyObservation2IVLTSLow" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rdW4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5rd98N6jEee0kIKIEebuqA" name="AllergyObservation2IVLTSHigh" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5rd98d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5svwUN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5svwUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((originalText.oclIsUndefined() or originalText.isNullFlavorUndefined()) implies (true) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5swXYN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCETranslation" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5swXYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (true) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5sw-cN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5sw-cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5sxlgN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5sxlgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5syMkN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5syMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5syzoN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5syzod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5syzot6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5szasN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5szasd6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5szast6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5s0BwN6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntityCode" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5s0Bwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5s0o0N6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRolePlayingEntity" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5s0o0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5s1P4N6jEee0kIKIEebuqA" name="AllergyObservationParticipantParticipantRole" constrainedElement="_uVJogLj5EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5s1P4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_uVNS4Lj5EeODDJAC5t5vpw" general="_2EaLUBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_wAyBUN6jEee0kIKIEebuqA" name="getConsolAllergyStatusObservations" bodyCondition="_wAyBU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wAyBU96jEee0kIKIEebuqA" name="body" constrainedElement="_wAyBUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wAyBVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyStatusObservation)).oclAsType(consol::AllergyStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wAyBUd6jEee0kIKIEebuqA" type="_2FRuAhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wAyBUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_x7mvQd6jEee0kIKIEebuqA" name="getConsolReactionObservation2s" bodyCondition="_x7mvRN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x7mvRN6jEee0kIKIEebuqA" name="body" constrainedElement="_x7mvQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7mvRd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x7mvQt6jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x7mvQ96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_x7qZoN6jEee0kIKIEebuqA" name="getConsolSeverityObservation2" bodyCondition="_x7qZo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x7qZo96jEee0kIKIEebuqA" name="body" constrainedElement="_x7qZoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x7qZpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation2))->asSequence()->any(true).oclAsType(consol::SeverityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x7qZod6jEee0kIKIEebuqA" type="_B0oKYPJdEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x7qZot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3UI6Md6jEee0kIKIEebuqA" name="getCriticalityObservation" bodyCondition="_3UI6NN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3UI6NN6jEee0kIKIEebuqA" name="body" constrainedElement="_3UI6Md6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3UI6Nd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CriticalityObservation))->asSequence()->any(true).oclAsType(consol::CriticalityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3UI6Mt6jEee0kIKIEebuqA" type="_LspMELDzEeafNo3UpQoAYw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3UI6M96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_6LYrULkoEeODDJAC5t5vpw" name="MentalStatusOrganizer2">
      <ownedComment xmi:id="_XgdH4LkpEeODDJAC5t5vpw">
        <body>The Mental Status Organizer template may be used to group related Mental Status Observations (e.g., results of mental tests) and associated Assessment Scale Observations into subcategories and/or groupings by time. Subcategories can be things such as Mood and Affect, Behavior, Thought Process, Perception, Cognition, etc.</body>
      </ownedComment>
      <ownedRule xmi:id="_AhS9YKyxEeSB84STE1Ny6A" name="CognitiveStatusResultOrganizerCodeCodeSystem">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_AhS9YayxEeSB84STE1Ny6A">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.254' or self.code.codeSystem = '2.16.840.1.113883.6.1'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_if4Q0KyzEeSB84STE1Ny6A" name="MentalStatusOrganizer2HasCodeOrEffectiveTime" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xVFKgKyzEeSB84STE1Ny6A">
          <language>OCL</language>
          <body>not self.code.oclIsUndefined() or not self.effectiveTime.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wAzPcN6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wAzPcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.75' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wA4H8N6jEee0kIKIEebuqA" name="ResultOrganizerCode" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wA4H8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wA9ngN6jEee0kIKIEebuqA" name="MentalStatusOrganizer2EffectiveTime" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wA9ngd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yNvoIN6jEee0kIKIEebuqA" name="ResultOrganizerResultObservation" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yNvoId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::MentalStatusObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5s9LsN6jEee0kIKIEebuqA" name="MentalStatusOrganizer2CDCode" constrainedElement="_6LYrULkoEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5s9Lsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_6LYrUbkoEeODDJAC5t5vpw" general="_jfoCUOZbEeGINOJ_SD9_dA"/>
      <ownedOperation xmi:id="_yNwPMN6jEee0kIKIEebuqA" name="getConsolMentalStatusObservation2s" bodyCondition="_yNwPM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yNwPM96jEee0kIKIEebuqA" name="body" constrainedElement="_yNwPMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yNwPNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yNwPMd6jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yNwPMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_aJr6ULkxEeODDJAC5t5vpw" name="CoverageActivity2">
      <ownedComment xmi:id="_-FQw0LkxEeODDJAC5t5vpw">
        <body>A Coverage Activity groups the policy and authorization acts within a Payers Section to order the payment sources. A Coverage Activity contains one or more Policy Activities, each of which contains zero or more Authorization Activities. The Coverage Activity id is the ID from the patient's insurance card. The sequenceNumber/@value shows the policy order of preference.</body>
      </ownedComment>
      <ownedRule xmi:id="_reFLoPftEeO297ryy8ptVg" name="CoverageActivityCoverageActivityRelationshipSequenceNumber">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_reFLofftEeO297ryy8ptVg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBDuIN6jEee0kIKIEebuqA" name="CoverageActivityTemplateId" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBDuId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.60' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBM4EN6jEee0kIKIEebuqA" name="CoverageActivityCodeP" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBM4Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBHYgN6jEee0kIKIEebuqA" name="CoverageActivityCode" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBHYgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x8KI4N6jEee0kIKIEebuqA" name="CoverageActivityPolicyActivity" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x8KI4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2RoUUN6jEee0kIKIEebuqA" name="CoverageActivity2EntryRelationship" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2RoUUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tYCcN6jEee0kIKIEebuqA" name="CoverageActivity2EntryRelationshipINTValue" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tYCcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null).sequenceNumber->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not value.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tYpgN6jEee0kIKIEebuqA" name="CoverageActivity2EntryRelationshipTypeCode" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tYpgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tZQkN6jEee0kIKIEebuqA" name="CoverageActivity2EntryRelationshipSequenceNumber" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tZQkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->reject((sequenceNumber.oclIsUndefined() or sequenceNumber.isNullFlavorUndefined()) implies (not sequenceNumber.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tZ3oN6jEee0kIKIEebuqA" name="CoverageActivity2EntryRelationshipPolicyActivity2" constrainedElement="_aJr6ULkxEeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tZ3od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->reject(act->one(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PolicyActivity2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_aJr6UbkxEeODDJAC5t5vpw" general="_Cg3pkBUmEeGvPruliC3crg"/>
      <ownedOperation xmi:id="_x8Kv8N6jEee0kIKIEebuqA" name="getConsolPolicyActivity2s" bodyCondition="_x8Kv896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x8Kv896jEee0kIKIEebuqA" name="body" constrainedElement="_x8Kv8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x8Kv9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PolicyActivity2)).oclAsType(consol::PolicyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x8Kv8d6jEee0kIKIEebuqA" type="_Q0ODkOwlEeOqa975IP2wug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x8Kv8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Hl3ScLk0EeODDJAC5t5vpw" name="SmokingStatusMeaningfulUse2">
      <ownedComment xmi:id="_05AVQLk0EeODDJAC5t5vpw">
        <body>This template represents the current smoking status of the patient as specified in Meaningful Use (MU) Stage 2 requirements. Historic smoking status observations as well as details about the smoking habit (e.g., how many per day) would be represented in the Tobacco Use template.&#xD;
This template represents a &quot;snapshot in time&quot; observation, simply reflecting what the patient's current smoking status is at the time of the observation. As a result, the effectiveTime is constrained to a time stamp, and will approximately correspond with the author/time. Details regarding the time period when the patient is/was smoking would be recorded in the Tobacco Use template.&#xD;
If the patient's current smoking status is unknown, the value element must be populated with SNOMED CT code 266927001 to communicate &quot;Unknown if ever smoked&quot; from the Current Smoking Status Value Set.</body>
      </ownedComment>
      <ownedRule xmi:id="_wBa6gN6jEee0kIKIEebuqA" name="SmokingStatusObservationTemplateId" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBbhkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.78' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBd90N6jEee0kIKIEebuqA" name="SmokingStatusMeaningfulUse2Id" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBd90d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBnHwN6jEee0kIKIEebuqA" name="SmokingStatusObservationCodeP" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBnHwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBiPQN6jEee0kIKIEebuqA" name="SmokingStatusObservationCode" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBiPQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '72166-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wCKhYN6jEee0kIKIEebuqA" name="SmokingStatusObservationValueP" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wCKhYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wBtOYN6jEee0kIKIEebuqA" name="SmokingStatusObservationValue" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wBtOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '449868002' or value.code = '428041000124106' or value.code = '8517006' or value.code = '266919005' or value.code = '77176002' or value.code = '266927001' or value.code = '428071000124103' or value.code = '428061000124105')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wCppkN6jEee0kIKIEebuqA" name="SmokingStatusObservationEffectiveTime" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wCqQoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wDSiwN6jEee0kIKIEebuqA" name="SmokingStatusMeaningfulUse2AuthorParticipation" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDSiwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tfXMN6jEee0kIKIEebuqA" name="SmokingStatusMeaningfulUse2CDCodeTermAssertionOrLoinc" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tfXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tglUN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSCenter" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tglUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (center.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5thMYN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSHigh" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5thMYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (high.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5thzcN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSLow" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5thzcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (low.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tiagN6jEee0kIKIEebuqA" name="SmokingStatusObservationIVLTSWidth" constrainedElement="_Hl3ScLk0EeODDJAC5t5vpw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tiagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (width.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Hl5HoLk0EeODDJAC5t5vpw" general="_RYJj0OWQEeGKmvzED_He2w"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4iF6IL86EeOS5KuvmCHHew" name="DeceasedObservation2">
      <ownedComment xmi:id="_A79IEL87EeOS5KuvmCHHew">
        <body>This template represents the observation that a patient has died. It also represents the cause of death, indicated by an entryRelationship type of 'CAUS'. This template allows for more specific representation of data than is available with the use of dischargeDispositionCode.</body>
      </ownedComment>
      <ownedRule xmi:id="_wDTw4N6jEee0kIKIEebuqA" name="DeceasedObservationTemplateId" constrainedElement="_4iF6IL86EeOS5KuvmCHHew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDTw4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.79' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wDdh4N6jEee0kIKIEebuqA" name="DeceasedObservationCodeP" constrainedElement="_4iF6IL86EeOS5KuvmCHHew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDdh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wDXbQN6jEee0kIKIEebuqA" name="DeceasedObservationCode" constrainedElement="_4iF6IL86EeOS5KuvmCHHew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDXbQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x8pREN6jEee0kIKIEebuqA" name="DeceasedObservationProblemObservation" constrainedElement="_4iF6IL86EeOS5KuvmCHHew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x8pREd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4iIWYL86EeOS5KuvmCHHew" general="_lm3boOZbEeGINOJ_SD9_dA"/>
      <ownedOperation xmi:id="_x8p4IN6jEee0kIKIEebuqA" name="getConsolProblemObservation2" bodyCondition="_x8p4I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x8p4I96jEee0kIKIEebuqA" name="body" constrainedElement="_x8p4IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x8p4JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2))->asSequence()->any(true).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x8p4Id6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x8p4It6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_EIeu8MyjEeO93sHu8pHB2g" name="DischargeMedication2">
      <ownedComment xmi:id="_QIz30MykEeO93sHu8pHB2g">
        <body>This template represents medications that the patient is intended to take (or stop) after discharge.</body>
      </ownedComment>
      <ownedRule xmi:id="_wDkPkN6jEee0kIKIEebuqA" name="DischargeMedicationTemplateId" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDk2oN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.35' and id.extension = '2016-03-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wDuAkN6jEee0kIKIEebuqA" name="DischargeMedicationCodeP" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDuAkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wDn58N6jEee0kIKIEebuqA" name="DischargeMedicationCode" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wDn58d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wD0HMN6jEee0kIKIEebuqA" name="DischargeMedication2StatusCode" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wD0HMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wD4YoN6jEee0kIKIEebuqA" name="DischargeMedication2StatusCodeP" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wD4Yod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x9MqsN6jEee0kIKIEebuqA" name="DischargeMedicationMedicationActivity" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x9Mqsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tmE4N6jEee0kIKIEebuqA" name="DischargeMedication2CDTranslation" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tmE4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75311-1' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5tmr8N6jEee0kIKIEebuqA" name="DischargeMedication2CDTranslationP" constrainedElement="_EIeu8MyjEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5tmr8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_EIhLMMyjEeO93sHu8pHB2g" general="_hD-z0CUPEeGiOPpZVnfEJA"/>
      <ownedOperation xmi:id="_x9NRwN6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_x9NRw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x9NRw96jEee0kIKIEebuqA" name="body" constrainedElement="_x9NRwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x9NRxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x9NRwd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x9NRwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_RGU34MzDEeO93sHu8pHB2g" name="EncounterActivity2">
      <ownedComment xmi:id="_3BOh0MzDEeO93sHu8pHB2g">
        <body>This clinical statement describes an interaction between a patient and clinician. Interactions may include in-person encounters, telephone conversations, and email exchanges.</body>
      </ownedComment>
      <ownedRule xmi:id="_tMxrkMzLEeO93sHu8pHB2g" name="EncounterActivitiesSdtcDDCFromNUBCOrDD" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_DnY3cMzMEeO93sHu8pHB2g">
          <language>OCL</language>
          <body>(self.sDTCDischargeDispositionCode->isEmpty() or self.sDTCDischargeDispositionCode->exists(element | element.isNullFlavorUndefined())) implies (self.sDTCDischargeDispositionCode->forAll( element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and let value : datatypes::CE = element.oclAsType(datatypes::CE) in (value.codeSystem = '2.16.840.1.113883.6.301.5' or value.codeSystem = '2.16.840.1.113883.12.112') and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wEFM8N6jEee0kIKIEebuqA" name="EncounterActivitiesTemplateId" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wEF0AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.49' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wEL6oN6jEee0kIKIEebuqA" name="EncounterActivitiesCode" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wEL6od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.12' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wExwgN6jEee0kIKIEebuqA" name="EncounterActivitiesCodeP" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wExwgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wFRfwN6jEee0kIKIEebuqA" name="EncounterActivitiesSDTCDischargeDispositionCode" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wFRfwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.sDTCDischargeDispositionCode->isEmpty() or self.sDTCDischargeDispositionCode->exists(element | element.isNullFlavorUndefined())) implies (not self.sDTCDischargeDispositionCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x-N-YN6jEee0kIKIEebuqA" name="EncounterActivitiesIndication" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x-N-Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x-ttoN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterDiagnosis" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x-ttod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EncounterDiagnosis2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2SvuoN6jEee0kIKIEebuqA" name="EncounterActivitiesServiceDeliveryLocation" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Svuod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2TOPwN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformer" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2TOPwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5uCJwN6jEee0kIKIEebuqA" name="EncounterActivity2CDTranslation" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5uCJwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (( not translation->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5u0M4N6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5u0M4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5u0z8N6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5u0z8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5u1bAN6jEee0kIKIEebuqA" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity" constrainedElement="_RGU34MzDEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5u1bAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_RGVe8MzDEeO93sHu8pHB2g" general="_2LayQBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_x-N-Yt6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_x-Olct6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x-Olct6jEee0kIKIEebuqA" name="body" constrainedElement="_x-N-Yt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x-Olc96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x-OlcN6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x-Olcd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_x-uUsN6jEee0kIKIEebuqA" name="getConsolEncounterDiagnosis2s" bodyCondition="_x-uUs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x-uUs96jEee0kIKIEebuqA" name="body" constrainedElement="_x-uUsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x-uUtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EncounterDiagnosis2)).oclAsType(consol::EncounterDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x-uUsd6jEee0kIKIEebuqA" type="_jH6CcMzNEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x-uUst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2SwVsN6jEee0kIKIEebuqA" name="getConsolServiceDeliveryLocations" bodyCondition="_2SwVs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2SwVs96jEee0kIKIEebuqA" name="body" constrainedElement="_2SwVsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2SwVtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2SwVsd6jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2SwVst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_jH6CcMzNEeO93sHu8pHB2g" name="EncounterDiagnosis2">
      <ownedComment xmi:id="_JPYv0MzOEeO93sHu8pHB2g">
        <body>This template wraps relevant problems or diagnoses at the close of a visit or that need to be followed after the visit. If the encounter is associated with a Hospital Discharge, the Hospital Discharge Diagnosis must be used. This entry requires at least one Problem Observation entry.</body>
      </ownedComment>
      <ownedRule xmi:id="_wGXr8N6jEee0kIKIEebuqA" name="EncounterDiagnosisTemplateId" constrainedElement="_jH6CcMzNEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wGYTAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.80' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wGg14N6jEee0kIKIEebuqA" name="EncounterDiagnosisCodeP" constrainedElement="_jH6CcMzNEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wGg14d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wGb9YN6jEee0kIKIEebuqA" name="EncounterDiagnosisCode" constrainedElement="_jH6CcMzNEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wGb9Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '29308-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x9tBAN6jEee0kIKIEebuqA" name="EncounterDiagnosisProblemObservation" constrainedElement="_jH6CcMzNEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x9toEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_jH6CcczNEeO93sHu8pHB2g" general="_Ker6MOM2EeGfv4R-kzpM0g"/>
      <ownedOperation xmi:id="_x9toEd6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_x9toFN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x9toFN6jEee0kIKIEebuqA" name="body" constrainedElement="_x9toEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x9toFd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x9toEt6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x9toE96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_3WqogMzSEeO93sHu8pHB2g" name="FunctionalStatusObservation2">
      <ownedComment xmi:id="_OemNYMzTEeO93sHu8pHB2g">
        <body>This template represents the patient's physical function (e.g., mobility status, instrumental activities of daily living, self-care status) and problems that limit function (dyspnea, dysphagia). The template may include assessment scale observations, identify supporting caregivers, and provide information about non-medicinal supplies. This template is used to represent physical or developmental function of all patient populations.</body>
      </ownedComment>
      <ownedRule xmi:id="_2gS-oM7qEeO6qNoyVDglCA" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2gS-oc7qEeO6qNoyVDglCA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fU5ZkM7rEeO6qNoyVDglCA" name="ResultObservationTextReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_fU5Zkc7rEeO6qNoyVDglCA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wGluYN6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wGmVcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.67' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wG1mAN6jEee0kIKIEebuqA" name="ResultObservationCodeP" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wG1mAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wGscEN6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wGscEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '54522-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wG_XAN6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wG_XAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wHGrwN6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wHGrwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wHPOoN6jEee0kIKIEebuqA" name="ResultObservationMethodCode" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wHPOod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wHZmsN6jEee0kIKIEebuqA" name="ResultObservationTargetSiteCode" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wHZmsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wIDG8N6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRange" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wIDG8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wI-UAN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationAuthor" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wI-7EN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJa_8N6jEee0kIKIEebuqA" name="FunctionalStatusObservation2AuthorParticipation" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJa_8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x_P5IN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x_P5Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5vosQN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5vosQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5vpTUN6jEee0kIKIEebuqA" name="FunctionalStatusResultObservationReferenceRangeObservationRange" constrainedElement="_3WqogMzSEeO93sHu8pHB2g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5vpTUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_3WqogczSEeO93sHu8pHB2g" general="_viRU0OZbEeGINOJ_SD9_dA"/>
      <ownedOperation xmi:id="_x_QgMN6jEee0kIKIEebuqA" name="getConsolNonMedicinalSupplyActivity2" bodyCondition="_x_QgM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x_QgM96jEee0kIKIEebuqA" name="body" constrainedElement="_x_QgMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x_QgNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2))->asSequence()->any(true).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x_QgMd6jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x_QgMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_mgny4NF8EeOHUokOVP95oQ" name="SubstanceOrDeviceAllergyObservation">
      <ownedComment xmi:id="_mgny4dF8EeOHUokOVP95oQ">
        <body>This clinical statement represents that an allergy or adverse reaction to a substance or device exists or does not exist. The agent that is the cause of the allergy or adverse reaction is represented as a participant in the observation.</body>
      </ownedComment>
      <ownedRule xmi:id="_mgny4tF8EeOHUokOVP95oQ" name="SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_mgny49F8EeOHUokOVP95oQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::AllergyStatusObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_mgny5NF8EeOHUokOVP95oQ" name="SubstanceOrDeviceAllergyObservationReactionInversionIndicator" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_mgny5dF8EeOHUokOVP95oQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::ReactionObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_mgny5tF8EeOHUokOVP95oQ" name="SubstanceOrDeviceAllergyObservationSeverityInversionIndicator" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_mgny59F8EeOHUokOVP95oQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJcOEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationTemplateId" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJc1IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.24.3.90')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJkJ4N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationClassCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJkJ4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJobUN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationMoodCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJobUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJsFsN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationId" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJsFsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJ0okN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationCodeP" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJ0okd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJvwEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJvwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJ5hEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationStatusCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJ5hEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wJ_AoN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationStatusCodeP" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wJ_Aod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wKEgMN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationEffectiveTime" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wKEgMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wKJYsN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationValue" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wKJYsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '420134006' or value.code = '418038007' or value.code = '419511003' or value.code = '418471000' or value.code = '419199007' or value.code = '416098002' or value.code = '414285001' or value.code = '59037007' or value.code = '235719002' or value.code = '232347008' or value.code = '426232007')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wKpvAN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationValueP" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wKpvAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wL-ksN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationAllergyStatusObservation" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wL-ksd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyStatusObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wMcewN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationReactionObservation" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wMcewd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::MFST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wM5KsN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationSeverityObservation" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wM5Ksd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wNbWMN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipant" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wNbWMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w53kN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w53kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((originalText.oclIsUndefined() or originalText.isNullFlavorUndefined()) implies (not originalText.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w6eoN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w6eod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w7FsN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w7Fsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.reference.value.oclIsUndefined() implies not getSection().text.getText(code.originalText.reference.value.substring(2, code.originalText.reference.value.size())).oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w7swN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w7swd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.reference.oclIsUndefined() implies code.originalText.reference.value->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w7swt6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w8T0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.oclIsUndefined() implies not code.originalText.reference.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w8T0d6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w8T0t6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(( code.oclIsUndefined() or code.isNullFlavorUndefined() ) implies ( not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and ( ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.3.26.1.5' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.6.88' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.4.9' and not value.code.oclIsUndefined() ) or ( let value : datatypes::CE = code.oclAsType(datatypes::CE) in value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined() ) ) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w864N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityClassCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w864d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(isDefined('classCode') and classCode=vocab::EntityClassRoot::MMAT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w9h8N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w9h8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w-JAN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRoleClassCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w-JAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(isDefined('classCode') and classCode=vocab::RoleClassRoot::MANU)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w-JAt6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w-JA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w-wEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantTypeCode" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w-wEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(typeCode=vocab::ParticipationType::CSM)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5w_XIN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRole" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5w_XId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_mgny6NF8EeOHUokOVP95oQ">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_wL-kst6jEee0kIKIEebuqA" name="getAllergyStatusObservation" bodyCondition="_wL-ktd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wL-ktd6jEee0kIKIEebuqA" name="body" constrainedElement="_wL-kst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wL-ktt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyStatusObservation))->asSequence()->any(true).oclAsType(consol::AllergyStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wL-ks96jEee0kIKIEebuqA" type="_2FRuAhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wL-ktN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wMcewt6jEee0kIKIEebuqA" name="getReactionObservations" bodyCondition="_wMdF0t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wMdF0t6jEee0kIKIEebuqA" name="body" constrainedElement="_wMcewt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wMdF096jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation)).oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wMdF0N6jEee0kIKIEebuqA" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wMdF0d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wM5xwN6jEee0kIKIEebuqA" name="getSeverityObservation" bodyCondition="_wM5xw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wM5xw96jEee0kIKIEebuqA" name="body" constrainedElement="_wM5xwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wM5xxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation))->asSequence()->any(true).oclAsType(consol::SeverityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wM5xwd6jEee0kIKIEebuqA" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wM5xwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_yU2tgOD0EeOmBMTtnrPqww" name="FunctionalStatusOrganizer2">
      <ownedComment xmi:id="_8KWzAOD0EeOmBMTtnrPqww">
        <body>This template groups related functional status observations into categories (e.g., mobility, self-care).</body>
      </ownedComment>
      <ownedRule xmi:id="_s7VVAOD9EeOmBMTtnrPqww" name="ResultOrganizerCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_19yM8OD9EeOmBMTtnrPqww">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.254' or self.code.codeSystem = '2.16.840.1.113883.6.1'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wOY_gN6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wOY_gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.66' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wOd4AN6jEee0kIKIEebuqA" name="ResultOrganizerCode" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wOd4Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wOshgN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCodeP" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wOshgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wOklsN6jEee0kIKIEebuqA" name="ResultOrganizerStatusCode" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wOlMwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wPOtAN6jEee0kIKIEebuqA" name="FunctionalStatusResultOrganizerFunctionalStatusResultObservation" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wPOtAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::FunctionalStatusObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wPsnEN6jEee0kIKIEebuqA" name="FunctionalStatusOrganizer2SelfCareActivities" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wPsnEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::SelfCareActivities))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQJ6EN6jEee0kIKIEebuqA" name="FunctionalStatusOrganizer2AuthorParticipation" constrainedElement="_yU2tgOD0EeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQJ6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_yVKPgOD0EeOmBMTtnrPqww" general="_zBlUUOZbEeGINOJ_SD9_dA"/>
      <ownedOperation xmi:id="_wPPUEN6jEee0kIKIEebuqA" name="getConsolFunctionalStatusObservation2s" bodyCondition="_wPPUE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wPPUE96jEee0kIKIEebuqA" name="body" constrainedElement="_wPPUEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wPPUFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusObservation2)).oclAsType(consol::FunctionalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wPPUEd6jEee0kIKIEebuqA" type="_3WqogMzSEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wPPUEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wPsnEt6jEee0kIKIEebuqA" name="getSelfCareActivitiess" bodyCondition="_wPsnFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wPsnFd6jEee0kIKIEebuqA" name="body" constrainedElement="_wPsnEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wPtOIN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SelfCareActivities)).oclAsType(consol::SelfCareActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wPsnE96jEee0kIKIEebuqA" type="_nC0xUJmzEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wPsnFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_DMvdYOEFEeOmBMTtnrPqww" name="HealthStatusObservation2">
      <ownedComment xmi:id="_3pdyAOEFEeOmBMTtnrPqww">
        <body>This template represents information about the overall health status of the patient. To represent the impact of a specific problem or concern related to the patient's expected health outcome use the Prognosis Observation template 2.16.840.1.113883.10.20.22.4.113.</body>
      </ownedComment>
      <ownedRule xmi:id="_RGF6oMEkEeSjB6vMjDsL5Q" name="HealthStatusObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_RGF6ocEkEeSjB6vMjDsL5Q">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_UJBgIMEkEeSjB6vMjDsL5Q" name="HealthStatusObservationTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_UJBgIcEkEeSjB6vMjDsL5Q">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_YgU3kMEkEeSjB6vMjDsL5Q" name="HealthStatusObservationHasTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YgU3kcEkEeSjB6vMjDsL5Q">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQLIMN6jEee0kIKIEebuqA" name="HealthStatusObservationTemplateId" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQLIMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.5' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQR14N6jEee0kIKIEebuqA" name="HealthStatusObservation2Id" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQR14d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQbm4N6jEee0kIKIEebuqA" name="HealthStatusObservationCodeP" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQbm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQVgQN6jEee0kIKIEebuqA" name="HealthStatusObservationCode" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQVgQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11323-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQhGcN6jEee0kIKIEebuqA" name="HealthStatusObservationText" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQhGcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQregN6jEee0kIKIEebuqA" name="HealthStatusObservationStatusCodeP" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQregd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQlX4N6jEee0kIKIEebuqA" name="HealthStatusObservationStatusCode" constrainedElement="_DMvdYOEFEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQlX4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_DMwEcOEFEeOmBMTtnrPqww" general="_2ExXsBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_GM6icOEIEeOmBMTtnrPqww" name="HospitalAdmissionDiagnosis2">
      <ownedComment xmi:id="_XfoAYOEIEeOmBMTtnrPqww">
        <body>This template represents problems or diagnoses identified by the clinician at the time of the patient's admission.</body>
      </ownedComment>
      <ownedRule xmi:id="_wQw-EN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisTemplateId" constrainedElement="_GM6icOEIEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQw-Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.34' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQ6vEN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisCodeP" constrainedElement="_GM6icOEIEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQ6vEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wQ0ocN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisCode" constrainedElement="_GM6icOEIEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wQ0ocd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x_voYN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisProblemObservation" constrainedElement="_GM6icOEIEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x_voYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_GM6iceEIEeOmBMTtnrPqww" general="_5K6mAEFHEeGorO80f-Cppg"/>
      <ownedOperation xmi:id="_x_wPcN6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_x_wPc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x_wPc96jEee0kIKIEebuqA" name="body" constrainedElement="_x_wPcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x_wPdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x_wPcd6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x_wPct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Trd1cOEMEeOmBMTtnrPqww" name="HospitalDischargeDiagnosis2">
      <ownedComment xmi:id="_ao5hoOEMEeOmBMTtnrPqww">
        <body>This template represents problems or diagnoses present at the time of discharge which occurred during the hospitalization or need to be monitored after hospitalization. It requires at least one Problem Observation entry.</body>
      </ownedComment>
      <ownedRule xmi:id="_wRAOoN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisTemplateId" constrainedElement="_Trd1cOEMEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wRAOod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.33' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wRIxgN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisCodeP" constrainedElement="_Trd1cOEMEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wRIxgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wRDR8N6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisCode" constrainedElement="_Trd1cOEMEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wRDR8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yAUQIN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisProblemObservation" constrainedElement="_Trd1cOEMEeOmBMTtnrPqww">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yAU3MN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Trd1ceEMEeOmBMTtnrPqww" general="_KtwVgCULEeGiOPpZVnfEJA"/>
      <ownedOperation xmi:id="_yAU3Md6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yAVeQd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yAVeQd6jEee0kIKIEebuqA" name="body" constrainedElement="_yAU3Md6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yAVeQt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yAU3Mt6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yAVeQN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_zI6vcOE7EeOTq9XEMvvkWw" name="ImmunizationActivity2">
      <ownedComment xmi:id="_Jul70OE8EeOTq9XEMvvkWw">
        <body>&lt;p>&#xD;
An Immunization Activity describes immunization substance administrations that have actually occurred or are intended to occur. Immunization Activities in &quot;INT&quot; mood are reflections of immunizations a clinician intends a patient to receive. Immunization Activities in &quot;EVN&quot; mood reflect immunizations actually received.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
An Immunization Activity is very similar to a Medication Activity with some key differentiators. The drug code system is constrained to CVX codes. Administration timing is less complex. Patient refusal reasons should be captured. All vaccines administered should be fully documented in the patient's permanent medical record. Healthcare providers who administer vaccines covered by the National Childhood Vaccine Injury Act are required to ensure that the permanent medical record of the recipient indicates:&#xD;
&lt;ul>&#xD;
&lt;li>1) Date of administration&lt;/li>&#xD;
&lt;li>2) Vaccine manufacturer&lt;/li>&#xD;
&lt;li>3) Vaccine lot number&lt;/li>&#xD;
&lt;li>4) Name and title of the person who administered the vaccine and the address of the clinic or facility where the permanent record will reside&lt;/li>&#xD;
&lt;li>5) Vaccine information statement (VIS)&lt;/li>&#xD;
&lt;ul>&#xD;
&lt;li>a. Date printed on the VIS&lt;/li>&#xD;
&lt;li>b. Date VIS given to patient or parent/guardian.&lt;/li>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
This information should be included in an Immunization Activity when available. (Reference: &lt;a href=http://www.cdc.gov/vaccines/pubs/pinkbook/downloads/appendices/D/vacc_admin.pdf>http://www.cdc.gov/vaccines/pubs/pinkbook/downloads/appendices/D/vacc_admin.pdf&lt;/a>)&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_xYXwIMHdEeST26B_nQ4gxA" name="ImmunizationActivityTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xYXwI8HdEeST26B_nQ4gxA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_DPx2kMHeEeST26B_nQ4gxA" name="ImmunizationActivityReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_DPx2kcHeEeST26B_nQ4gxA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_LMMTgMHeEeST26B_nQ4gxA" name="ImmunizationActivityTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_LMMTgcHeEeST26B_nQ4gxA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ZVy_kMHrEeST26B_nQ4gxA" name="ImmunizationActivityInstructionInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZVy_kcHrEeST26B_nQ4gxA">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wRNqAN6jEee0kIKIEebuqA" name="ImmunizationActivityTemplateId" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wROREN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.52' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wRYpIN6jEee0kIKIEebuqA" name="ImmunizationActivityCode" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wRZQMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wSFMsN6jEee0kIKIEebuqA" name="ImmunizationActivityStatusCodeP" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wSFMsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wRhzEN6jEee0kIKIEebuqA" name="ImmunizationActivityStatusCode" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wRhzEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'normal' or value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'new' or value.code = 'suspended' or value.code = 'nullified' or value.code = 'obsolete')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wSmxIN6jEee0kIKIEebuqA" name="ImmunizationActivityRepeatNumber" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wSmxId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wTT7wN6jEee0kIKIEebuqA" name="ImmunizationActivityAdministrationUnitCodeP" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wTT7wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wSus8N6jEee0kIKIEebuqA" name="ImmunizationActivityAdministrationUnitCode" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wSus8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.85' and (value.code = 'APPFUL' or value.code = 'DROP' or value.code = 'NDROP' or value.code = 'OPDROP' or value.code = 'ORDROP' or value.code = 'OTDROP' or value.code = 'PUFF' or value.code = 'SCOOP' or value.code = 'SPRY'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wT3VYN6jEee0kIKIEebuqA" name="ImmunizationActivityText" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wT3VYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wUkgAN6jEee0kIKIEebuqA" name="ImmunizationActivity2AuthorParticipation" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wUlHEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wVEPQN6jEee0kIKIEebuqA" name="ImmunizationActivityDrugVehicle" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wVEPQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::DrugVehicle))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yA9JUN6jEee0kIKIEebuqA" name="ImmunizationActivityIndication" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yA9JUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yBfU0N6jEee0kIKIEebuqA" name="ImmunizationActivityMedicationSupplyOrder" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yBfU0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yB-dAN6jEee0kIKIEebuqA" name="ImmunizationActivityMedicationDispense" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yB-dAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationDispense2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yCeMQN6jEee0kIKIEebuqA" name="ImmunizationActivityReactionObservation" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yCeMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yDBl4N6jEee0kIKIEebuqA" name="ImmunizationActivityInstructions" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yDBl4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yDjxYN6jEee0kIKIEebuqA" name="ImmunizationActivityConsumable" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yDjxYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_12kI8N6jEee0kIKIEebuqA" name="ImmunizationActivityPrecondition" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_12kwAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2TptkN6jEee0kIKIEebuqA" name="ImmunizationActivity2EntryRelationshipForSubAdminAct" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tptkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5xE2sN6jEee0kIKIEebuqA" name="ImmunizationActivity2EntryRelationshipTypeCode" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5xE2sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5xFdwN6jEee0kIKIEebuqA" name="ImmunizationActivity2EntryRelationshipInversionInd" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5xFdwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->reject(not inversionInd.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5xGE0N6jEee0kIKIEebuqA" name="ImmunizationActivity2EntryRelationshipSequenceNumber" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5xGE0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->reject((sequenceNumber.oclIsUndefined() or sequenceNumber.isNullFlavorUndefined()) implies (not sequenceNumber.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5xGE0t6jEee0kIKIEebuqA" name="ImmunizationActivity2EntryRelationshipSubstanceAdministeredAct" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5xGE096jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::COMP)->reject(act->one(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::SubstanceAdministeredAct)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5xgUgN6jEee0kIKIEebuqA" name="ImmunizationActivityConsumableImmunizationMedicationInformation" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5xgUgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::ImmunizationMedicationInformation2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5x59IN6jEee0kIKIEebuqA" name="ImmunizationActivityPreconditionTypeCode" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5x59Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5x6kMN6jEee0kIKIEebuqA" name="ImmunizationActivityPreconditionPreconditionForSubstanceAdministration" constrainedElement="_zI6vcOE7EeOTq9XEMvvkWw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5x6kMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_zI_A4OE7EeOTq9XEMvvkWw" general="_2MAoIBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_wVE2UN6jEee0kIKIEebuqA" name="getConsolDrugVehicles" bodyCondition="_wVE2U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wVE2U96jEee0kIKIEebuqA" name="body" constrainedElement="_wVE2UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wVE2VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::DrugVehicle)).oclAsType(consol::DrugVehicle)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wVE2Ud6jEee0kIKIEebuqA" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wVE2Ut6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yA9wYN6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_yA9wY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yA9wY96jEee0kIKIEebuqA" name="body" constrainedElement="_yA9wYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yA9wZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yA9wYd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yA9wYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yBf74N6jEee0kIKIEebuqA" name="getConsolMedicationSupplyOrder2" bodyCondition="_yBf7496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yBf7496jEee0kIKIEebuqA" name="body" constrainedElement="_yBf74N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yBf75N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder2))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yBf74d6jEee0kIKIEebuqA" type="_InVpIOZ8EeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yBf74t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yB_EEN6jEee0kIKIEebuqA" name="getConsolMedicationDispense2" bodyCondition="_yB_EE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yB_EE96jEee0kIKIEebuqA" name="body" constrainedElement="_yB_EEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yB_EFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense2))->asSequence()->any(true).oclAsType(consol::MedicationDispense2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yB_EEd6jEee0kIKIEebuqA" type="_qH-ckOXfEeOkFcFJ9uzEEw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yB_EEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yCezUN6jEee0kIKIEebuqA" name="getConsolReactionObservation2" bodyCondition="_yCezU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yCezU96jEee0kIKIEebuqA" name="body" constrainedElement="_yCezUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yCezVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2))->asSequence()->any(true).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yCezUd6jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yCezUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yDCM8N6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_yDCM896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yDCM896jEee0kIKIEebuqA" name="body" constrainedElement="_yDCM8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yDCM9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yDCM8d6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yDCM8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Rx8LIOHUEeO04sHNODkHmQ" name="ImmunizationMedicationInformation2">
      <ownedComment xmi:id="_xLRlgOHUEeO04sHNODkHmQ">
        <body>The Immunization Medication Information represents product information about the immunization substance. The vaccine manufacturer and vaccine lot number are typically recorded in the medical record and should be included if known.</body>
      </ownedComment>
      <ownedRule xmi:id="_wVFdYN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationTemplateId" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wVFdYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.54' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wW4NIN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationManufacturedMaterial" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wW4NId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yvDkN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yvDkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yvqoN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yvqod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ywRsN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ywRsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yw4wN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yw4wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yw4wt6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yw4w96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yxf0N6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReferenceValue" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yxf0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yyG4N6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yyG4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yyt8N6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yyt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yzVAN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yzVAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.12.292' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5yz8EN6jEee0kIKIEebuqA" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText" constrainedElement="_Rx8LIOHUEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5yz8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((lotNumberText.oclIsUndefined() or lotNumberText.isNullFlavorUndefined()) implies (not lotNumberText.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Rx8LIeHUEeO04sHNODkHmQ" general="_daTqABVOEeGbmN_W114JUw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_PrEOIOHoEeO04sHNODkHmQ" name="Indication2">
      <ownedComment xmi:id="_b-DpwOHoEeO04sHNODkHmQ">
        <body>This template represents the rationale for an action such as an encounter, a medication administration, or a procedure. The id element can be used to reference a problem recorded elsewhere in the document, or can be used with a code and value to record the problem. Indications for treatment are not laboratory results; rather the problem associated with the laboratory result should be sited (e.g., hypokalemia instead of a laboratory result of Potassium 2.0 mEq/L). Use the Drug Monitoring Act [templateId 2.16.840.1.113883.10.20.22.4.123] to indicate if a particular drug needs special monitoring (e.g., anticoagulant therapy). Use Precondition for Substance Administration (V2) [templateId 2.16.840.1.113883.10.20.22.4.25.2] to represent that a medication is to be administered only when the associated criteria are met.</body>
      </ownedComment>
      <ownedRule xmi:id="_5ehhMOHsEeO04sHNODkHmQ" name="IndicationProblemIndication" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ehhMuHsEeO04sHNODkHmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_53PjMOHsEeO04sHNODkHmQ" name="IndicationCodeNullFlavor" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_53PjMeHsEeO04sHNODkHmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6PRosOHsEeO04sHNODkHmQ" name="IndicationCodeNullFlavorValue" constrainedElement="_MtdoIB7kEeGEaLkc3UAsAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6PRosuHsEeO04sHNODkHmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wW5bQN6jEee0kIKIEebuqA" name="IndicationTemplateId" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wW5bQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.19' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wXDMQN6jEee0kIKIEebuqA" name="IndicationId" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wXDMQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wXvv0N6jEee0kIKIEebuqA" name="IndicationCodeP" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wXvv0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wXJS4N6jEee0kIKIEebuqA" name="IndicationCode" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wXJS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wY4_UN6jEee0kIKIEebuqA" name="IndicationValueP" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wY4_Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wYU-oN6jEee0kIKIEebuqA" name="IndicationValue" constrainedElement="_PrEOIOHoEeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wYU-od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_PrE1MOHoEeO04sHNODkHmQ" general="_sHrUoBUSEeG6PvUxSTZnaw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_D62NwOH7EeO04sHNODkHmQ" name="Instruction2">
      <ownedComment xmi:id="_2laBMOH7EeO04sHNODkHmQ">
        <body>The Instruction template can be used in several ways, such as to record patient instructions within a Medication Activity or to record fill instructions within a supply order. The template's moodCode can only be INT. If an instruction was already be given, the Procedure Activity Act template (instead of this template) should be used to represent the already occurred instruction. The act/code defines the type of instruction. Though not defined in this template, a Vaccine Information Statement (VIS) document could be referenced through act/reference/externalDocument, and patient awareness of the instructions can be represented with the generic participant and the participant/awarenessCode.</body>
      </ownedComment>
      <ownedRule xmi:id="_wZYukN6jEee0kIKIEebuqA" name="InstructionsTemplateId" constrainedElement="_D62NwOH7EeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZZVoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.20' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wZcY8N6jEee0kIKIEebuqA" name="InstructionsText" constrainedElement="_D62NwOH7EeO04sHNODkHmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZcY8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_D62NweH7EeO04sHNODkHmQ" general="_2G8h9RSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_WnSCMOLAEeOc7-TVP7Wi6w" name="MedicationActivity2">
      <ownedComment xmi:id="_oiDlsOLAEeOc7-TVP7Wi6w">
        <body>A Medication Activity describes substance administrations that have actually occurred (e.g., pills ingested or injections given) or are intended to occur (e.g., &quot;take 2 tablets twice a day for the next 10 days&quot;). Medication activities in &quot;INT&quot; mood are reflections of what a clinician intends a patient to be taking. For example, a clinician may intend that a patient to be administered Lisinopril 20 mg PO for blood pressure control. If what was actually administered was Lisinopril 10 mg., then the Medication activities in the &quot;EVN&quot; mood would reflect actual use.&#xD;
A moodCode of INT is allowed, but it is recommended that the Planned Medication Activity (V2) template be used for moodCodes other than EVN if the document type contains a section that includes Planned Medication Activity (V2) (for example a Care Plan document with Plan of Treatment, Intervention, or Goal sections).&#xD;
At a minimum, a Medication Activity shall include an effectiveTime indicating the duration of the administration (or single-administration timestamp). Ambulatory medication lists generally provide a summary of use for a given medication over time - a medication activity in event mood with the duration reflecting when the medication started and stopped. Ongoing medications will not have a stop date (or will have a stop date with a suitable NULL value). Ambulatory medication lists will generally also have a frequency (e.g., a medication is being taken twice a day). Inpatient medications generally record each administration as a separate act.&#xD;
The dose (doseQuantity) represents how many of the consumables are to be administered at each administration event. As a result, the dose is always relative to the consumable and the interval of administration. Thus, a patient consuming a single &quot;metoprolol 25mg tablet&quot; per administration will have a doseQuantity of &quot;1&quot;, whereas a patient consuming &quot;metoprolol&quot; will have a dose of &quot;25 mg&quot;.</body>
      </ownedComment>
      <ownedRule xmi:id="_HmDJkMNaEeSRNKqIviDQAg" name="MedicationActivityTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_HmDJkcNaEeSRNKqIviDQAg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_JAnDEMNaEeSRNKqIviDQAg" name="MedicationActivityReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_JAnDEcNaEeSRNKqIviDQAg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_LCiekMNaEeSRNKqIviDQAg" name="MedicationActivityTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_LCiekcNaEeSRNKqIviDQAg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_dSgcsOLDEeOc7-TVP7Wi6w" name="MedicationActivityInstructionsInversionInd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_dSgcseLDEeOc7-TVP7Wi6w">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_S4xW0OLFEeOc7-TVP7Wi6w" name="MedicationActivityDoseQuantityorrateQuantity">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_S4xW0eLFEeOc7-TVP7Wi6w">
          <language>OCL</language>
          <body>self.doseQuantity->size() = 1 or self.rateQuantity->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_NeWDkOLHEeOc7-TVP7Wi6w" name="MedicationActivity2SubstanceAdministeredActInversionInd" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VwguEOLHEeOc7-TVP7Wi6w">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::SubstanceAdministeredAct))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_J94YEOLIEeOc7-TVP7Wi6w" name="MedicationActivity2SubstanceAdministeredActSequenceNumber" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_cqmV4OLIEeOc7-TVP7Wi6w">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::SubstanceAdministeredAct))->forAll(ent : cda::EntryRelationship | not ent.sequenceNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_GsKcUOXAEeOkFcFJ9uzEEw" name="MedicationActivityEffectiveTimeIVLTSorTS" constrainedElement="_4CqJMEFiEeG2TLeVPbv7pg">
        <ownedComment xmi:id="_JqDw0OXAEeOkFcFJ9uzEEw">
          <body>The substance administration effectiveTime field can repeat, in order to represent varying levels of complex dosing. effectiveTime can be used to represent the duration of administration (e.g., &quot;10 days&quot;), the frequency of administration (e.g., &quot;every 8 hours&quot;), and more. Here, we require that there SHALL be an effectiveTime documentation of the duration (or single-administration timestamp), and that there SHOULD be an effectiveTime documentation of the frequency. Other timing nuances, supported by the base CDA R2 standard, may also be included.&#xD;
This effectiveTime represents either the medication duration (i.e., the time the medication was started and stopped) or the single-administration timestamp.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GsKcUeXAEeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->size() = 1 xor self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::SXCM_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_SVIhsMLGEeSqg-Exmsy2kg" name="MedicationActivityEffectiveTimeIVLTSLow">
        <ownedComment xmi:id="_gKSToMLGEeSqg-Exmsy2kg">
          <body>Note: indicates when medication started</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SVIhscLGEeSqg-Exmsy2kg">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).low->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_8MCz4OW8EeOkFcFJ9uzEEw" name="MedicationActivityEffectiveTimeIVLTSHigh" constrainedElement="_4CqJMEFiEeG2TLeVPbv7pg">
        <ownedComment xmi:id="_MbmLsOW9EeOkFcFJ9uzEEw">
          <body>Note: indicates when medication stopped</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8MCz4eW8EeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0pBccOW-EeOkFcFJ9uzEEw" name="MedicationActivityEffectiveTimePIVLTS" constrainedElement="_6ODpwEFiEeG2TLeVPbv7pg">
        <ownedComment xmi:id="_xOtdcOXZEeOkFcFJ9uzEEw">
          <body>Note: This effectiveTime represents the medication frequency (e.g., administration times per day).</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0pBcceW-EeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::PIVL_TS) or ef.oclIsTypeOf(datatypes::EIVL_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_D8GNUMLLEeSqg-Exmsy2kg" name="MedicationActivity2EffectiveTimeIVLTSLowXorValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_D8GNUsLLEeSqg-Exmsy2kg">
          <language>OCL</language>
          <body>( self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).low->size() = 1) )  and  ( self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::SXCM_TS))->forAll( eff | eff.oclAsType(datatypes:: SXCM_TS).value->size() = 1 or eff.oclAsType(datatypes::SXCM_TS).isNullFlavorDefined()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wZgqYN6jEee0kIKIEebuqA" name="MedicationActivityTemplateId" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZgqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.16' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wZy-QN6jEee0kIKIEebuqA" name="MedicationActivityCode" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZy-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wadFkN6jEee0kIKIEebuqA" name="MedicationActivityStatusCodeP" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wadFkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wZ6TAN6jEee0kIKIEebuqA" name="MedicationActivityStatusCode" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wZ6TAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'normal' or value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'new' or value.code = 'suspended' or value.code = 'nullified' or value.code = 'obsolete')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wbBtUN6jEee0kIKIEebuqA" name="MedicationActivityRepeatNumber" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wbCUYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wbtCwN6jEee0kIKIEebuqA" name="MedicationActivityRouteCodeP" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wbtCwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wbJCEN6jEee0kIKIEebuqA" name="MedicationActivityRouteCode" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wbJpIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wcSRkN6jEee0kIKIEebuqA" name="MedicationActivityDoseQuantity" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wcSRkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wc_cMN6jEee0kIKIEebuqA" name="MedicationActivityAdministrationUnitCodeP" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wc_cMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wcaNYN6jEee0kIKIEebuqA" name="MedicationActivityAdministrationUnitCode" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wcaNYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wdjc4N6jEee0kIKIEebuqA" name="MedicationActivityText" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wdjc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_weJ50N6jEee0kIKIEebuqA" name="MedicationActivity2DrugMonitoringAct" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_weJ50d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::DrugMonitoringAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_weqQIN6jEee0kIKIEebuqA" name="MedicationActivityInstructions" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_weq3MN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wfJYUN6jEee0kIKIEebuqA" name="MedicationActivity2AuthorParticipation" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wfJYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wfn5cN6jEee0kIKIEebuqA" name="MedicationActivity2SubstanceAdministeredAct" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wfn5cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::SubstanceAdministeredAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wgLTEN6jEee0kIKIEebuqA" name="MedicationActivityIndication" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wgLTEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yEkeAN6jEee0kIKIEebuqA" name="MedicationActivityConsumable" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yEkeAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yFqqMN6jEee0kIKIEebuqA" name="MedicationActivityMedicationSupplyOrder" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yFrRQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yGLAgN6jEee0kIKIEebuqA" name="MedicationActivityMedicationDispense" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yGLAgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationDispense2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yGqvwN6jEee0kIKIEebuqA" name="MedicationActivityReactionObservation" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yGrW0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::CAUS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_13adgN6jEee0kIKIEebuqA" name="MedicationActivityPrecondition" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_13adgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Pj8MN6jEee0kIKIEebuqA" name="MedicationActivity2MedicationFreeTextSig" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Pj8Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationFreeTextSig) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5zqQoN6jEee0kIKIEebuqA" name="MedicationActivityPreconditionTypeCode" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5zqQod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5zq3sN6jEee0kIKIEebuqA" name="MedicationActivityPreconditionPreconditionForSubstanceAdministration" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5zq3sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_50FHYN6jEee0kIKIEebuqA" name="MedicationActivityConsumableMedicationInformation" constrainedElement="_WnSCMOLAEeOc7-TVP7Wi6w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_50FHYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::MedicationInformation2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_WnVFgOLAEeOc7-TVP7Wi6w" general="_2GHbgBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_weKg4N6jEee0kIKIEebuqA" name="getDrugMonitoringAct" bodyCondition="_weKg496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_weKg496jEee0kIKIEebuqA" name="body" constrainedElement="_weKg4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_weKg5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::DrugMonitoringAct))->asSequence()->any(true).oclAsType(consol::DrugMonitoringAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_weKg4d6jEee0kIKIEebuqA" type="_MbKs8IqvEeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_weKg4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_weq3Md6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_weq3NN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_weq3NN6jEee0kIKIEebuqA" name="body" constrainedElement="_weq3Md6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_weq3Nd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_weq3Mt6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_weq3M96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wfoggN6jEee0kIKIEebuqA" name="getSubstanceAdministeredActs" bodyCondition="_wfogg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wfogg96jEee0kIKIEebuqA" name="body" constrainedElement="_wfoggN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wfoghN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::SubstanceAdministeredAct)).oclAsType(consol::SubstanceAdministeredAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wfoggd6jEee0kIKIEebuqA" type="_KTrEAJpdEeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wfoggt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wgL6IN6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_wgL6I96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wgL6I96jEee0kIKIEebuqA" name="body" constrainedElement="_wgL6IN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wgL6JN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wgL6Id6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wgL6It6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yFrRQd6jEee0kIKIEebuqA" name="getConsolMedicationSupplyOrder2" bodyCondition="_yFr4Ut6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yFr4Ut6jEee0kIKIEebuqA" name="body" constrainedElement="_yFrRQd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yFr4U96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder2))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yFr4UN6jEee0kIKIEebuqA" type="_InVpIOZ8EeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yFr4Ud6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yGLnkN6jEee0kIKIEebuqA" name="getConsolMedicationDispense2s" bodyCondition="_yGLnk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yGLnk96jEee0kIKIEebuqA" name="body" constrainedElement="_yGLnkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yGLnlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense2)).oclAsType(consol::MedicationDispense2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yGLnkd6jEee0kIKIEebuqA" type="_qH-ckOXfEeOkFcFJ9uzEEw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yGLnkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yGrW0d6jEee0kIKIEebuqA" name="getConsolReactionObservation2" bodyCondition="_yGrW1N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yGrW1N6jEee0kIKIEebuqA" name="body" constrainedElement="_yGrW0d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yGrW1d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2))->asSequence()->any(true).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yGrW0t6jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yGrW096jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3PkjQN6jEee0kIKIEebuqA" name="getMedicationFreeTextSigs" bodyCondition="_3PkjQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3PkjQ96jEee0kIKIEebuqA" name="body" constrainedElement="_3PkjQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3PkjRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationFreeTextSig)).oclAsType(consol::MedicationFreeTextSig)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3PkjQd6jEee0kIKIEebuqA" type="_kowjcDr-EeWD4MX6K2c_gA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3PkjQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_qH-ckOXfEeOkFcFJ9uzEEw" name="MedicationDispense2">
      <ownedComment xmi:id="_zoMZIOXgEeOkFcFJ9uzEEw">
        <body>This template records the act of supplying medications (i.e., dispensing).</body>
      </ownedComment>
      <ownedRule xmi:id="_oloRUOXlEeOkFcFJ9uzEEw" name="MedicationDispense2ContainsMedicationInformation2" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3f6fUOXlEeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_joXtIOXlEeOkFcFJ9uzEEw" name="MedicationDispense2ContainsImmunizationMedicationInformation2" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_QgwGkOXmEeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_VWi7YOXnEeOkFcFJ9uzEEw" name="MedicationDispenseContainsMedicationOrImmunization" constrainedElement="_iZPioB7lEeGEaLkc3UAsAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VWi7YeXnEeOkFcFJ9uzEEw">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2) xor self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wgMhMN6jEee0kIKIEebuqA" name="MedicationDispenseTemplateId" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wgNIQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.18' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wg1aYN6jEee0kIKIEebuqA" name="MedicationDispenseStatusCodeP" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wg2BcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wgUdAN6jEee0kIKIEebuqA" name="MedicationDispenseStatusCode" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wgUdAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_whW-0N6jEee0kIKIEebuqA" name="MedicationDispenseRepeatNumber" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_whW-0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yHJ38N6jEee0kIKIEebuqA" name="MedicationDispenseMedicationSupplyOrder" constrainedElement="_qH-ckOXfEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yHJ38d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::MedicationSupplyOrder2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_qH_DoOXfEeOkFcFJ9uzEEw" general="_DpoGkBUUEeG6PvUxSTZnaw"/>
      <ownedOperation xmi:id="_yHKfAN6jEee0kIKIEebuqA" name="getConsolMedicationSupplyOrder2" bodyCondition="_yHKfA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yHKfA96jEee0kIKIEebuqA" name="body" constrainedElement="_yHKfAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yHKfBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder2))->asSequence()->any(true).oclAsType(consol::MedicationSupplyOrder2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yHKfAd6jEee0kIKIEebuqA" type="_InVpIOZ8EeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yHKfAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Hz__kOXrEeOkFcFJ9uzEEw" name="MedicationInformation2">
      <ownedComment xmi:id="_RV3XYOXrEeOkFcFJ9uzEEw">
        <body>A medication should be recorded as a pre-coordinated ingredient + strength + dose form (e.g., &quot;metoprolol 25mg tablet&quot;, &quot;amoxicillin 400mg/5mL suspension&quot;) where possible. This includes RxNorm codes whose Term Type is SCD (semantic clinical drug), SBD (semantic brand drug), GPCK (generic pack), BPCK (brand pack).&#xD;
The dose (doseQuantity) represents how many of the consumables are to be administered at each administration event. As a result, the dose is always relative to the consumable. Thus, a patient consuming a single &quot;metoprolol 25mg tablet&quot; per administration will have a doseQuantity of &quot;1&quot;, whereas a patient consuming &quot;metoprolol&quot; will have a dose of &quot;25 mg&quot;.</body>
      </ownedComment>
      <ownedRule xmi:id="_whapMN6jEee0kIKIEebuqA" name="MedicationInformationTemplateId" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_whbQQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.23' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wjFdIN6jEee0kIKIEebuqA" name="MedicationInformationManufacturedMaterial" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wjFdId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_506N0N6jEee0kIKIEebuqA" name="MedicationInformation2MedicationInformationManufacturedMaterialCETranslation" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_506N0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_50604N6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_50604d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_50604t6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5060496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_507b8N6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialReference" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_507b8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_508DAN6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_508DAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_508qEN6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialReferenceValue" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_508qEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_509RIN6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCodeP" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_509RId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_509RIt6jEee0kIKIEebuqA" name="MedicationInformationMedicationInformationManufacturedMaterialCode" constrainedElement="_Hz__kOXrEeOkFcFJ9uzEEw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_509RI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.88' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H0AmoOXrEeOkFcFJ9uzEEw" general="_2T9DQBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_InVpIOZ8EeOmzetP5oaH3A" name="MedicationSupplyOrder2">
      <ownedComment xmi:id="_SYVCEOZ8EeOmzetP5oaH3A">
        <body>This template records the intent to supply a patient with medications.</body>
      </ownedComment>
      <ownedRule xmi:id="_acGj4OZ_EeOmzetP5oaH3A" name="MedicationSupplyOrder2ContainsMedicationInformation2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_acGj4eZ_EeOmzetP5oaH3A">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_brcr4OZ_EeOmzetP5oaH3A" name="MedicationSupplyOrder2ContainsImmunizationMedicationInformation2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_brcr4eZ_EeOmzetP5oaH3A">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sPjCQOZ9EeOmzetP5oaH3A" name="MedicationSupplyOrderContainsMedicationOrImmunization" constrainedElement="_iZPioB7lEeGEaLkc3UAsAg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPjCQeZ9EeOmzetP5oaH3A">
          <language>OCL</language>
          <body>self.product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2) xor self.product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_PA3aMOaAEeOmzetP5oaH3A" name="MedicationSupplyOrderInstructionInversionInd" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_PA3aMeaAEeOmzetP5oaH3A">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wjGrQN6jEee0kIKIEebuqA" name="MedicationSupplyOrderTemplateId" constrainedElement="_InVpIOZ8EeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wjGrQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.17' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wlDzEN6jEee0kIKIEebuqA" name="MedicationSupplyOrderStatusCodeP" constrainedElement="_InVpIOZ8EeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wlDzEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wjPOIN6jEee0kIKIEebuqA" name="MedicationSupplyOrderStatusCode" constrainedElement="_InVpIOZ8EeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wjPOId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'normal' or value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'new' or value.code = 'suspended' or value.code = 'nullified' or value.code = 'obsolete')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wltTUN6jEee0kIKIEebuqA" name="MedicationSupplyOrderRepeatNumber" constrainedElement="_InVpIOZ8EeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wltTUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wmfWcN6jEee0kIKIEebuqA" name="MedicationSupplyOrderInstructions" constrainedElement="_InVpIOZ8EeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wmf9gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_InVpIeZ8EeOmzetP5oaH3A" general="_j3aTQBrTEeGo461UQq-B1g"/>
      <ownedOperation xmi:id="_wmgkkN6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_wmgkk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wmgkk96jEee0kIKIEebuqA" name="body" constrainedElement="_wmgkkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wmgklN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wmgkkd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wmgkkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_k_C20OaCEeOmzetP5oaH3A" name="NonMedicinalSupplyActivity2">
      <ownedComment xmi:id="_vkE70OaCEeOmzetP5oaH3A">
        <body>This template represents equipment supplied to the patient (e.g., pumps, inhalers, wheelchairs). Devices applied to, or placed in, the patient are represented with the Product Instance entry contained within a Procedure Activity Procedure (V2) (identifier: urn:hl7ii: 2.16.840.1.113883.10.20.22.4.14:2014-06-09)</body>
      </ownedComment>
      <ownedRule xmi:id="_1qtQ8OaEEeOmzetP5oaH3A" name="NonMedicinalSupplyActivity2Instruction2InversionInd" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Oq4OaEEeOmzetP5oaH3A">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wmhysN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityTemplateId" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wmhysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.50' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wnSAoN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityStatusCodeP" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wnSAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wmpugN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityStatusCode" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wmpugd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'normal' or value.code = 'aborted' or value.code = 'active' or value.code = 'cancelled' or value.code = 'completed' or value.code = 'held' or value.code = 'new' or value.code = 'suspended' or value.code = 'nullified' or value.code = 'obsolete')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_woVwkN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivity2Instruction2" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_woVwkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UFLYN6jEee0kIKIEebuqA" name="NonMedicinalSupplyActivityProductInstance" constrainedElement="_k_C20OaCEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UFycN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ProductInstance))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_k_C20eaCEeOmzetP5oaH3A" general="_2HIvMBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_woWXoN6jEee0kIKIEebuqA" name="getInstruction2" bodyCondition="_woWXo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_woWXo96jEee0kIKIEebuqA" name="body" constrainedElement="_woWXoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_woWXpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_woWXod6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_woWXot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2UFycd6jEee0kIKIEebuqA" name="getConsolProductInstance" bodyCondition="_2UFydN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2UFydN6jEee0kIKIEebuqA" name="body" constrainedElement="_2UFycd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UFydd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ProductInstance))->asSequence()->any(true).oclAsType(consol::ProductInstance)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2UFyct6jEee0kIKIEebuqA" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2UFyc96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Ao2HkOaHEeOmzetP5oaH3A" name="PhysicianofRecordParticipant2">
      <ownedComment xmi:id="_Yh-f4OaHEeOmzetP5oaH3A">
        <body>This encounterParticipant is the attending physician and is usually different from the Physician Reading Study Performer defined in documentationOf/serviceEvent.</body>
      </ownedComment>
      <ownedRule xmi:id="_woW-sN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantTemplateId" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_woXlwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.2' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wo-CsN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntity" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wo-Csd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_52NOUN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityAssignedPersonName" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_52NOUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null).assignedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_52p6QN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipant2AssignedEntityRepresentedOrganizationName" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_52p6Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_52qhUN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityHasNationalProviderId" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_52qhUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_52rIYN6jEee0kIKIEebuqA" name="PhysicianofRecordParticipantAssignedEntityAssignedPerson" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_52rIYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_52rIYt6jEee0kIKIEebuqA" name="PhysicianofRecordParticipant2AssignedEntityRepresentedOrganization" constrainedElement="_Ao2HkOaHEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_52rIY96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Ao2HkeaHEeOmzetP5oaH3A" general="_H_izsEb1EeGp67IkyTw1fg"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_lLnRMOaYEeOmzetP5oaH3A" name="PlannedAct2">
      <ownedComment xmi:id="_tFG9AOaYEeOmzetP5oaH3A">
        <body>This template represents planned acts that are not classified as an observation or a procedure according to the HL7 RIM. Examples of these acts are a dressing change, the teaching or feeding of a patient or the providing of comfort measures. &#xD;
The priority of the activity to the patient and provider is communicated through Priority Preference. The effectiveTime indicates the time when the activity is intended to take place.</body>
      </ownedComment>
      <ownedRule xmi:id="_pRxcAOadEeOmzetP5oaH3A" name="PlannedAct2CodeFromLoincOrSnomed" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_16-_QOadEeOmzetP5oaH3A">
          <language>OCL</language>
          <body>(not code.oclIsUndefined() and code.isNullFlavorUndefined()) implies (code.codeSystem = '2.16.840.1.113883.6.1' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wpyiEN6jEee0kIKIEebuqA" name="PlanOfCareActivityActTemplateId" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wpzJIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.39' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wp4BoN6jEee0kIKIEebuqA" name="PlanOfCareActivityActMoodCode" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wp4Bod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::INT or value = vocab::x_DocumentActMood::ARQ or value = vocab::x_DocumentActMood::PRMS or value = vocab::x_DocumentActMood::PRP or value = vocab::x_DocumentActMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wqaNIN6jEee0kIKIEebuqA" name="PlannedAct2Code" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wqaNId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wqd3gN6jEee0kIKIEebuqA" name="PlannedAct2StatusCode" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wqd3gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wqiI8N6jEee0kIKIEebuqA" name="PlannedAct2StatusCodeP" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wqiI8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wqmaYN6jEee0kIKIEebuqA" name="PlannedAct2EffectiveTime" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wqmaYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wrBRIN6jEee0kIKIEebuqA" name="PlannedAct2Indication2" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wrBRId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wra5wN6jEee0kIKIEebuqA" name="PlannedAct2Instruction2" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wra5wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wr1JcN6jEee0kIKIEebuqA" name="PlannedAct2AuthorParticipation" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wr1Jcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wsOLAN6jEee0kIKIEebuqA" name="PlannedAct2Performer" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wsOLAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UfbEN6jEee0kIKIEebuqA" name="PlannedAct2PriorityPreference" constrainedElement="_lLnRMOaYEeOmzetP5oaH3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UfbEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lLn4QOaYEeOmzetP5oaH3A" general="_2NWE5xSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_wrB4MN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_wrB4M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wrB4M96jEee0kIKIEebuqA" name="body" constrainedElement="_wrB4MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wrB4NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wrB4Md6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wrB4Mt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wra5wt6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_wrbg0d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wrbg0d6jEee0kIKIEebuqA" name="body" constrainedElement="_wra5wt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wrbg0t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wra5w96jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wrbg0N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2UfbEt6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_2UgCIN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2UgCIN6jEee0kIKIEebuqA" name="body" constrainedElement="_2UfbEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UgCId6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2UfbE96jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2UfbFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_bDPFMOdXEeOqBOMhgDlycQ" name="PlannedEncounter2">
      <ownedComment xmi:id="_3E6nQOdXEeOqBOMhgDlycQ">
        <body>This template represents a planned or ordered encounter. The type of encounter (e.g., comprehensive outpatient visit) is represented. Clinicians participating in the encounter and the location of the planned encounter may be captured. The priority that the patient and providers place on the encounter may be represented.</body>
      </ownedComment>
      <ownedRule xmi:id="_qBucwOdiEeOqBOMhgDlycQ" name="PlannedEncounter2ParticipantServiceDeliveryLocationTypeCode" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4o_oIOdiEeOqBOMhgDlycQ">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsTypeOf(consol::ServiceDeliveryLocation))->forAll(pars : cda::Participant2 | pars.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wsPZIN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterTemplateId" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wsPZId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.40' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wsTqkN6jEee0kIKIEebuqA" name="PlanOfCareActivityEncounterMoodCode" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wsTqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentEncounterMood) and &#xD;
let value : vocab::x_DocumentEncounterMood = self.moodCode.oclAsType(vocab::x_DocumentEncounterMood) in &#xD;
value = vocab::x_DocumentEncounterMood::INT or value = vocab::x_DocumentEncounterMood::ARQ or value = vocab::x_DocumentEncounterMood::PRMS or value = vocab::x_DocumentEncounterMood::PRP or value = vocab::x_DocumentEncounterMood::RQO or value = vocab::x_DocumentEncounterMood::APT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wtQFwN6jEee0kIKIEebuqA" name="PlannedEncounter2CodeP" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wtQFwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ws1PAN6jEee0kIKIEebuqA" name="PlannedEncounter2Code" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ws1PAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wtrjkN6jEee0kIKIEebuqA" name="PlannedEncounter2StatusCode" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wtrjkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wtv1AN6jEee0kIKIEebuqA" name="PlannedEncounter2StatusCodeP" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wtv1Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wt0GcN6jEee0kIKIEebuqA" name="PlannedEncounter2EffectiveTime" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wt0Gcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wuQLUN6jEee0kIKIEebuqA" name="PlannedEncounter2Performer" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wuQLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wvC1gN6jEee0kIKIEebuqA" name="PlannedEncounter2ServiceDeliveryLocation" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wvC1gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wvdsQN6jEee0kIKIEebuqA" name="PlannedEncounter2PriorityPreference" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wvdsQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wwFXUN6jEee0kIKIEebuqA" name="PlannedEncounter2Indication2" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wwFXUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2U5DsN6jEee0kIKIEebuqA" name="PlannedEncounter2AuthorParticipation" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2U5Dsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_53F_IN6jEee0kIKIEebuqA" name="PlannedEncounter2PerformerAssignedEntity" constrainedElement="_bDPFMOdXEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_53F_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_bDRhcOdXEeOqBOMhgDlycQ" general="_2NWFBBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_wvDckN6jEee0kIKIEebuqA" name="getServiceDeliveryLocations" bodyCondition="_wvDck96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wvDck96jEee0kIKIEebuqA" name="body" constrainedElement="_wvDckN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wvDclN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ServiceDeliveryLocation)).oclAsType(consol::ServiceDeliveryLocation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wvDckd6jEee0kIKIEebuqA" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wvDckt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wvdsQt6jEee0kIKIEebuqA" name="getPriorityPreference" bodyCondition="_wveTUt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wveTUt6jEee0kIKIEebuqA" name="body" constrainedElement="_wvdsQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wveTU96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference))->asSequence()->any(true).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wveTUN6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wveTUd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_wwFXUt6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_wwF-Yt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_wwF-Yt6jEee0kIKIEebuqA" name="body" constrainedElement="_wwFXUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_wwF-Y96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_wwF-YN6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wwF-Yd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_jKZssOdvEeOqBOMhgDlycQ" name="PlannedObservation2">
      <ownedComment xmi:id="_o4FoQOdvEeOqBOMhgDlycQ">
        <body>This template represents planned observations that result in new information about the patient which cannot be classified as a procedure according to the HL7 RIM, i.e., procedures alter the patient's body. Examples of these observations are laboratory tests, diagnostic imaging tests, EEGs, and EKGs.&#xD;
The importance of the planned observation to the patient and provider is communicated through Priority Preference. The effectiveTime indicates the time when the observation is intended to take place and authorTime indicates when the documentation of the plan occurred. &#xD;
The Planned Observation template may also indicate the potential insurance coverage for the observation.</body>
      </ownedComment>
      <ownedRule xmi:id="_wwHzkN6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationTemplateId" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wwIaoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.44' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wwOhQN6jEee0kIKIEebuqA" name="PlanOfCareActivityObservationMoodCode" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wwOhQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_ActMoodDocumentObservation) and &#xD;
let value : vocab::x_ActMoodDocumentObservation = self.moodCode.oclAsType(vocab::x_ActMoodDocumentObservation) in &#xD;
value = vocab::x_ActMoodDocumentObservation::INT or value = vocab::x_ActMoodDocumentObservation::GOL or value = vocab::x_ActMoodDocumentObservation::PRMS or value = vocab::x_ActMoodDocumentObservation::PRP or value = vocab::x_ActMoodDocumentObservation::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wya5oN6jEee0kIKIEebuqA" name="PlannedObservation2CodeP" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wybgsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wyVaEN6jEee0kIKIEebuqA" name="PlannedObservation2Code" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wyVaEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wyhAQN6jEee0kIKIEebuqA" name="PlannedObservation2StatusCode" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wyhAQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wyl4wN6jEee0kIKIEebuqA" name="PlannedObservation2StatusCodeP" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wyl4wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wyrYUN6jEee0kIKIEebuqA" name="PlannedObservation2EffectiveTime" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wyrYUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wyvpwN6jEee0kIKIEebuqA" name="PlannedObservation2Value" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wywQ0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (( not self.value->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wy1JUN6jEee0kIKIEebuqA" name="PlannedObservation2MethodCode" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wy1JUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (( not self.methodCode->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wzjiEN6jEee0kIKIEebuqA" name="PlannedObservation2TargetSiteCodeP" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wzkJIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wy6o4N6jEee0kIKIEebuqA" name="PlannedObservation2TargetSiteCode" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_wy6o4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w0mq8N6jEee0kIKIEebuqA" name="PlannedObservation2Performer" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w0mq8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w1FzIN6jEee0kIKIEebuqA" name="PlannedObservation2AuthorParticipation" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w1FzId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w1mwgN6jEee0kIKIEebuqA" name="PlannedObservation2PriorityPreference" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w1mwgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w2StAN6jEee0kIKIEebuqA" name="PlannedObservation2Indication2" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w2StAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w23UwN6jEee0kIKIEebuqA" name="PlannedObservation2Instruction2" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w23Uwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w3nisN6jEee0kIKIEebuqA" name="PlannedObservation2PlannedCoverage" constrainedElement="_jKZssOdvEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w3nisd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedCoverage) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_jKZssedvEeOqBOMhgDlycQ" general="_2NcLjhSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_w1nXkN6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_w1nXk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w1nXk96jEee0kIKIEebuqA" name="body" constrainedElement="_w1nXkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w1nXlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w1nXkd6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w1nXkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w2TUEN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_w2TUE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w2TUE96jEee0kIKIEebuqA" name="body" constrainedElement="_w2TUEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w2TUFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w2TUEd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w2TUEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w2370N6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_w237096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w237096jEee0kIKIEebuqA" name="body" constrainedElement="_w2370N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w2371N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w2370d6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w2370t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w3oJwN6jEee0kIKIEebuqA" name="getPlannedCoverages" bodyCondition="_w3oJw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w3oJw96jEee0kIKIEebuqA" name="body" constrainedElement="_w3oJwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w3oJxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedCoverage)).oclAsType(consol::PlannedCoverage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w3oJwd6jEee0kIKIEebuqA" type="_O2I3AI9DEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w3oJwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_cs0YsOeEEeOqBOMhgDlycQ" name="PlannedProcedure2">
      <ownedComment xmi:id="_oFW-QOeEEeOqBOMhgDlycQ">
        <body>This template represents planned alterations of the patient's physical condition. Examples of such procedures are tracheostomy, knee replacement, and craniectomy. The priority of the procedure to the patient and provider is communicated through Priority Preference. The effectiveTime indicates the time when the procedure is intended to take place and authorTime indicates when the documentation of the plan occurred. The Planned Procedure Template may also indicate the potential insurance coverage for the procedure.</body>
      </ownedComment>
      <ownedRule xmi:id="_Nh6p4OeGEeOqBOMhgDlycQ" name="PlannedProcedure2CodeFromLoincOrSnomed">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Nh6p4eeGEeOqBOMhgDlycQ">
          <language>OCL</language>
          <body>(not code.oclIsUndefined() and code.isNullFlavorUndefined()) implies (code.codeSystem = '2.16.840.1.113883.6.1' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_N6e64OeGEeOqBOMhgDlycQ" name="PlannedProcedure2CodeFromCptOrIcd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_N6e64eeGEeOqBOMhgDlycQ">
          <language>OCL</language>
          <body>(not code.oclIsUndefined() and code.isNullFlavorUndefined()) implies (code.codeSystem = '2.16.840.1.113883.6.12' or code.codeSystem = '2.16.840.1.113883.6.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_nAaxMOgNEeO-iJTuAv7BKQ" name="PlannedProcedure2Instruction2InversionInd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_nAaxMegNEeO-iJTuAv7BKQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w3pX4N6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureTemplateId" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w3p-8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.41' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w34BYN6jEee0kIKIEebuqA" name="PlanOfCareActivityProcedureMoodCode" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w34BYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentProcedureMood) and &#xD;
let value : vocab::x_DocumentProcedureMood = self.moodCode.oclAsType(vocab::x_DocumentProcedureMood) in &#xD;
value = vocab::x_DocumentProcedureMood::INT or value = vocab::x_DocumentProcedureMood::ARQ or value = vocab::x_DocumentProcedureMood::PRMS or value = vocab::x_DocumentProcedureMood::PRP or value = vocab::x_DocumentProcedureMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w4o2YN6jEee0kIKIEebuqA" name="PlannedProcedure2Code" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w4o2Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w4tu4N6jEee0kIKIEebuqA" name="PlannedProcedure2StatusCode" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w4uV8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w41qsN6jEee0kIKIEebuqA" name="PlannedProcedure2StatusCodeP" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w41qsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w48YYN6jEee0kIKIEebuqA" name="PlannedProcedure2EffectiveTime" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w48YYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w5B38N6jEee0kIKIEebuqA" name="PlannedProcedure2MethodCode" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w5B38d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (not self.methodCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w5ys8N6jEee0kIKIEebuqA" name="PlannedProcedure2TargetSiteCodeP" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w5ys8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w5JMsN6jEee0kIKIEebuqA" name="PlannedProcedure2TargetSiteCode" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w5JMsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w60nsN6jEee0kIKIEebuqA" name="PlannedProcedure2Performer" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w60nsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w7U-AN6jEee0kIKIEebuqA" name="PlannedProcedure2AuthorParticipation" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w7U-Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w7yRAN6jEee0kIKIEebuqA" name="PlannedProcedure2PriorityPreference" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w7yRAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w8T1cN6jEee0kIKIEebuqA" name="PlannedProcedure2Indication2" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w8T1cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w82oAN6jEee0kIKIEebuqA" name="PlannedProcedure2Instruction2" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w82oAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w9bPwN6jEee0kIKIEebuqA" name="PlannedProcedure2PlannedCoverage" constrainedElement="_cs0YsOeEEeOqBOMhgDlycQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w9bPwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedCoverage) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_cs0YseeEEeOqBOMhgDlycQ" general="_2NiSKhSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_w7y4EN6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_w7y4E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w7y4E96jEee0kIKIEebuqA" name="body" constrainedElement="_w7y4EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w7y4FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w7y4Ed6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w7y4Et6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w8UcgN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_w8Ucg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w8Ucg96jEee0kIKIEebuqA" name="body" constrainedElement="_w8UcgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w8UchN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w8Ucgd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w8Ucgt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w83PEN6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_w83PE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w83PE96jEee0kIKIEebuqA" name="body" constrainedElement="_w83PEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w83PFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w83PEd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w83PEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_w9bPwt6jEee0kIKIEebuqA" name="getPlannedCoverages" bodyCondition="_w9b20t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_w9b20t6jEee0kIKIEebuqA" name="body" constrainedElement="_w9bPwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_w9b2096jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedCoverage)).oclAsType(consol::PlannedCoverage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_w9b20N6jEee0kIKIEebuqA" type="_O2I3AI9DEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w9b20d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Yj45YOgREeO-iJTuAv7BKQ" name="PlannedMedicationActivity2">
      <ownedComment xmi:id="_lNwj8OgREeO-iJTuAv7BKQ">
        <body>This template represents planned medication activities. The priority of the medication activity to the patient and provider is communicated through Priority Preference. The effectiveTime indicates the time when the medication activity is intended to take place. The authorTime indicates when the documentation of the plan occurred.</body>
      </ownedComment>
      <ownedRule xmi:id="_Uj1l4GDIEeaVKMeiBlPhjw" name="PlannedMedicationActivity2EffectiveTimeIVLTSorTS">
        <ownedComment xmi:id="_Uj1l4WDIEeaVKMeiBlPhjw">
          <body>This effectiveTime represents either the medication duration (i.e., the time the medication should be started and stopped) or the timestamp when the single-administration should occur.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Uj1l4mDIEeaVKMeiBlPhjw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->size() = 1 xor self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::SXCM_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_X-Mz8GDIEeaVKMeiBlPhjw" name="PlannedMedicationActivity2EffectiveTimeIVLTSLow">
        <ownedComment xmi:id="_X-Mz8WDIEeaVKMeiBlPhjw">
          <body>Note: indicates when medication started</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_X-Mz8mDIEeaVKMeiBlPhjw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).low->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_aRwyAGDIEeaVKMeiBlPhjw" name="PlannedMedicationActivity2EffectiveTimeIVLTSHigh">
        <ownedComment xmi:id="_aRwyAWDIEeaVKMeiBlPhjw">
          <body>Note: indicates when medication stopped</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_aRwyAmDIEeaVKMeiBlPhjw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fHhAAGDIEeaVKMeiBlPhjw" name="PlannedMedicationActivity2EffectiveTimeIVLTSLowXorValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_fHhAAWDIEeaVKMeiBlPhjw">
          <language>OCL</language>
          <body>( self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::IVL_TS))->forAll( eff | eff.oclAsType(datatypes::IVL_TS).low->size() = 1) )  and  ( self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::SXCM_TS))->forAll( eff | eff.oclAsType(datatypes:: SXCM_TS).value->size() = 1 or eff.oclAsType(datatypes::SXCM_TS).isNullFlavorDefined()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cyRm8GDIEeaVKMeiBlPhjw" name="PlannedMedicationActivity2EffectiveTimePIVLTS">
        <ownedComment xmi:id="_cyRm8WDIEeaVKMeiBlPhjw">
          <body>Note: This effectiveTime represents the ordered medication frequency (e.g.,times to be administered per day).</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_cyRm8mDIEeaVKMeiBlPhjw">
          <language>OCL</language>
          <body>self.effectiveTime->select(ef | ef.oclIsTypeOf(datatypes::PIVL_TS) or ef.oclIsTypeOf(datatypes::EIVL_TS))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w9cd4N6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationTemplateId" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w9cd4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.42' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w9ndAN6jEee0kIKIEebuqA" name="PlanOfCareActivitySubstanceAdministrationMoodCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w9ndAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::INT or value = vocab::x_DocumentSubstanceMood::PRMS or value = vocab::x_DocumentSubstanceMood::PRP or value = vocab::x_DocumentSubstanceMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w-NS4N6jEee0kIKIEebuqA" name="PlannedMedicationActivity2StatusCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w-NS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w-UAkN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2StatusCodeP" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w-UAkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w-aHMN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2RepeatNumber" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w-aHMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w_ByQN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2RouteCodeP" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w_ByQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w-e_sN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2RouteCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w-e_sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xAJMkN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2ApproachSiteCodeP" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xAJMkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.approachSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_w_maAN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2ApproachSiteCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_w_maAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xArYEN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2DoseQuantity" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xArYEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xAt0UN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2RateQuantity" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xAt0Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.rateQuantity.oclIsUndefined() or self.rateQuantity.isNullFlavorUndefined()) implies (not self.rateQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xAwQkN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2MaxDoseQuantity" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xAwQkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.maxDoseQuantity.oclIsUndefined() or self.maxDoseQuantity.isNullFlavorUndefined()) implies (not self.maxDoseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xBWtgN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2AdministrationUnitCodeP" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xBWtgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xA1JEN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2AdministrationUnitCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xA1JEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.85' and (value.code = 'APPFUL' or value.code = 'DROP' or value.code = 'NDROP' or value.code = 'OPDROP' or value.code = 'ORDROP' or value.code = 'OTDROP' or value.code = 'PUFF' or value.code = 'SCOOP' or value.code = 'SPRY'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xChLIN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2Performer" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xChLId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xDATUN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2AuthorParticipation" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xDATUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xDe0cN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2PriorityPreference" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xDe0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xD9VkN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2Indication2" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xD98oN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xEdE0N6jEee0kIKIEebuqA" name="PlannedMedicationActivity2Instruction2" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xEdE0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xE-pQN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2Consumable" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xE-pQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_14SAMN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2Precondition" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_14SAMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(cda::Precondition))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_53JCcN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2IVLPQdoseQuantityUnit" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_53JCcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.doseQuantity->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not unit.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_53KQkN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2IVLPQrateQuantityUnit" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_53KQkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.doseQuantity->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not unit.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_53pYwN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2ConsumableMedicationInformation2" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_53pYwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(consol::MedicationInformation2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_54DBYN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2PreconditionTypeCode" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_54DBYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_54DocN6jEee0kIKIEebuqA" name="PlannedMedicationActivity2PreconditionPreconditionForSubstanceAdministration2" constrainedElement="_Yj45YOgREeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_54Docd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.precondition->excluding(null)->reject(criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(consol::PreconditionForSubstanceAdministration2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Yj5gcOgREeO-iJTuAv7BKQ" general="_2NoYwxSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xDfbgN6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_xDfbg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xDfbg96jEee0kIKIEebuqA" name="body" constrainedElement="_xDfbgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xDfbhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xDfbgd6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xDfbgt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xD98od6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_xD98pN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xD98pN6jEee0kIKIEebuqA" name="body" constrainedElement="_xD98od6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xD98pd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xD98ot6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xD98o96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xEdr4N6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_xEdr496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xEdr496jEee0kIKIEebuqA" name="body" constrainedElement="_xEdr4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xEdr5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xEdr4d6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xEdr4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_vEd1cOg0EeO-iJTuAv7BKQ" name="PlannedSupply2">
      <ownedComment xmi:id="_GOfFAOg1EeO-iJTuAv7BKQ">
        <body>This template represents both medicinal and non-medicinal supplies ordered, requested, or intended for the patient (e.g., medication prescription, order for wheelchair). The importance of the supply order or request to the patient and provider may be indicated in the Priority Preference. &#xD;
The effective time indicates the time when the supply is intended to take place and author time indicates when the documentation of the plan occurred. The Planned Supply template may also indicate the potential insurance coverage for the procedure. &#xD;
Depending on the type of supply, the product or participant will be either a Medication Information product (medication), an Immunization Medication Information product (immunization), or a Product Instance participant (device/equipment).</body>
      </ownedComment>
      <ownedRule xmi:id="_7c0tsOg-EeO-iJTuAv7BKQ" name="PlannedSupply2MedInfoXorImmunXorProductInstance">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7bs24Og_EeO-iJTuAv7BKQ">
          <language>OCL</language>
          <body>( (not product.oclIsUndefined() or participant->size() > 0) and ( (product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2)) or (product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)) or (participant.participantRole->select(oclIsTypeOf(consol::ProductInstance))->size() = 1) )) implies ( (product.manufacturedProduct.oclIsTypeOf(consol::MedicationInformation2)) xor (product.manufacturedProduct.oclIsTypeOf(consol::ImmunizationMedicationInformation2)) xor (participant.participantRole->select(oclIsTypeOf(consol::ProductInstance))->size() = 1) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xE_3YN6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyTemplateId" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xE_3Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.43' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xFFW8N6jEee0kIKIEebuqA" name="PlanOfCareActivitySupplyMoodCode" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xFFW8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::INT or value = vocab::x_DocumentSubstanceMood::PRMS or value = vocab::x_DocumentSubstanceMood::PRP or value = vocab::x_DocumentSubstanceMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xFqlwN6jEee0kIKIEebuqA" name="PlannedSupply2StatusCode" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xFqlwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xFwFUN6jEee0kIKIEebuqA" name="PlannedSupply2StatusCodeP" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xFwFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xF0WwN6jEee0kIKIEebuqA" name="PlannedSupply2EffectiveTime" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xF0Wwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (( not self.effectiveTime->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xF4BIN6jEee0kIKIEebuqA" name="PlannedSupply2RepeatNumber" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xF4BId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xF7rgN6jEee0kIKIEebuqA" name="PlannedSupply2Quantity" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xF7rgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xGeeEN6jEee0kIKIEebuqA" name="PlannedSupply2Product" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xGeeEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.product->one(product : cda::Product | not product.oclIsUndefined() and product.oclIsKindOf(cda::Product))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xHa5QN6jEee0kIKIEebuqA" name="PlannedSupply2Performer" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xHa5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xH5aYN6jEee0kIKIEebuqA" name="PlannedSupply2AuthorParticipation" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xH5aYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xIZwsN6jEee0kIKIEebuqA" name="PlannedSupply2ProductInstance" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xIZwsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ProductInstance))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xI444N6jEee0kIKIEebuqA" name="PlannedSupply2PriorityPreference" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xI444d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xJYBEN6jEee0kIKIEebuqA" name="PlannedSupply2Indication2" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xJYBEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xJ2iMN6jEee0kIKIEebuqA" name="PlannedSupply2Instruction2" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xJ2iMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xKVqYN6jEee0kIKIEebuqA" name="PlannedSupply2PlannedCoverage" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xKVqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedCoverage) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2VReMN6jEee0kIKIEebuqA" name="PlannedSupply2ProductRecommended" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2VSFQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.product->one(product : cda::Product | not product.oclIsUndefined() and product.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_542SoN6jEee0kIKIEebuqA" name="PlannedSupply2ProductManufacturedProductMedInfo2XorImmunMedInfo2" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_542Sod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.product->excluding(null).manufacturedProduct->excluding(null)->reject(oclIsTypeOf(consol::MedicationInformation2) xor oclIsTypeOf(consol::ImmunizationMedicationInformation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5425sN6jEee0kIKIEebuqA" name="PlannedSupply2ProductManufacturedProduct" constrainedElement="_vEd1cOg0EeO-iJTuAv7BKQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5425sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.product->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(cda::ManufacturedProduct)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_vEecgOg0EeO-iJTuAv7BKQ" general="_2NoY5BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xIaXwN6jEee0kIKIEebuqA" name="getProductInstance" bodyCondition="_xIaXw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xIaXw96jEee0kIKIEebuqA" name="body" constrainedElement="_xIaXwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xIaXxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ProductInstance))->asSequence()->any(true).oclAsType(consol::ProductInstance)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xIaXwd6jEee0kIKIEebuqA" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xIaXwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xI5f8N6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_xI5f896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xI5f896jEee0kIKIEebuqA" name="body" constrainedElement="_xI5f8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xI5f9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xI5f8d6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xI5f8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xJYoIN6jEee0kIKIEebuqA" name="getIndication2s" bodyCondition="_xJYoI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xJYoI96jEee0kIKIEebuqA" name="body" constrainedElement="_xJYoIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xJYoJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xJYoId6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xJYoIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xJ3JQN6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_xJ3JQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xJ3JQ96jEee0kIKIEebuqA" name="body" constrainedElement="_xJ3JQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xJ3JRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xJ3JQd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xJ3JQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xKVqYt6jEee0kIKIEebuqA" name="getPlannedCoverages" bodyCondition="_xKWRcd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xKWRcd6jEee0kIKIEebuqA" name="body" constrainedElement="_xKVqYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xKWRct6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedCoverage)).oclAsType(consol::PlannedCoverage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xKVqY96jEee0kIKIEebuqA" type="_O2I3AI9DEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xKWRcN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Q0ODkOwlEeOqa975IP2wug" name="PolicyActivity2">
      <ownedComment xmi:id="_eTN_UOwlEeOqa975IP2wug">
        <body>A policy activity represents the policy or program providing the coverage. The person for whom payment is being provided (i.e., the patient) is the covered party. The subscriber of the policy or program is represented as a participant that is the holder of the coverage. The payer is represented as the performer of the policy activity.</body>
      </ownedComment>
      <ownedRule xmi:id="_xKW4gN6jEee0kIKIEebuqA" name="PolicyActivityTemplateId" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xKW4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.61' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xK_xsN6jEee0kIKIEebuqA" name="PolicyActivityCodeP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xK_xsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xKeNQN6jEee0kIKIEebuqA" name="PolicyActivityCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xKeNQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '12' or value.code = '13' or value.code = '14' or value.code = '15' or value.code = '16' or value.code = '41' or value.code = '42' or value.code = '43' or value.code = '47' or value.code = 'AP' or value.code = 'C1' or value.code = 'CO' or value.code = 'CP' or value.code = 'D' or value.code = 'DB' or value.code = 'EP' or value.code = 'FF' or value.code = 'GP' or value.code = 'HM' or value.code = 'HN' or value.code = 'HS' or value.code = 'IN' or value.code = 'IP' or value.code = 'LC' or value.code = 'LD' or value.code = 'LI' or value.code = 'LT' or value.code = 'MA' or value.code = 'MB' or value.code = 'MC' or value.code = 'MH' or value.code = 'MI' or value.code = 'MP' or value.code = 'OT' or value.code = 'PE' or value.code = 'PL' or value.code = 'PP' or value.code = 'PR' or value.code = 'PS' or value.code = 'QM' or value.code = 'RP' or value.code = 'SP' or value.code = 'TF' or value.code = 'WC' or value.code = 'WU')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xLsVQN6jEee0kIKIEebuqA" name="PolicyActivityStatusCodeP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xLsVQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xLkZcN6jEee0kIKIEebuqA" name="PolicyActivityStatusCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xLkZcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xOUygN6jEee0kIKIEebuqA" name="PolicyActivityPayer" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xOUygd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->select(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xPTC4N6jEee0kIKIEebuqA" name="PolicyActivityGuarantor" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xPTC4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->select(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xQTvgN6jEee0kIKIEebuqA" name="PolicyActivityCoverage" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xQUWkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))->select(typeCode=vocab::ParticipationType::COV)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_55yGwN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_55yGwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_55zU4N6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_55zU4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_55z78N6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_55z78d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_550jAN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_550jAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_551KEN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_551KEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_551xIN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_551xId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_552_QN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_552_Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_553mUN6jEee0kIKIEebuqA" name="PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_553mUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_554NYN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityAddr" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_554NYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5540cN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntityTelecom" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5540cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87')).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_555bgN6jEee0kIKIEebuqA" name="PolicyActivityPayerTemplateId" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_555bgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_556CkN6jEee0kIKIEebuqA" name="PolicyActivityPayerPayerAssignedEntity" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_556Ckd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.87'))->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56vJAN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56vJAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ( streetAddressLine->size() >=1 and streetAddressLine->size() &lt;=4))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56vwEN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56vwEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(vocab::PostalAddressUse) and &#xD;
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in &#xD;
value = vocab::PostalAddressUse::BAD or value = vocab::PostalAddressUse::DIR or value = vocab::PostalAddressUse::H or value = vocab::PostalAddressUse::HP or value = vocab::PostalAddressUse::HV or value = vocab::PostalAddressUse::PHYS or value = vocab::PostalAddressUse::PST or value = vocab::PostalAddressUse::PUB or value = vocab::PostalAddressUse::TMP or value = vocab::PostalAddressUse::WP) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56w-MN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56w-Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (( not use->isEmpty())  )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56xlQN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56xlQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((country->isEmpty() or country->exists(element | element.isNullFlavorUndefined())) implies (( not country->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56yzYN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56yzYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((state->isEmpty() or state->exists(element | element.isNullFlavorUndefined())) implies (( not state->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_56zacN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_56zacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((city->isEmpty() or city->exists(element | element.isNullFlavorUndefined())) implies (city->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_560BgN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_560Bgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((postalCode->isEmpty() or postalCode->exists(element | element.isNullFlavorUndefined())) implies (( not postalCode->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_561PoN6jEee0kIKIEebuqA" name="PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_561Pod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null).addr->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((streetAddressLine->isEmpty() or streetAddressLine->exists(element | element.isNullFlavorUndefined())) implies (( not streetAddressLine->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5612sN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityCodeP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5612sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_562dwN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_562dwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.code = 'GUAR' and value.codeSystem = '2.16.840.1.113883.5.110'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_563E0N6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityAddr" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_563E0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_563r4N6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntityTelecom" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_563r4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88')).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_564S8N6jEee0kIKIEebuqA" name="PolicyActivityGuarantorTemplateId" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_564S8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5646AN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorTypeCode" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5646Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_565hEN6jEee0kIKIEebuqA" name="PolicyActivityGuarantorGuarantorAssignedEntity" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_565hEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->select(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.88'))->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58ElwN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntityDateOfBirthInSDTCbirthTime" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58Elwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58FM0N6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58FM0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).playingEntity->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58FM0t6jEee0kIKIEebuqA" name="PolicyActivity2CoverageCoverageRoleCoveragePlayingEntitySDTCBirthTime" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58FM096jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null).playingEntity->excluding(null)->reject((sDTCBirthTime.oclIsUndefined() or sDTCBirthTime.isNullFlavorUndefined()) implies (not sDTCBirthTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58Fz4N6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleId" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58Fz4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58Ga8N6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntity" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58Ga8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58HCAN6jEee0kIKIEebuqA" name="PolicyActivityCoverageTemplateId" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58HCAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.89'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58IQIN6jEee0kIKIEebuqA" name="PolicyActivityCoverageCoverageRole" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58IQId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode=vocab::ParticipationType::COV)->select(typeCode=vocab::ParticipationType::COV)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58jt8N6jEee0kIKIEebuqA" name="PolicyActivity2CDTranslation" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58jt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty() and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.3.221.5' and not value.code.oclIsUndefined())) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_58kVAN6jEee0kIKIEebuqA" name="PolicyActivity2CDTranslationP" constrainedElement="_Q0ODkOwlEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_58kVAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (( not translation->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Q0P4wOwlEeOqa975IP2wug" general="_PZBdMBUlEeGvPruliC3crg"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="__SgUwOwuEeOqa975IP2wug" name="PostprocedureDiagnosis2">
      <ownedComment xmi:id="_Lz0gQOwvEeOqa975IP2wug">
        <body>This template represents the diagnosis or diagnoses discovered or confirmed during the procedure. They may be the same as preprocedure diagnoses or indications.</body>
      </ownedComment>
      <ownedRule xmi:id="_xRYGgN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisTemplateId" constrainedElement="__SgUwOwuEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRYGgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.51' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xRh3gN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisCodeP" constrainedElement="__SgUwOwuEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRh3gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xRbw4N6jEee0kIKIEebuqA" name="PostprocedureDiagnosisCode" constrainedElement="__SgUwOwuEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRbw4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yHqOQN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisProblemObservation" constrainedElement="__SgUwOwuEeOqa975IP2wug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yHqOQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__SgUwewuEeOqa975IP2wug" general="_0fjXAEEvEeGdmoWy_aLP0Q"/>
      <ownedOperation xmi:id="_yHqOQt6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yHqORd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yHqORd6jEee0kIKIEebuqA" name="body" constrainedElement="_yHqOQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yHqORt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yHqOQ96jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yHqORN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_5l3g0OzYEeOnE-G4kptBiw" name="PreoperativeDiagnosis2">
      <ownedComment xmi:id="_JXHzEOzZEeOnE-G4kptBiw">
        <body>This template represents the surgical diagnosis or diagnoses assigned to the patient before the surgical procedure and is the reason for the surgery. The preoperative diagnosis is, in the opinion of the surgeon, the diagnosis that will be confirmed during surgery.</body>
      </ownedComment>
      <ownedRule xmi:id="_xRnXEN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisTemplateId" constrainedElement="_5l3g0OzYEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRnXEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.65' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xRxIEN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisCodeP" constrainedElement="_5l3g0OzYEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRxvIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xRrBcN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisCode" constrainedElement="_5l3g0OzYEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xRrBcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yIIvYN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisProblemObservation" constrainedElement="_5l3g0OzYEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yIIvYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_5l4H4OzYEeOnE-G4kptBiw" general="_0baBYEEwEeGdmoWy_aLP0Q"/>
      <ownedOperation xmi:id="_yIIvYt6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yIJWct6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yIJWct6jEee0kIKIEebuqA" name="body" constrainedElement="_yIIvYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yIJWc96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yIJWcN6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yIJWcd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_y5C8IOzbEeOnE-G4kptBiw" name="ProblemConcernAct2">
      <ownedComment xmi:id="_-7idoOzbEeOnE-G4kptBiw">
        <body>&lt;p>&#xD;
This template reflects an ongoing concern on behalf of the provider that placed the concern on a patient's problem list. So long as the underlying condition is of concern to the provider (i.e., as long as the condition, whether active or resolved, is of ongoing concern and interest to the provider), the statusCode is &quot;active&quot;. Only when the underlying condition is no longer of concern is the statusCode set to &quot;completed&quot;. The effectiveTime reflects the time that the underlying condition was felt to be a concern; it may or may not correspond to the effectiveTime of the condition (e.g., even five years later, the clinician may remain concerned about a prior heart attack).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The statusCode of the Problem Concern Act is the definitive indication of the status of the concern, whereas the effectiveTime of the nested Problem Observation is the definitive indication of whether or not the underlying condition is resolved.&#xD;
&lt;/p>&#xD;
The effectiveTime/low of the Problem Concern Act asserts when the concern became active. This equates to the time the concern was authored in the patient's chart. The effectiveTime/high asserts when the concern was completed (e.g., when the clinician deemed there is no longer any need to track the underlying condition).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Problem Concern Act can contain many Problem Observations (templateId 2.16.840.1.113883.10.20.22.4.4). Each Problem Observation is a discrete observation of a condition, and therefore will have a statusCode of &quot;completed&quot;. The many Problem Observations nested under a Problem Concern Act reflect the change in the clinical understanding of a condition over time. For instance, a Concern may initially contain a Problem Observation of &quot;chest pain&quot;:&#xD;
&lt;ul>&#xD;
&lt;li>Problem Concern 1&lt;/li>&#xD;
&lt;ul>&lt;li>Problem Observation: Chest Pain&lt;/li>&lt;/ul>&#xD;
&lt;/ul>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Later, a new Problem Observation of &quot;esophagitis&quot; will be added, reflecting a better understanding of the nature of the chest pain. The later problem observation will have a more recent author time stamp.&#xD;
&lt;ul>&#xD;
&lt;li>Problem Concern 1&lt;/li>&#xD;
&lt;ul>&#xD;
&lt;li>Problem Observation (author/time Jan 3, 2012): Chest Pain&lt;/li>&#xD;
&lt;li>Problem Observation (author/time Jan 6, 2012): Esophagitis&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/ul>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Many systems display the nested Problem Observation with the most recent author time stamp, and provide a mechanism for viewing prior observations.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_cNUOQOzfEeOnE-G4kptBiw" name="ProblemConcernActEffectiveTimeLow">
        <ownedComment xmi:id="_yLR6YOzfEeOnE-G4kptBiw">
          <body>Note: The effectiveTime/low asserts when the concern became active. This equates to the time the concern was authored in the patient's chart.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_cNUOQezfEeOnE-G4kptBiw">
          <language>OCL</language>
          <body>not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cnoLsOzfEeOnE-G4kptBiw" name="ProblemConcernActEffectiveTimeHigh">
        <ownedComment xmi:id="_vLAnUOzfEeOnE-G4kptBiw">
          <body>Note: The effectiveTime/high asserts when the concern was completed (e.g., when the clinician deemed there is no longer any need to track the underlying condition).</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_cnoLsezfEeOnE-G4kptBiw">
          <language>OCL</language>
          <body>not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xR2noN6jEee0kIKIEebuqA" name="ProblemConcernActTemplateId" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xR2nod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.3' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xSfg0N6jEee0kIKIEebuqA" name="ProblemConcernActStatusCodeP" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xSfg0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xR8uQN6jEee0kIKIEebuqA" name="ProblemConcernActStatusCode" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xR8uQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xTDhgN6jEee0kIKIEebuqA" name="ProblemConcernActEffectiveTime" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xTDhgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xTQV0N6jEee0kIKIEebuqA" name="ProblemConcernActCodeP" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xTQV0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xTJBEN6jEee0kIKIEebuqA" name="ProblemConcernActCode" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xTJBEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'CONC' and value.codeSystem = '2.16.840.1.113883.5.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xT6dIN6jEee0kIKIEebuqA" name="ProblemConcernAct2AuthorParticipation" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xT6dId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xUcooN6jEee0kIKIEebuqA" name="ProblemConcernAct2PriorityPreference" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xUcood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yIoeoN6jEee0kIKIEebuqA" name="ProblemConcernActProblemObservation" constrainedElement="_y5C8IOzbEeOnE-G4kptBiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yIpFsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_y5C8IezbEeOnE-G4kptBiw" general="_2H6yUBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xUdPsN6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_xUdPs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xUdPs96jEee0kIKIEebuqA" name="body" constrainedElement="_xUdPsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xUdPtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xUdPsd6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xUdPst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yIpFsd6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yIpFtN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yIpFtN6jEee0kIKIEebuqA" name="body" constrainedElement="_yIpFsd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yIpswN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yIpFst6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yIpFs96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_prDAkPDCEeOKPKE9au0oug" name="ProblemObservation2">
      <ownedComment xmi:id="_xAdH4PDCEeOKPKE9au0oug">
        <body>&lt;p>&#xD;
This template reflects a discrete observation about a patient's problem. Because it is a discrete observation, it will have a statusCode of &quot;completed&quot;. The effectiveTime, also referred to as the &quot;biologically relevant time&quot; is the time at which the observation holds for the patient. For a provider seeing a patient in the clinic today, observing a history of heart attack that occurred five years ago, the effectiveTime is five years ago.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The effectiveTime of the Problem Observation is the definitive indication of whether or not the underlying condition is resolved. If the problem is known to be resolved, then an effectiveTime/high would be present. If the date of resolution is not known, then effectiveTime/high will be present with a nullFlavor of &quot;UNK&quot;.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_SPweoMm6EeSr1c1X9ACWbg" name="ProblemObservationHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SPweocm6EeSr1c1X9ACWbg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_YW_ioMm6EeSr1c1X9ACWbg" name="ProblemObservationTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YW_iocm6EeSr1c1X9ACWbg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ZYmJkMm6EeSr1c1X9ACWbg" name="ProblemObservationHasTextReferenceValue" constrainedElement="_vaH7gCBEEeG938evaWkvcA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZYmJkcm6EeSr1c1X9ACWbg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_8_sPIPDEEeOKPKE9au0oug" name="ProblemObservationHasOnsetDate">
        <ownedComment xmi:id="_8_sPIfDEEeOKPKE9au0oug">
          <body>The effectiveTime/low (a.k.a. &quot;onset date&quot;) asserts when the condition became biologically active.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_8_sPIvDEEeOKPKE9au0oug">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_9fzSkPDEEeOKPKE9au0oug" name="ProblemObservationHasResolutionDate">
        <ownedComment xmi:id="_9fzSkfDEEeOKPKE9au0oug">
          <body>The effectiveTime/high (a.k.a. &quot;resolution date&quot;) asserts when the condition became biologically resolved.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_9fzSkvDEEeOKPKE9au0oug">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_eMSAwPDOEeOKPKE9au0oug" name="ProblemObservationValueNullFlavor">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_eMSAwfDOEeOKPKE9au0oug">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3n3DQPDOEeOKPKE9au0oug" name="ProblemObservationValueNullFlavorUnknown">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3n3DQvDOEeOKPKE9au0oug">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xVnGQN6jEee0kIKIEebuqA" name="ProblemObservationTemplateId" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xVnGQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.4' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xV6BMN6jEee0kIKIEebuqA" name="ProblemObservationNegationInd" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xV6BMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xWDLIN6jEee0kIKIEebuqA" name="ProblemObservationEffectiveTime" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xWDyMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xWzZEN6jEee0kIKIEebuqA" name="ProblemObservationValueP" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xWzZEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xWLG8N6jEee0kIKIEebuqA" name="ProblemObservationValue" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xWLG8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xYDWQN6jEee0kIKIEebuqA" name="ProblemObservationCodeP" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xYDWQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xXf8oN6jEee0kIKIEebuqA" name="ProblemObservationCode" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xXf8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '404684003' or value.code = '409586006' or value.code = '282291009' or value.code = '64572001' or value.code = '248536006' or value.code = '418799008' or value.code = '55607006' or value.code = '373930000'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xYlhwN6jEee0kIKIEebuqA" name="ProblemObservationText" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xYlhwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xYy9IN6jEee0kIKIEebuqA" name="ProblemObservationStatusCodeP" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xYy9Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xYrBUN6jEee0kIKIEebuqA" name="ProblemObservationStatusCode" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xYrBUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xaipkN6jEee0kIKIEebuqA" name="ProblemObservation2PrognosisObservation" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xaipkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PrognosisObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xbBxwN6jEee0kIKIEebuqA" name="ProblemObservation2PriorityPreference" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xbBxwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xbhhAN6jEee0kIKIEebuqA" name="ProblemObservation2AuthorParticipation" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xbhhAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xcDFcN6jEee0kIKIEebuqA" name="ProblemObservationHealthStatusObservation" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xcDFcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2VtjEN6jEee0kIKIEebuqA" name="ProblemObservationProblemStatus" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2VtjEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemStatus) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_59T74N6jEee0kIKIEebuqA" name="ProblemObservation2CDQualifier" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_59T74d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((qualifier->isEmpty() or qualifier->exists(element | element.isNullFlavorUndefined())) implies (not qualifier->isEmpty()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_59Ui8N6jEee0kIKIEebuqA" name="ProblemObservation2CDCode" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_59Ui8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not code.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_59xO4N6jEee0kIKIEebuqA" name="ProblemObservation2CDCodeTranslation" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_59x18N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty() and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '75326-9' or value.code = '75325-1' or value.code = '75324-4' or value.code = '75323-6' or value.code = '29308-4' or value.code = '75322-8' or value.code = '75275-8' or value.code = '75321-0' or value.code = '75319-4' or value.code = '75318-6' or value.code = '75317-8' or value.code = '75316-0' or value.code = '75315-2' or value.code = '75314-5' or value.code = '75313-7' or value.code = '75312-9'))) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_59x18d6jEee0kIKIEebuqA" name="ProblemObservation2CDCodeTranslationP" constrainedElement="_prDAkPDCEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_59x18t6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (( not translation->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_prGD4PDCEeOKPKE9au0oug" general="_5Ha7ABUyEeGbmN_W114JUw"/>
      <ownedOperation xmi:id="_xaipkt6jEee0kIKIEebuqA" name="getPrognosisObservation" bodyCondition="_xaipld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xaipld6jEee0kIKIEebuqA" name="body" constrainedElement="_xaipkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xaiplt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PrognosisObservation))->asSequence()->any(true).oclAsType(consol::PrognosisObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xaipk96jEee0kIKIEebuqA" type="_GXlxYJmLEeOeSLwbllPCyw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xaiplN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xbBxwt6jEee0kIKIEebuqA" name="getPriorityPreferences" bodyCondition="_xbBxxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xbBxxd6jEee0kIKIEebuqA" name="body" constrainedElement="_xbBxwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xbCY0N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xbBxw96jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xbBxxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xcDFct6jEee0kIKIEebuqA" name="getConsolHealthStatusObservation" bodyCondition="_xcDFdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xcDFdd6jEee0kIKIEebuqA" name="body" constrainedElement="_xcDFct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xcDFdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation))->asSequence()->any(true).oclAsType(consol::HealthStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xcDFc96jEee0kIKIEebuqA" type="_2ExXsBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xcDFdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2VuKIN6jEee0kIKIEebuqA" name="getConsolProblemStatus" bodyCondition="_2VuKI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2VuKI96jEee0kIKIEebuqA" name="body" constrainedElement="_2VuKIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2VuKJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemStatus))->asSequence()->any(true).oclAsType(consol::ProblemStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2VuKId6jEee0kIKIEebuqA" type="_SjN_8BUzEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2VuKIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_CFMuYPDbEeOKPKE9au0oug" name="ProcedureActivityAct2">
      <ownedComment xmi:id="_NivvwPDbEeOKPKE9au0oug">
        <body>This template represents any act that cannot be classified as an observation or procedure according to the HL7 RIM. Examples of these acts are a dressing change, teaching or feeding a patient, or providing comfort measures. &#xD;
The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g., splenectomy).</body>
      </ownedComment>
      <ownedRule xmi:id="_WdXkkPDfEeOKPKE9au0oug" name="ProcedureActivityActInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_WdXkkfDfEeOKPKE9au0oug">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vg8DQMnGEeSr1c1X9ACWbg" name="ProcedureActivityAct2CodeSuggestedCodeSystems">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vg8DQcnGEeSr1c1X9ACWbg">
          <language>OCL</language>
          <body>not code.oclIsUndefined() and self.code.isNullFlavorUndefined() implies self.code.codeSystem = '2.16.840.1.113883.6.12' or self.code.codeSystem = '2.16.840.1.113883.6.4' or self.code.codeSystem = '2.16.840.1.113883.6.13'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xcETkN6jEee0kIKIEebuqA" name="ProcedureActivityActTemplateId" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xcETkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.12' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xcLoUN6jEee0kIKIEebuqA" name="ProcedureActivityActMoodCode" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xcLoUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xc4L4N6jEee0kIKIEebuqA" name="ProcedureActivityActStatusCodeP" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xc4L4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xcSWAN6jEee0kIKIEebuqA" name="ProcedureActivityActStatusCode" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xcS9EN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xdczoN6jEee0kIKIEebuqA" name="ProcedureActivityActEffectiveTime" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xdczod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xeR6EN6jEee0kIKIEebuqA" name="ProcedureActivityActInstructions" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xeR6Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xey3cN6jEee0kIKIEebuqA" name="ProcedureActivityActIndication" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xey3cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xfT00N6jEee0kIKIEebuqA" name="ProcedureActivityActMedicationActivity" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xfT00d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2WIZ0N6jEee0kIKIEebuqA" name="ProcedureActivityActPerformer" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2WIZ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2XV6wN6jEee0kIKIEebuqA" name="ProcedureActivityAct2AuthorParticipation" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2XV6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_BMEN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_BMEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_BzIN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_BzId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null).representedOrganization->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_CaMN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_CaMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_CaMt6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_CaM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_DBQN6jEee0kIKIEebuqA" name="ProcedureActivityActProcedureActPerformerAssignedEntity" constrainedElement="_CFMuYPDbEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_DBQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_CFMuYfDbEeOKPKE9au0oug" general="_awdH4Bg4EeGs5a462vYX5Q"/>
      <ownedOperation xmi:id="_xeShIN6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_xeShI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xeShI96jEee0kIKIEebuqA" name="body" constrainedElement="_xeShIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xeShJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xeShId6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xeShIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xezegN6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_xezeg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xezeg96jEee0kIKIEebuqA" name="body" constrainedElement="_xezegN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xezehN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xezegd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xezegt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xfUb4N6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_xfUb496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xfUb496jEee0kIKIEebuqA" name="body" constrainedElement="_xfUb4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xfUb5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xfUb4d6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xfUb4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_QoLWAPDjEeOKPKE9au0oug" name="ProcedureActivityObservation2">
      <ownedComment xmi:id="_bm2DAPDjEeOKPKE9au0oug">
        <body>The common notion of procedure is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g., splenectomy). &#xD;
This template represents procedures that result in new information about the patient that cannot be classified as a procedure according to the HL7 RIM. Examples of these procedures are diagnostic imaging procedures, EEGs, and EKGs.</body>
      </ownedComment>
      <ownedRule xmi:id="_GUa08PDoEeOKPKE9au0oug" name="ProcedureActivityObservationInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GUa08fDoEeOKPKE9au0oug">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_eSEocMzEEeSLqosJ4F90vA" name="ProcedureActivityObservationCodeCodeSystems" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_eSEocczEEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' xor self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_YKs8oMw3EeS1kaU6ESW4Lg" name="ProcedureActivityObservation2CodeSuggestedCodeSystems">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_YKs8ocw3EeS1kaU6ESW4Lg">
          <language>OCL</language>
          <body>not code.oclIsUndefined() and self.code.isNullFlavorUndefined() implies self.code.codeSystem = '2.16.840.1.113883.6.12' or self.code.codeSystem = '2.16.840.1.113883.6.4' or self.code.codeSystem = '2.16.840.1.113883.6.13'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xfVC8N6jEee0kIKIEebuqA" name="ProcedureActivityObservationTemplateId" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xfVqAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.13' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xgA_cN6jEee0kIKIEebuqA" name="ProcedureActivityObservationTargetSiteCodeP" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xgBmgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xfeM4N6jEee0kIKIEebuqA" name="ProcedureActivityObservationTargetSiteCode" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xfeM4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xgoqgN6jEee0kIKIEebuqA" name="ProcedureActivityObservationMoodCode" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xgoqgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xhYRYN6jEee0kIKIEebuqA" name="ProcedureActivityObservationStatusCodeP" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xhYRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xgx0cN6jEee0kIKIEebuqA" name="ProcedureActivityObservationStatusCode" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xgx0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xh8SEN6jEee0kIKIEebuqA" name="ProcedureActivityObservationValue" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xh8SEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xiwKYN6jEee0kIKIEebuqA" name="ProcedureActivityObservationIndication" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xiwKYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xjRHwN6jEee0kIKIEebuqA" name="ProcedureActivityObservationMedicationActivity" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xjRHwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xjw3AN6jEee0kIKIEebuqA" name="ProcedureActivityObservationInstructions" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xjxeEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Xx_oN6jEee0kIKIEebuqA" name="ProcedureActivityObservationPerformer" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Xx_od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Yo7QN6jEee0kIKIEebuqA" name="ProcedureActivityObservation2AuthorParticipation" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Yo7Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2ZDK8N6jEee0kIKIEebuqA" name="ProcedureActivityObservation2ReactionObservation2" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ZDK8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5_K9EN6jEee0kIKIEebuqA" name="ProcedureActivityObservation2ANYNullFlavor" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5_LkIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.value->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (isDefined('nullFlavor') )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5__ccN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5__ccd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6AADgN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6AADgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6AAqkN6jEee0kIKIEebuqA" name="ProcedureActivityObservationProcedureObservationPerformerAssignedEntity" constrainedElement="_QoLWAPDjEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6AAqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_QoLWAfDjEeOKPKE9au0oug" general="_Aj7JkBg4EeGs5a462vYX5Q"/>
      <ownedOperation xmi:id="_xiwKYt6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_xiwKZd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xiwKZd6jEee0kIKIEebuqA" name="body" constrainedElement="_xiwKYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xiwKZt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xiwKY96jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xiwKZN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xjRu0N6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_xjRu096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xjRu096jEee0kIKIEebuqA" name="body" constrainedElement="_xjRu0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xjRu1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xjRu0d6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xjRu0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xjxeEd6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_xjyFId6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xjyFId6jEee0kIKIEebuqA" name="body" constrainedElement="_xjxeEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xjyFIt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xjxeEt6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xjyFIN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2ZDK8t6jEee0kIKIEebuqA" name="getReactionObservation2s" bodyCondition="_2ZDK9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2ZDK9d6jEee0kIKIEebuqA" name="body" constrainedElement="_2ZDK8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ZDK9t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2ZDK896jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ZDK9N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_fCVOQPDqEeOKPKE9au0oug" name="ProcedureActivityProcedure2">
      <ownedComment xmi:id="_mlXh4PDqEeOKPKE9au0oug">
        <body>The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM). Therefore procedure templates can be represented with various RIM classes: act (e.g., dressing change), observation (e.g., EEG), procedure (e.g., splenectomy). &#xD;
This template represents procedures whose immediate and primary outcome (post-condition) is the alteration of the physical condition of the patient. Examples of these procedures are an appendectomy, hip replacement, and a creation of a gastrostomy.????&#xD;
This template can be used with a contained Product Instance template to represent a device in or on a patient. In this case, targetSiteCode is used to record the location of the device in or on the patient's body. Equipment supplied to the patient (e.g., pumps, inhalers, wheelchairs) is represented by the Non-Medicinal Supply Activity (V2) template.</body>
      </ownedComment>
      <ownedRule xmi:id="_BIWmcPDtEeOKPKE9au0oug" name="ProcedureActivityProcedureInstructionsInversion">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_BIWmcfDtEeOKPKE9au0oug">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.act.oclIsTypeOf(consol::Instruction2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_UsOzwMy9EeSLqosJ4F90vA" name="ProcedureActivityProcedureCodeCodeSystems">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_UsOzwcy9EeSLqosJ4F90vA">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' xor self.code.codeSystem = '2.16.840.1.113883.6.96'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_oAf5wMy9EeSLqosJ4F90vA" name="ProcedureActivityProcedure2CodeSuggestedCodeSystems">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oAf5wcy9EeSLqosJ4F90vA">
          <language>OCL</language>
          <body>not code.oclIsUndefined() and self.code.isNullFlavorUndefined() implies self.code.codeSystem = '2.16.840.1.113883.6.12' or self.code.codeSystem = '2.16.840.1.113883.6.4' or self.code.codeSystem = '2.16.840.1.113883.6.13'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_VIxWEMzOEeSLqosJ4F90vA" name="ProcedureActivityProcedureServiceDeliveryLocationTypeCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VIxWEczOEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>self.participant->select(par : cda::Participant2 | par.participantRole.oclIsKindOf(consol::ServiceDeliveryLocation))->forAll(p : cda::Participant2 | p.typeCode=vocab::ParticipationType::LOC)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xjysMN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTemplateId" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xjzTQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.14' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xkgd4N6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTargetSiteCodeP" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xkhE8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (not self.targetSiteCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xj9EQN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureTargetSiteCode" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xj9EQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xlGTwN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureMoodCode" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xlGTwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentProcedureMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xlxCIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureStatusCodeP" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xlxCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xlOPkN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureStatusCode" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xlOPkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xm98AN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureIndication" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xm98Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::Indication2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xnhVoN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureMedicationActivity" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xnhVod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xoBr8N6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePatientInstruction" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xoBr8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xoiCQN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureSpecimen" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xoiCQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.specimen->exists(specimen : cda::Specimen | not specimen.oclIsUndefined() and specimen.oclIsKindOf(cda::Specimen))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2ZeowN6jEee0kIKIEebuqA" name="ProcedureActivityProcedurePerformer" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Zeowd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2aTIIN6jEee0kIKIEebuqA" name="ProcedureActivityProcedure2AuthorParticipation" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2aTIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2atX0N6jEee0kIKIEebuqA" name="ProcedureActivityProcedure2ReactionObservation2" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2atX0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6BOykN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6BOykd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (( not addr->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6BPZoN6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6BPZod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null).assignedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6BPZot6jEee0kIKIEebuqA" name="ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity" constrainedElement="_fCVOQPDqEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6BPZo96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_fCV1UPDqEeOKPKE9au0oug" general="_2OG58RSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xm-jEN6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_xm-jE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xm-jE96jEee0kIKIEebuqA" name="body" constrainedElement="_xm-jEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xm-jFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xm-jEd6jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xm-jEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xnh8sN6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_xnh8s96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xnh8s96jEee0kIKIEebuqA" name="body" constrainedElement="_xnh8sN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xnh8tN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xnh8sd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xnh8st6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xoCTAN6jEee0kIKIEebuqA" name="getConsolInstruction2" bodyCondition="_xoCTA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xoCTA96jEee0kIKIEebuqA" name="body" constrainedElement="_xoCTAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xoCTBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2))->asSequence()->any(true).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xoCTAd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xoCTAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2atX0t6jEee0kIKIEebuqA" name="getReactionObservation2s" bodyCondition="_2atX1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2atX1d6jEee0kIKIEebuqA" name="body" constrainedElement="_2atX0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2atX1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2atX096jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2atX1N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_U3yosPDxEeOKPKE9au0oug" name="ReactionObservation2">
      <ownedComment xmi:id="_clpsQPDxEeOKPKE9au0oug">
        <body>This clinical statement represents the response to an undesired symptom, finding, etc. due to administered or exposed substance. This reaction may be an undesired symptom, finding, etc. or it could be a desired response to a treatment. A reaction can be defined with respect to its severity, and can have been treated by one or more interventions.</body>
      </ownedComment>
      <ownedRule xmi:id="_v-bpYPDyEeOKPKE9au0oug" name="ReactionObservationCodeValueSet">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_v-bpYvDyEeOKPKE9au0oug">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_W4OqcPF1EeOmsLWmq5fnqQ" name="ReactionObservationProcedureActivityProcedureInversionInd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_W4OqcfF1EeOmsLWmq5fnqQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.procedure.oclIsTypeOf(consol::ProcedureActivityProcedure2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_KcqFIPF2EeOmsLWmq5fnqQ" name="ReactionObservationMedicationActivityInversionInd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_KcqFIfF2EeOmsLWmq5fnqQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.substanceAdministration.oclIsTypeOf(consol::MedicationActivity2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4djbEPijEeOXlK95I8tUew" name="ReactionObservationSeverityObservationInversionInd">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4djbEfijEeOXlK95I8tUew">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_GkKNYMzfEeSLqosJ4F90vA" name="ReactionObservationTextReference" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GkKNYczfEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_JDYB0MzfEeSLqosJ4F90vA" name="ReactionObservationTextReferenceValue" constrainedElement="_gBlYICKdEeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_JDYB0czfEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_K2vc4MzfEeSLqosJ4F90vA" name="ReactionObservationReferenceValue" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_K2vc4czfEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xojQYN6jEee0kIKIEebuqA" name="ReactionObservationTemplateId" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xojQYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.9' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xo6cwN6jEee0kIKIEebuqA" name="ReactionObservationCodeP" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xo6cwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xoxS0N6jEee0kIKIEebuqA" name="ReactionObservationCode" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xoxS0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xpCYkN6jEee0kIKIEebuqA" name="ReactionObservationId" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xpCYkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xpHREN6jEee0kIKIEebuqA" name="ReactionObservationText" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xpHREd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xpUFYN6jEee0kIKIEebuqA" name="ReactionObservationStatusCodeP" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xpUFYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xpMJkN6jEee0kIKIEebuqA" name="ReactionObservationStatusCode" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xpMJkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xp9loN6jEee0kIKIEebuqA" name="ReactionObservationProcedureActivityProcedure" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xp9lod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xqcGwN6jEee0kIKIEebuqA" name="ReactionObservationMedicationActivity" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xqct0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJI08N6jEee0kIKIEebuqA" name="ReactionObservationSeverityObservation" constrainedElement="_U3yosPDxEeOKPKE9au0oug">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJI08d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_U3yosfDxEeOKPKE9au0oug" general="_2E_aIRSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xp9lot6jEee0kIKIEebuqA" name="getConsolProcedureActivityProcedure2s" bodyCondition="_xp-MsN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xp-MsN6jEee0kIKIEebuqA" name="body" constrainedElement="_xp9lot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xp-Msd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xp9lo96jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xp9lpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_xqct0d6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_xqct1N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xqct1N6jEee0kIKIEebuqA" name="body" constrainedElement="_xqct0d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xqct1d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xqct0t6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xqct096jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yJJcAN6jEee0kIKIEebuqA" name="getConsolSeverityObservation2" bodyCondition="_yJJcA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yJJcA96jEee0kIKIEebuqA" name="body" constrainedElement="_yJJcAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJJcBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation2))->asSequence()->any(true).oclAsType(consol::SeverityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yJJcAd6jEee0kIKIEebuqA" type="_B0oKYPJdEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yJJcAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_H85E0PF7EeOmsLWmq5fnqQ" name="ResultObservation2">
      <ownedComment xmi:id="_TU3CoPF7EeOmsLWmq5fnqQ">
        <body>&lt;/p>&#xD;
This template represents the results of a laboratory, radiology, or other study performed on a patient.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The result observation includes a statusCode to allow recording the status of an observation. &quot;Pending&quot; results (e.g., a test has been run but results have not been reported yet) should be represented as &quot;active&quot; ActStatus.&#xD;
&lt;p></body>
      </ownedComment>
      <ownedRule xmi:id="_PX_vAPF8EeOmsLWmq5fnqQ" name="ResultObservationAuthorMultiplicity">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_PX_vAfF8EeOmsLWmq5fnqQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_7FLrMPF9EeOmsLWmq5fnqQ" name="ResultObservationCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7FLrMfF9EeOmsLWmq5fnqQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_lFBDcMzmEeSLqosJ4F90vA" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lFBDcczmEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tDNpEMzmEeSLqosJ4F90vA" name="ResultObservationReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_tDNpEczmEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pSGH4MzmEeSLqosJ4F90vA" name="ResultObservationTextReferenceValue" constrainedElement="_tjUmsB7rEeGaOZtrEokzNQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pSGH4czmEeSLqosJ4F90vA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_fNQT4M2sEeSEZ8MJJ3ZzLg" name="ResultObservationNoObservationRangeCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_fNQT4c2sEeSEZ8MJJ3ZzLg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xqd78N6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xqd78d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.2' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xqr-YN6jEee0kIKIEebuqA" name="ResultObservationEffectiveTime" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xqr-Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xqxd8N6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xqxd8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xq-5UN6jEee0kIKIEebuqA" name="ResultObservationCodeP" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xq-5Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xq29gN6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xq29gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xrFnAN6jEee0kIKIEebuqA" name="ResultObservationValue" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xrFnAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xrw8cN6jEee0kIKIEebuqA" name="ResultObservationInterpretationCodeP" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xrw8cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xrM7wN6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xrM7wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (self.interpretationCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.83' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xs3vsN6jEee0kIKIEebuqA" name="ResultObservation2AuthorParticipation" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xs3vsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2bHAcN6jEee0kIKIEebuqA" name="ResultObservation2ReferenceRange" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2bHAcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CCD0N6jEee0kIKIEebuqA" name="ResultObservation2ReferenceRangeObservationRangeValue" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CCD0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject((value.oclIsUndefined() or value.isNullFlavorUndefined()) implies (not value.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CCq4N6jEee0kIKIEebuqA" name="ResultObservation2ReferenceRangeObservationRangeCode" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CCq4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CDR8N6jEee0kIKIEebuqA" name="ResultObservation2ReferenceRangeObservationRange" constrainedElement="_H85E0PF7EeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CDR8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(observationRange->one(observationRange : cda::ObservationRange | not observationRange.oclIsUndefined() and observationRange.oclIsKindOf(cda::ObservationRange)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H85E0fF7EeOmsLWmq5fnqQ" general="_2J1d4BSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_gU40UPGEEeOmsLWmq5fnqQ" name="ResultOrganizer2">
      <ownedComment xmi:id="_r11vAPGEEeOmsLWmq5fnqQ">
        <body>&lt;p>&#xD;
This template provides a mechanism for grouping result observations. It contains information applicable to all of the contained result observations. The Result Organizer code categorizes the contained results into one of several commonly accepted values (e.g., &quot;Hematology&quot;, &quot;Chemistry&quot;, &quot;Nuclear Medicine&quot;).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
If any Result Observation within the organizer has a statusCode of &quot;active&quot;, the Result Organizer must also have a statusCode of &quot;active&quot;.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_6J9xUPJHEeOA6ZIOnFjrYQ" name="ResultOrganizerCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6J9xUfJHEeOA6ZIOnFjrYQ">
          <language>OCL</language>
          <body>self.code.isNullFlavorDefined() or self.code.codeSystem = '2.16.840.1.113883.6.1' or self.code.codeSystem = '2.16.840.1.113883.6.96' or self.code.codeSystem = '2.16.840.1.113883.6.12'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_IXgb0PJNEeOA6ZIOnFjrYQ" name="ResultOrganizerClassCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_IXgb0fJNEeOA6ZIOnFjrYQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xs490N6jEee0kIKIEebuqA" name="ResultOrganizerTemplateId" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xs490d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xs_rgN6jEee0kIKIEebuqA" name="ResultOrganizer2EffectiveTime" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xtASkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xtoksN6jEee0kIKIEebuqA" name="ResultOrganizerResultObservation" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xtoksd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::ResultObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuIT8N6jEee0kIKIEebuqA" name="ResultOrganizer2AuthorParticipation" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuIT8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CFuMN6jEee0kIKIEebuqA" name="ResultOrganizer2IVLTSLow" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CFuMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CGVQN6jEee0kIKIEebuqA" name="ResultOrganizer2IVLTSHigh" constrainedElement="_gU40UPGEEeOmsLWmq5fnqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CGVQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gU40UfGEEeOmsLWmq5fnqQ" general="_2JxzgBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_xtpLwN6jEee0kIKIEebuqA" name="getConsolResultObservation2s" bodyCondition="_xtpLw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_xtpLw96jEee0kIKIEebuqA" name="body" constrainedElement="_xtpLwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_xtpLxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ResultObservation2)).oclAsType(consol::ResultObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_xtpLwd6jEee0kIKIEebuqA" type="_H85E0PF7EeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xtpLwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_B0oKYPJdEeO2NaSiicarcg" name="SeverityObservation2">
      <ownedComment xmi:id="_HSh9gPJdEeO2NaSiicarcg">
        <body>This clinical statement represents the gravity of the problem, such as allergy or reaction, in terms of its actual or potential impact on the patient. The Severity Observation can be associated with an Allergy - Intolerance Observation, Substance or Device Allergy - Intolerance Observation, Reaction Observation or all. When the Severity Observation is associated directly with an allergy it characterizes the allergy. When the Severity Observation is associated with a Reaction Observation it characterizes a reaction. A person may manifest many symptoms in a reaction to a single substance, and each reaction to the substance can be represented. However, each reaction observation can have only one severity observation associated with it. For example, someone may have a rash reaction observation as well as an itching reaction observation, but each can have only one level of severity.</body>
      </ownedComment>
      <ownedRule xmi:id="_Q6hswM26EeSEZ8MJJ3ZzLg" name="SeverityObservationTextReference" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q6hswc26EeSEZ8MJJ3ZzLg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_SS-tcM26EeSEZ8MJJ3ZzLg" name="SeverityObservationTextReferenceValue" constrainedElement="_sBN0ECK3EeG9m6LRl9ardQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SS-tcc26EeSEZ8MJJ3ZzLg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Tnvg8M26EeSEZ8MJJ3ZzLg" name="SeverityObservationReferenceValue" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Tnvg8c26EeSEZ8MJJ3ZzLg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuJiEN6jEee0kIKIEebuqA" name="SeverityObservationTemplateId" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuJiEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.8' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuWWYN6jEee0kIKIEebuqA" name="SeverityObservationCodeP" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuWWYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuQPwN6jEee0kIKIEebuqA" name="SeverityObservationCode" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuQPwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'SEV' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xudEEN6jEee0kIKIEebuqA" name="SeverityObservationText" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xudEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xup4YN6jEee0kIKIEebuqA" name="SeverityObservationStatusCodeP" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xup4Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuijoN6jEee0kIKIEebuqA" name="SeverityObservationStatusCode" constrainedElement="_B0oKYPJdEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuijod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_B0p_kPJdEeO2NaSiicarcg" general="_2FGu4hSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_b_iGIPJfEeO2NaSiicarcg" name="SocialHistoryObservation2">
      <ownedComment xmi:id="_vZHxAPJfEeO2NaSiicarcg">
        <body>This template represents a patient's occupations, lifestyle, and environmental health risk factors. Demographic data (e.g., marital status, race, ethnicity, religious affiliation) are captured in the header. Though tobacco use and exposure may be represented with a Social History Observation, it is recommended to use the Current Smoking Status template or the Tobacco Use template instead, to represent smoking or tobacco habits.</body>
      </ownedComment>
      <ownedRule xmi:id="_eB5qUM3IEeSEZ8MJJ3ZzLg" name="SocialHistoryObservation2ReferenceAttribute" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ry-0kM3IEeSEZ8MJJ3ZzLg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xuuw4N6jEee0kIKIEebuqA" name="SocialHistoryObservationTemplateId" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xuvX8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.38' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xu1ekN6jEee0kIKIEebuqA" name="SocialHistoryObservationCode" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xu1ekd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '229819007' or value.code = '256235009' or value.code = '160573003' or value.code = '364393001' or value.code = '364703007' or value.code = '425400000' or value.code = '363908000' or value.code = '228272008' or value.code = '105421008'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xvXDAN6jEee0kIKIEebuqA" name="SocialHistoryObservationCodeP" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xvXDAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xwBxYN6jEee0kIKIEebuqA" name="SocialHistoryObservationStatusCodeP" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xwBxYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xv6coN6jEee0kIKIEebuqA" name="SocialHistoryObservationStatusCode" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xv6cod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xwIfEN6jEee0kIKIEebuqA" name="SocialHistoryObservation2EffectiveTime" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xwIfEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xwMwgN6jEee0kIKIEebuqA" name="SocialHistoryObservationValue" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xwMwgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xw8XYN6jEee0kIKIEebuqA" name="SocialHistoryObservation2AuthorParticipation" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xw8XYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ChMAN6jEee0kIKIEebuqA" name="SocialHistoryObservation2CDTranslation" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ChMAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty() and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ChzEN6jEee0kIKIEebuqA" name="SocialHistoryObservation2CDTranslationP" constrainedElement="_b_iGIPJfEeO2NaSiicarcg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ChzEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (( not translation->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_b_iGIfJfEeO2NaSiicarcg" general="_2JOZ4BSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_K3M6IPKJEeOn7bMsPcStOw" name="SubstanceOrDeviceAllergyObservation2">
      <ownedComment xmi:id="_RG4IcPKJEeOn7bMsPcStOw">
        <body>This template reflects a discrete observation about a patient's allergy or intolerance to a substance or device. Because it is a discrete observation, it will have a statusCode of &quot;completed&quot;. The effectiveTime, also referred to as the &quot;biologically relevant time&quot; is the time at which the observation holds for the patient. For a provider seeing a patient in the clinic today, observing a history of penicillin allergy that developed five years ago, the effectiveTime is five years ago. &#xD;
The effectiveTime of the Substance or Device Allergy - Intolerance Observation is the definitive indication of whether or not the underlying allergy/intolerance is resolved. If known to be resolved, then an effectiveTime/high would be present. If the date of resolution is not known, then effectiveTime/high will be present with a nullFlavor of &quot;UNK&quot;.</body>
      </ownedComment>
      <ownedRule xmi:id="_KLMTAPMpEeOrR8IF-aqVyQ" name="SubstanceOrDeviceAllergyObservationReactionInversionIndicator">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_KLMTAfMpEeOrR8IF-aqVyQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::ReactionObservation2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_MNuWAPMqEeOrR8IF-aqVyQ" name="SubstanceOrDeviceAllergyObservationSeverityInversionIndicator" constrainedElement="_mgny4NF8EeOHUokOVP95oQ">
        <ownedComment xmi:id="_LqFJILvcEead0dyhUBLajQ">
          <body>&lt;!--SHALL enforced as SHOULD due to such that it clause--></body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_MNuWAfMqEeOrR8IF-aqVyQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::SeverityObservation2))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gFQ4ULs2Eead0dyhUBLajQ" name="SubstanceOrDeviceAllergyObservation2CriticalityInversionIndicator">
        <ownedComment xmi:id="_xinDgLs3Eead0dyhUBLajQ">
          <body>&lt;!--SHALL enforced as SHOULD due to such that it clause--></body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gFQ4Ubs2Eead0dyhUBLajQ">
          <language>OCL</language>
          <body>self.entryRelationship->select(er : cda::EntryRelationship | er.observation.oclIsTypeOf(consol::CriticalityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xw9lgN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationTemplateId" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xw9lgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.24.3.90' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xxE6QN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationEffectiveTime" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xxE6Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xx1IMN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationValueP" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xx1IMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xxMPAN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationValue" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xxMPAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '420134006' or value.code = '418038007' or value.code = '419511003' or value.code = '418471000' or value.code = '419199007' or value.code = '416098002' or value.code = '414285001' or value.code = '59037007' or value.code = '235719002' or value.code = '232347008' or value.code = '426232007')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xyAuYN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationCodeP" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xyAuYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xx4LgN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationCode" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xx4Lgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_xzAz8N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipant" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xzAz8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x0h24N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationReactionObservation" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x0h24d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::MFST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x0k6MN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationSeverityObservation" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x0k6Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SeverityObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x1EpcN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservation2AuthorParticipation" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1Epcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Uh7wN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservation2CriticalityObservation" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Uii0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CriticalityObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CmEgN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservation2IVLTSLow" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6CmEgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6CmrkN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservation2IVLTSHigh" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Cmrkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D4d8N6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D4d8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((originalText.oclIsUndefined() or originalText.isNullFlavorUndefined()) implies (true) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D5FAN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D5FAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null).code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (true) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D5sEN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D5sEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D6TIN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D6TId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D6TIt6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D6TI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D66MN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D66Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D7hQN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D7hQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D8IUN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D8IUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D8vYN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D8vYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D9WcN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D9Wcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6D99gN6jEee0kIKIEebuqA" name="SubstanceOrDeviceAllergyObservationParticipantParticipantRole" constrainedElement="_K3M6IPKJEeOn7bMsPcStOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6D99gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_K3PWYPKJEeOn7bMsPcStOw" general="_mgny4NF8EeOHUokOVP95oQ"/>
      <ownedOperation xmi:id="_x0h24t6jEee0kIKIEebuqA" name="getConsolReactionObservation2s" bodyCondition="_x0id8N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x0id8N6jEee0kIKIEebuqA" name="body" constrainedElement="_x0h24t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x0id8d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x0h2496jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x0h25N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_x0lhQN6jEee0kIKIEebuqA" name="getConsolSeverityObservation2" bodyCondition="_x0lhQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x0lhQ96jEee0kIKIEebuqA" name="body" constrainedElement="_x0lhQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x0lhRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation2))->asSequence()->any(true).oclAsType(consol::SeverityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x0lhQd6jEee0kIKIEebuqA" type="_B0oKYPJdEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x0lhQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3Uii0d6jEee0kIKIEebuqA" name="getCriticalityObservation" bodyCondition="_3Uii1N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3Uii1N6jEee0kIKIEebuqA" name="body" constrainedElement="_3Uii0d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Uii1d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CriticalityObservation))->asSequence()->any(true).oclAsType(consol::CriticalityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3Uii0t6jEee0kIKIEebuqA" type="_LspMELDzEeafNo3UpQoAYw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3Uii096jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_qHUXwPMxEeOUvapeh9bVvQ" name="TobaccoUse2">
      <ownedComment xmi:id="_y_7XMPMxEeOUvapeh9bVvQ">
        <body>This template represents a patient's tobacco use. &#xD;
All the types of tobacco use are represented using the codes from the tobacco use and exposure-finding hierarchy in SNOMED CT, including codes required for recording smoking status in Meaningful Use Stage 2. &#xD;
The effectiveTime element is used to describe dates associated with the patient's tobacco use. Whereas the Smoking Status - Meaningful Use (V2) template (2.16.840.1.113883.10.20.22.4.78:2014-06-09) represents a &quot;snapshot in time&quot; observation, simply reflecting what the patient's current smoking status is at the time of the observation, this Tobacco Use template uses effectiveTime to represent the biologically relevant time of the observation. Thus, to record a former smoker, an observation of &quot;cigarette smoker&quot; will have an effectiveTime/low defining the time the patient started to smoke cigarettes and an effectiveTime/high defining the time the patient ceased to smoke cigarettes. To record a current smoker, the effectiveTime/low will define the time the patient started smoking and will have no effectiveTime/high to indicated that the patient is still smoking.</body>
      </ownedComment>
      <ownedRule xmi:id="_x1FQgN6jEee0kIKIEebuqA" name="TobaccoUseTemplateId" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1F3kN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.85' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x1Jh8N6jEee0kIKIEebuqA" name="TobaccoUse2Id" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1Jh8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x1VvMN6jEee0kIKIEebuqA" name="TobaccoUseCodeP" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1VvMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x1OacN6jEee0kIKIEebuqA" name="TobaccoUseCode" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1Oacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '11367-0')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x1dD8N6jEee0kIKIEebuqA" name="TobaccoUseEffectiveTime" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x1dD8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2BEoN6jEee0kIKIEebuqA" name="TobaccoUse2AuthorParticipation" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2BEod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6EFSQN6jEee0kIKIEebuqA" name="TobaccoUse2CDCodeTermAssertionOrLoinc" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6EFSQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6EI8oN6jEee0kIKIEebuqA" name="TobaccoUse2IVLTSHigh" constrainedElement="_qHUXwPMxEeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6EI8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_qHW0APMxEeOUvapeh9bVvQ" general="_gIH_QOWQEeGKmvzED_He2w"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="__zeTcPM3EeOUvapeh9bVvQ" name="VitalSignObservation2">
      <ownedComment xmi:id="_PYxNUPM4EeOUvapeh9bVvQ">
        <body>This template represents measurement of common vital signs. Vital signs are represented with additional vocabulary constraints for type of vital sign and unit of measure.</body>
      </ownedComment>
      <ownedRule xmi:id="_finGcM85EeSJsu9BbhWxmQ" name="VitalSignObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_finGcc85EeSJsu9BbhWxmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gt-tYM85EeSJsu9BbhWxmQ" name="VitalSignObservationReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gt-tYc85EeSJsu9BbhWxmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_h4JacM85EeSJsu9BbhWxmQ" name="VitalSignObservationTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_h4Jacc85EeSJsu9BbhWxmQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2CSwN6jEee0kIKIEebuqA" name="VitalSignObservationTemplateId" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2CSwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.27' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2KOkN6jEee0kIKIEebuqA" name="VitalSignObservationEffectiveTime" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2KOkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2QVMN6jEee0kIKIEebuqA" name="VitalSignObservationValue" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2QVMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2Wb0N6jEee0kIKIEebuqA" name="VitalSignObservationText" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2Wb0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2_8EN6jEee0kIKIEebuqA" name="VitalSignObservationInterpretationCodeP" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2_8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (not self.interpretationCode->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x2b7YN6jEee0kIKIEebuqA" name="VitalSignObservationInterpretationCode" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x2cicN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (self.interpretationCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.83' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x4DsAN6jEee0kIKIEebuqA" name="VitalSignObservation2AuthorParticipation" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x4DsAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x4kpYN6jEee0kIKIEebuqA" name="VitalSignObservationAuthor" constrainedElement="__zeTcPM3EeOUvapeh9bVvQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x4kpYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__ze6gPM3EeOUvapeh9bVvQ" general="_2OrhsRSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_dDupoPV2EeONioZkBKP8eQ" name="VitalSignsOrganizer2">
      <ownedComment xmi:id="_jK-7wPV2EeONioZkBKP8eQ">
        <body>This template provides a mechanism for grouping vital signs (e.g., grouping systolic blood pressure and diastolic blood pressure).</body>
      </ownedComment>
      <ownedRule xmi:id="_x4l3gN6jEee0kIKIEebuqA" name="VitalSignsOrganizerTemplateId" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x4mekN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.26' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x4vogN6jEee0kIKIEebuqA" name="VitalSignsOrganizerCodeP" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x4vogd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x4ph4N6jEee0kIKIEebuqA" name="VitalSignsOrganizerCode" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x4ph4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '46680005' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x429QN6jEee0kIKIEebuqA" name="VitalSignsOrganizerEffectiveTime" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x429Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x5kH4N6jEee0kIKIEebuqA" name="VitalSignsOrganizerVitalSignObservation" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x5kH4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::VitalSignObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_x6GTYN6jEee0kIKIEebuqA" name="VitalSignsOrganizer2AuthorParticipation" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_x6GTYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ENOEN6jEee0kIKIEebuqA" name="VitalSignsOrganizer2CDTranslation" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ENOEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '74728-7' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6EN1IN6jEee0kIKIEebuqA" name="VitalSignsOrganizer2CDTranslationP" constrainedElement="_dDupoPV2EeONioZkBKP8eQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6EN1Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_dDxF4PV2EeONioZkBKP8eQ" general="_2OlbCRSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_x5ku8N6jEee0kIKIEebuqA" name="getConsolVitalSignObservation2s" bodyCondition="_x5ku896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_x5ku896jEee0kIKIEebuqA" name="body" constrainedElement="_x5ku8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_x5lWAN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::VitalSignObservation2)).oclAsType(consol::VitalSignObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_x5ku8d6jEee0kIKIEebuqA" type="__zeTcPM3EeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x5ku8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ze150PitEeOXlK95I8tUew" name="MentalStatusObservation2">
      <ownedComment xmi:id="_igg7APiuEeOXlK95I8tUew">
        <body>The Mental Status Observation template represents an observation about mental status that can come from a broad range of subjective and objective information (including measured data) to address those categories described in the Mental Status Section. See also Assessment Scale Observation for specific collections of observations that together yield a summary evaluation of a particular condition.</body>
      </ownedComment>
      <ownedRule xmi:id="_3zrgMPi6EeOXlK95I8tUew" name="CognitiveStatusResultObservationValueDatatype">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3zrgMfi6EeOXlK95I8tUew">
          <language>OCL</language>
          <body>self.value->forAll(val | val.oclIsTypeOf(datatypes::CD) implies (val.isNullFlavorDefined() or val.oclAsType(datatypes::CD).codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vI6fAGwBEeeGpbQRBTrLBg" name="ResultObservationTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_vI6fAWwBEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_DFgJQGwCEeeGpbQRBTrLBg" name="ResultObservationTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_DFgJQWwCEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_C35gMGwEEeeGpbQRBTrLBg" name="ResultObservationReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_C35gMWwEEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_EoR4sGwEEeeGpbQRBTrLBg" name="ResultObservationCodeValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_EoR4sWwEEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_GW59sGwEEeeGpbQRBTrLBg" name="ResultObservationNoObservationRangeCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GW59sWwEEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_H5oUsGwEEeeGpbQRBTrLBg" name="ResultObservationAuthorMultiplicity">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_H5oUsWwEEeeGpbQRBTrLBg">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJLRMN6jEee0kIKIEebuqA" name="ResultObservationTemplateId" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJLRMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.74' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJYskN6jEee0kIKIEebuqA" name="ResultObservationClassCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJYskd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJnWEN6jEee0kIKIEebuqA" name="ResultObservationMoodCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJnWEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJ0KYN6jEee0kIKIEebuqA" name="ResultObservationId" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJ0KYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (not self.id->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yKI6gN6jEee0kIKIEebuqA" name="ResultObservationCodeP" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yKI6gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yJ-icN6jEee0kIKIEebuqA" name="ResultObservationCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yJ-icd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '373930000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yKff0N6jEee0kIKIEebuqA" name="ResultObservationStatusCodeP" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yKgG4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yKUgsN6jEee0kIKIEebuqA" name="ResultObservationStatusCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yKUgsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yKqe8N6jEee0kIKIEebuqA" name="ResultObservationEffectiveTime" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yKrGAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yK0P8N6jEee0kIKIEebuqA" name="ResultObservationValue" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yK0P8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (not self.value->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yK-oAN6jEee0kIKIEebuqA" name="ResultObservationText" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yK-oAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yLHK4N6jEee0kIKIEebuqA" name="ResultObservationInterpretationCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yLHK4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.interpretationCode->isEmpty() or self.interpretationCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yLQU0N6jEee0kIKIEebuqA" name="ResultObservationMethodCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yLQU0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.methodCode->isEmpty() or self.methodCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yLgzgN6jEee0kIKIEebuqA" name="ResultObservationTargetSiteCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yLgzgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yMY9QN6jEee0kIKIEebuqA" name="MentalStatusObservation2AuthorParticipation" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yMY9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yM1pMN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationAssessmentScaleObservation" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yM1pMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yNUKUN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRange" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yNUKUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3U-AoN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationAuthor" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3U-Aod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3VaskN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Vaskd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3V3_kN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationCaregiverCharacteristics" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3V3_kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6EVw8N6jEee0kIKIEebuqA" name="MentalStatusObservation2CDTranslation" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6EVw8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75275-8' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6EWYAN6jEee0kIKIEebuqA" name="MentalStatusObservation2CDTranslationP" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6EWYAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FJpQN6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FJpQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FJpQt6jEee0kIKIEebuqA" name="CognitiveStatusResultObservationReferenceRangeObservationRange" constrainedElement="_ze150PitEeOXlK95I8tUew">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FKQUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null)->reject(true)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ze150fitEeOXlK95I8tUew" general="_gkBM0OZbEeGINOJ_SD9_dA"/>
      <ownedOperation xmi:id="_yM1pMt6jEee0kIKIEebuqA" name="getConsolAssessmentScaleObservations" bodyCondition="_yM2QQN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yM2QQN6jEee0kIKIEebuqA" name="body" constrainedElement="_yM1pMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yM2QQd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yM1pM96jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yM1pNN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3Vaskt6jEee0kIKIEebuqA" name="getConsolNonMedicinalSupplyActivities" bodyCondition="_3VbTod6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3VbTod6jEee0kIKIEebuqA" name="body" constrainedElement="_3Vaskt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3VbTot6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity)).oclAsType(consol::NonMedicinalSupplyActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3Vask96jEee0kIKIEebuqA" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3VbToN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3V3_kt6jEee0kIKIEebuqA" name="getConsolCaregiverCharacteristicss" bodyCondition="_3V3_ld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3V3_ld6jEee0kIKIEebuqA" name="body" constrainedElement="_3V3_kt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3V3_lt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3V3_k96jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3V3_lN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_aetyEPu_EeOyiMEKhdqMGA" name="AnesthesiaSection2">
      <ownedComment xmi:id="_n-ZDQPu_EeOyiMEKhdqMGA">
        <body>The Anesthesia Section records the type of anesthesia (e.g., general or local) and may state the actual agent used. This may be a subsection of the Procedure Description Section. The full details of anesthesia are usually found in a separate Anesthesia Note.</body>
      </ownedComment>
      <ownedRule xmi:id="_yPIvQN6jEee0kIKIEebuqA" name="AnesthesiaSectionTemplateId" constrainedElement="_aetyEPu_EeOyiMEKhdqMGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yPIvQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.25' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yPSgQN6jEee0kIKIEebuqA" name="AnesthesiaSectionCodeP" constrainedElement="_aetyEPu_EeOyiMEKhdqMGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yPSgQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yPNAsN6jEee0kIKIEebuqA" name="AnesthesiaSectionCode" constrainedElement="_aetyEPu_EeOyiMEKhdqMGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yPNAsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59774-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yPyPgN6jEee0kIKIEebuqA" name="AnesthesiaSectionProcedureActivityProcedure" constrainedElement="_aetyEPu_EeOyiMEKhdqMGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yPyPgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQMfMN6jEee0kIKIEebuqA" name="AnesthesiaSectionMedicationActivity" constrainedElement="_aetyEPu_EeOyiMEKhdqMGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQMfMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_aevnQPu_EeOyiMEKhdqMGA" general="_OA_Q0DVyEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yPy2kN6jEee0kIKIEebuqA" name="getConsolProcedureActivityProcedure2s" bodyCondition="_yPy2k96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yPy2k96jEee0kIKIEebuqA" name="body" constrainedElement="_yPy2kN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yPy2lN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yPy2kd6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yPy2kt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yQNGQN6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_yQNGQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yQNGQ96jEee0kIKIEebuqA" name="body" constrainedElement="_yQNGQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQNGRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yQNGQd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yQNGQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_q_8twPvVEeOvZJBdQKQrqQ" name="AssessmentAndPlanSection2">
      <ownedComment xmi:id="_8BIW0PvVEeOvZJBdQKQrqQ">
        <body>This section represents the clinician's conclusions and working assumptions that will guide treatment of the patient. The Assessment and Plan Section may be combined or separated to meet local policy requirements.&#xD;
See also the Assessment Section: templateId 2.16.840.1.113883.10.20.22.2.8 and Plan of Treatment Section (V2): templateId 2.16.840.1.113883.10.20.22.2.10:2014-06-09</body>
      </ownedComment>
      <ownedRule xmi:id="_yQNtUN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionTemplateId" constrainedElement="_q_8twPvVEeOvZJBdQKQrqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQOUYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.9' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQWQMN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionCodeP" constrainedElement="_q_8twPvVEeOvZJBdQKQrqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQWQMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQRXsN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionCode" constrainedElement="_q_8twPvVEeOvZJBdQKQrqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQRXsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '51847-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQ2mgN6jEee0kIKIEebuqA" name="AssessmentAndPlanSectionPlanOfCareActivityAct" constrainedElement="_q_8twPvVEeOvZJBdQKQrqQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQ2mgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlannedAct2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_q__KAPvVEeOvZJBdQKQrqQ" general="_2Rwq0BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yQ3NkN6jEee0kIKIEebuqA" name="getConsolPlannedAct2s" bodyCondition="_yQ3Nk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yQ3Nk96jEee0kIKIEebuqA" name="body" constrainedElement="_yQ3NkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQ3NlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedAct2)).oclAsType(consol::PlannedAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yQ3Nkd6jEee0kIKIEebuqA" type="_lLnRMOaYEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yQ3Nkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_6M-msPvXEeOes-3T-2HryA" name="ComplicationsSection2">
      <ownedComment xmi:id="_Ol6OsPvYEeOes-3T-2HryA">
        <body>This section contains problems that occurred during or around the time of a procedure. The complications may be known risks or unanticipated problems.</body>
      </ownedComment>
      <ownedRule xmi:id="_ykBmYPvZEeOes-3T-2HryA" name="ComplicationsSectionExplicitComplications">
        <ownedComment xmi:id="_ykBmYfvZEeOes-3T-2HryA">
          <body>UNIMPLEMENTABLE</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ykBmYvvZEeOes-3T-2HryA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQ4bsN6jEee0kIKIEebuqA" name="ComplicationsSectionTemplateId" constrainedElement="_6M-msPvXEeOes-3T-2HryA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQ5CwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.37' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yRGeIN6jEee0kIKIEebuqA" name="ComplicationsSectionCodeP" constrainedElement="_6M-msPvXEeOes-3T-2HryA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yRGeId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yQ_JYN6jEee0kIKIEebuqA" name="ComplicationsSectionCode" constrainedElement="_6M-msPvXEeOes-3T-2HryA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yQ_JYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '55109-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yRuwQN6jEee0kIKIEebuqA" name="ComplicationsSectionProblemObservation" constrainedElement="_6M-msPvXEeOes-3T-2HryA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yRuwQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_6NBC8PvXEeOes-3T-2HryA" general="_R1OXcDVyEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yRvXUN6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yRvXU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yRvXU96jEee0kIKIEebuqA" name="body" constrainedElement="_yRvXUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yRvXVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yRvXUd6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yRvXUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_kgM0YPvbEeOJwYDYIUCQDg" name="EncountersSectionEntriesOptional2">
      <ownedComment xmi:id="_-E3hcPvbEeOJwYDYIUCQDg">
        <body>This section lists and describes any healthcare encounters pertinent to the patient's current health status or historical health history. An encounter is an interaction, regardless of the setting, between a patient and a practitioner who is vested with primary responsibility for diagnosing, evaluating, or treating the patient's condition. It may include visits, appointments, or non-face-to-face interactions. It is also a contact between a patient and a practitioner who has primary responsibility (exercising independent judgment) for assessing and treating the patient at a given contact. This section may contain all encounters for the time period being summarized, but should include notable encounters.</body>
      </ownedComment>
      <ownedRule xmi:id="_yRwlcN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_kgM0YPvbEeOJwYDYIUCQDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yRxMgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.22' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ySAdEN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_kgM0YPvbEeOJwYDYIUCQDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ySAdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yR3TIN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCode" constrainedElement="_kgM0YPvbEeOJwYDYIUCQDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yR3TId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ySvc4N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalEncounterActivities" constrainedElement="_kgM0YPvbEeOJwYDYIUCQDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ySvc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::EncounterActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_kgOpkPvbEeOJwYDYIUCQDg" general="_4yj2wBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_ySwD8N6jEee0kIKIEebuqA" name="getConsolEncounterActivity2s" bodyCondition="_ySwD896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ySwD896jEee0kIKIEebuqA" name="body" constrainedElement="_ySwD8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ySwD9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivity2)).oclAsType(consol::EncounterActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ySwD8d6jEee0kIKIEebuqA" type="_RGU34MzDEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ySwD8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_8rMFkPyHEeOozpLKXSm5NA" name="FunctionalStatusSection2">
      <ownedComment xmi:id="_vTMUQPyIEeOozpLKXSm5NA">
        <body>The Functional Status Section contains observations and assessments of a patient's physical abilities. A patient's functional status may include information regarding the patient's ability to perform Activities of Daily Living (ADLs) in areas such as Mobility (e.g., ambulation), Self-Care (e.g., bathing, dressing, feeding, grooming) or Instrumental Activities of Daily Living (IADLs) (e.g., shopping, using a telephone, balancing a check book). Problems that impact function (e.g., dyspnea, dysphagia) can be contained in the section.</body>
      </ownedComment>
      <ownedRule xmi:id="_ySxSEN6jEee0kIKIEebuqA" name="FunctionalStatusSectionTemplateId" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ySx5IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.14' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yTBJsN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCodeP" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yTBJsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yS3YsN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCode" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yS3Ysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47420-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yTttQN6jEee0kIKIEebuqA" name="FunctionalStatusSectionFunctionalStatusResultOrganizer" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yTttQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::FunctionalStatusOrganizer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yUMOYN6jEee0kIKIEebuqA" name="FunctionalStatusSectionFunctionalStatusResultObservation" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yUMOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::FunctionalStatusObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yUrWkN6jEee0kIKIEebuqA" name="FunctionalStatusSectionCognitiveStatusResultOrganizer" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yUrWkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yVMT8N6jEee0kIKIEebuqA" name="FunctionalStatusSectionCognitiveStatusResultObservation" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yVMT8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yVtRUN6jEee0kIKIEebuqA" name="FunctionalStatusSectionNonMedicinalSupplyActivity" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yVtRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yWNAkN6jEee0kIKIEebuqA" name="FunctionalStatusSectionNumberOfPressureUlcersObservation" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yWNAkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yWulAN6jEee0kIKIEebuqA" name="FunctionalStatusSectionHighestPressureUlcerStage" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yWvMEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yXNtMN6jEee0kIKIEebuqA" name="FunctionalStatusSection2SelfCareActivities" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yXNtMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SelfCareActivities))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yXv4sN6jEee0kIKIEebuqA" name="FunctionalStatusSection2SensoryAndSpeechStatus" constrainedElement="_8rMFkPyHEeOozpLKXSm5NA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yXv4sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SensoryStatus))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_8rQXAPyHEeOozpLKXSm5NA" general="_2KKOBhSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yTttQt6jEee0kIKIEebuqA" name="getConsolFunctionalStatusOrganizer2s" bodyCondition="_yTttRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yTttRd6jEee0kIKIEebuqA" name="body" constrainedElement="_yTttQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yTttRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FunctionalStatusOrganizer2)).oclAsType(consol::FunctionalStatusOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yTttQ96jEee0kIKIEebuqA" type="_yU2tgOD0EeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yTttRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yUM1cN6jEee0kIKIEebuqA" name="getConsolFunctionalStatusObservation2s" bodyCondition="_yUM1c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yUM1c96jEee0kIKIEebuqA" name="body" constrainedElement="_yUM1cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yUM1dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusObservation2)).oclAsType(consol::FunctionalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yUM1cd6jEee0kIKIEebuqA" type="_3WqogMzSEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yUM1ct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yUr9oN6jEee0kIKIEebuqA" name="getConsolCognitiveStatusResultOrganizers" bodyCondition="_yUr9o96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yUr9o96jEee0kIKIEebuqA" name="body" constrainedElement="_yUr9oN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yUr9pN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::CognitiveStatusResultOrganizer)).oclAsType(consol::CognitiveStatusResultOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yUr9od6jEee0kIKIEebuqA" type="_jfoCUOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yUr9ot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yVM7AN6jEee0kIKIEebuqA" name="getConsolCognitiveStatusResultObservations" bodyCondition="_yVM7A96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yVM7A96jEee0kIKIEebuqA" name="body" constrainedElement="_yVM7AN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yVM7BN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CognitiveStatusResultObservation)).oclAsType(consol::CognitiveStatusResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yVM7Ad6jEee0kIKIEebuqA" type="_gkBM0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yVM7At6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yVt4YN6jEee0kIKIEebuqA" name="getConsolNonMedicinalSupplyActivity2s" bodyCondition="_yVt4Y96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yVt4Y96jEee0kIKIEebuqA" name="body" constrainedElement="_yVt4YN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yVt4ZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yVt4Yd6jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yVt4Yt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yWNnoN6jEee0kIKIEebuqA" name="getConsolNumberOfPressureUlcersObservations" bodyCondition="_yWNno96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yWNno96jEee0kIKIEebuqA" name="body" constrainedElement="_yWNnoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yWNnpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation)).oclAsType(consol::NumberOfPressureUlcersObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yWNnod6jEee0kIKIEebuqA" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yWNnot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yWvMEd6jEee0kIKIEebuqA" name="getConsolHighestPressureUlcerStages" bodyCondition="_yWvzId6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yWvzId6jEee0kIKIEebuqA" name="body" constrainedElement="_yWvMEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yWvzIt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HighestPressureUlcerStage)).oclAsType(consol::HighestPressureUlcerStage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yWvMEt6jEee0kIKIEebuqA" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yWvzIN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yXNtMt6jEee0kIKIEebuqA" name="getSelfCareActivitiess" bodyCondition="_yXOUQt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yXOUQt6jEee0kIKIEebuqA" name="body" constrainedElement="_yXNtMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yXOUQ96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SelfCareActivities)).oclAsType(consol::SelfCareActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yXOUQN6jEee0kIKIEebuqA" type="_nC0xUJmzEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yXOUQd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yXv4st6jEee0kIKIEebuqA" name="getSensoryAndSpeechStatuss" bodyCondition="_yXwfwd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yXwfwd6jEee0kIKIEebuqA" name="body" constrainedElement="_yXv4st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yXwfwt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SensoryStatus)).oclAsType(consol::SensoryStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yXv4s96jEee0kIKIEebuqA" type="_kyeGAJm4EeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yXwfwN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_sZlggPyhEeOC19UEcu7MOw" name="HistoryOfPastIllnessSection2">
      <ownedComment xmi:id="_9w3VYPyhEeOC19UEcu7MOw">
        <body>This section contains a record of the patient's past complaints, problems, and diagnoses. It contains data from the patient's past up to the patient's current complaint or reason for seeking medical care.</body>
      </ownedComment>
      <ownedRule xmi:id="_yXxG0N6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionTemplateId" constrainedElement="_sZlggPyhEeOC19UEcu7MOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yXxt4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.20' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yX7e4N6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionCodeP" constrainedElement="_sZlggPyhEeOC19UEcu7MOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yX7e4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yX1YQN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionCode" constrainedElement="_sZlggPyhEeOC19UEcu7MOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yX1YQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11348-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yYgtsN6jEee0kIKIEebuqA" name="HistoryOfPastIllnessSectionProblemObservation" constrainedElement="_sZlggPyhEeOC19UEcu7MOw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yYgtsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_sZn8wPyhEeOC19UEcu7MOw" general="_2PQJcxSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yYhUwN6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_yYhUw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yYhUw96jEee0kIKIEebuqA" name="body" constrainedElement="_yYhUwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yYhUxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yYhUwd6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yYhUwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ctJgAPylEeOc0tW1-DpN-Q" name="AdmissionDiagnosisSection2">
      <ownedComment xmi:id="_mqyN0PylEeOc0tW1-DpN-Q">
        <body>This section contains a narrative description of the problems or diagnoses identified by the clinician at the time of the patient's admission. This section may contain coded entries representing the admitting diagnoses.</body>
      </ownedComment>
      <ownedRule xmi:id="_yYii4N6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionTemplateId" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yYii4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.43' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yYuwIN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionCodeP" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yYuwId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yYoCcN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionCode" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yYoCcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yZasoN6jEee0kIKIEebuqA" name="HospitalAdmissionDiagnosisSectionHospitalAdmissionDiagnosis" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yZasod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FQ-AN6jEee0kIKIEebuqA" name="AdmissionDiagnosisSection2CETranslation" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FQ-Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '42347-5' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FRlEN6jEee0kIKIEebuqA" name="AdmissionDiagnosisSection2CETranslationP" constrainedElement="_ctJgAPylEeOc0tW1-DpN-Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FRlEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ctL8QPylEeOc0tW1-DpN-Q" general="_2PidQhSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yZasot6jEee0kIKIEebuqA" name="getConsolHospitalAdmissionDiagnosis2" bodyCondition="_yZaspd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yZaspd6jEee0kIKIEebuqA" name="body" constrainedElement="_yZasot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yZaspt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2))->asSequence()->any(true).oclAsType(consol::HospitalAdmissionDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yZaso96jEee0kIKIEebuqA" type="_GM6icOEIEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yZaspN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZLY3MPyqEeOlg_Cnc5bODw" name="AdmissionMedicationsSectionEntriesOptional2">
      <ownedComment xmi:id="_hnpR0PyqEeOlg_Cnc5bODw">
        <body>The section contains the medications taken by the patient prior to and at the time of admission to the facility.</body>
      </ownedComment>
      <ownedRule xmi:id="_yZb6wN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_ZLY3MPyqEeOlg_Cnc5bODw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yZb6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.44' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yZm54N6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalCodeP" constrainedElement="_ZLY3MPyqEeOlg_Cnc5bODw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yZm54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yZgMMN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalCode" constrainedElement="_ZLY3MPyqEeOlg_Cnc5bODw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yZgMMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yaJscN6jEee0kIKIEebuqA" name="HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication" constrainedElement="_ZLY3MPyqEeOlg_Cnc5bODw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yaJscd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AdmissionMedication2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ZLbTcPyqEeOlg_Cnc5bODw" general="_2Poj5BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yaKTgN6jEee0kIKIEebuqA" name="getConsolAdmissionMedication2s" bodyCondition="_yaKTg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yaKTg96jEee0kIKIEebuqA" name="body" constrainedElement="_yaKTgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yaKThN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AdmissionMedication2)).oclAsType(consol::AdmissionMedication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yaKTgd6jEee0kIKIEebuqA" type="_ZQpEwK-1EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yaKTgt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_jfuGYPytEeOmn53IDV99zw" name="DischargeDiagnosisSection2">
      <ownedComment xmi:id="_CsRpAPyuEeOmn53IDV99zw">
        <body>This template represents problems or diagnoses present at the time of discharge which occurred during the hospitalization or need to be monitored after hospitalization. This section includes an optional entry to record patient conditions.</body>
      </ownedComment>
      <ownedRule xmi:id="_yaK6kN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionTemplateId" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yaLhoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.24' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yaY9AN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionCodeP" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yaY9Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yaPzEN6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionCode" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yaQaIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ybH80N6jEee0kIKIEebuqA" name="HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybH80d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HospitalDischargeDiagnosis2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FVPcN6jEee0kIKIEebuqA" name="DischargeDiagnosisSection2CETranslation" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FVPcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '78375-3' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FV2gN6jEee0kIKIEebuqA" name="DischargeDiagnosisSection2CETranslationP" constrainedElement="_jfuGYPytEeOmn53IDV99zw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FV2gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_jfv7kPytEeOmn53IDV99zw" general="_2PidURSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_ybIj4N6jEee0kIKIEebuqA" name="getConsolHospitalDischargeDiagnosis2" bodyCondition="_ybIj496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ybIj496jEee0kIKIEebuqA" name="body" constrainedElement="_ybIj4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybIj5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalDischargeDiagnosis2))->asSequence()->any(true).oclAsType(consol::HospitalDischargeDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ybIj4d6jEee0kIKIEebuqA" type="_Trd1cOEMEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ybIj4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_HlfBYPyzEeOfAK77IvEBUw" name="DischargeMedicationsSectionEntriesOptional2">
      <ownedComment xmi:id="_PlPGMPyzEeOfAK77IvEBUw">
        <body>This section contains the medications the patient is intended to take or stop after discharge. Current, active medications must be listed. The section may also include a patient's prescription history and indicate the source of the medication list.</body>
      </ownedComment>
      <ownedRule xmi:id="_ybJK8N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybJyAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.11' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ybUKEN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCodeP" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybUKEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ybNcYN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybNcYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yb_fgN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yb_fgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::DischargeMedication2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FaH8N6jEee0kIKIEebuqA" name="DischargeMedicationsSectionEntriesOptional2CETranslation" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FaH8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75311-1' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6FavAN6jEee0kIKIEebuqA" name="DischargeMedicationsSectionEntriesOptional2CETranslationP" constrainedElement="_HlfBYPyzEeOfAK77IvEBUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6FavAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_HlhdoPyzEeOfAK77IvEBUw" general="_2Poj7RSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_ycAGkN6jEee0kIKIEebuqA" name="getConsolDischargeMedication2s" bodyCondition="_ycAGk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ycAGk96jEee0kIKIEebuqA" name="body" constrainedElement="_ycAGkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycAGlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::DischargeMedication2)).oclAsType(consol::DischargeMedication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ycAGkd6jEee0kIKIEebuqA" type="_EIeu8MyjEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ycAGkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_kdQhIPy3EeO1SvUcmWeLDQ" name="ImmunizationsSectionEntriesOptional2">
      <ownedComment xmi:id="_5M3jwPy3EeO1SvUcmWeLDQ">
        <body>The Immunizations Section defines a patient's current immunization status and pertinent immunization history. The primary use case for the Immunization Section is to enable communication of a patient's immunization status. The section should include current immunization status, and may contain the entire immunization history that is relevant to the period of time being summarized.</body>
      </ownedComment>
      <ownedRule xmi:id="_ycAtoN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_kdQhIPy3EeO1SvUcmWeLDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycAtod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.2' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ycJ3kN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCodeP" constrainedElement="_kdQhIPy3EeO1SvUcmWeLDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycKeoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ycEYAN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_kdQhIPy3EeO1SvUcmWeLDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycEYAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ycvtcN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalImmunizationActivity" constrainedElement="_kdQhIPy3EeO1SvUcmWeLDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycvtcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_kdS9YPy3EeO1SvUcmWeLDQ" general="_EuPloBVeEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_ycwUgN6jEee0kIKIEebuqA" name="getConsolImmunizationActivity2s" bodyCondition="_ycwUg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ycwUg96jEee0kIKIEebuqA" name="body" constrainedElement="_ycwUgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycwUhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2)).oclAsType(consol::ImmunizationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ycwUgd6jEee0kIKIEebuqA" type="_zI6vcOE7EeOTq9XEMvvkWw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ycwUgt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_k8L2YP1HEeOVx4YMwgfjlA" name="InstructionsSection2">
      <ownedComment xmi:id="_4mmykP1HEeOVx4YMwgfjlA">
        <body>The Instructions Section records instructions given to a patient. List patient decision aids here.</body>
      </ownedComment>
      <ownedRule xmi:id="_ycw7kN6jEee0kIKIEebuqA" name="InstructionsSectionTemplateId" constrainedElement="_k8L2YP1HEeOVx4YMwgfjlA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ycxioN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.45' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yc0l8N6jEee0kIKIEebuqA" name="InstructionsSection2NullFlavor" constrainedElement="_k8L2YP1HEeOVx4YMwgfjlA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yc0l8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yc_lEN6jEee0kIKIEebuqA" name="InstructionsSectionCodeP" constrainedElement="_k8L2YP1HEeOVx4YMwgfjlA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yc_lEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yc43YN6jEee0kIKIEebuqA" name="InstructionsSectionCode" constrainedElement="_k8L2YP1HEeOVx4YMwgfjlA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yc43Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '69730-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ydjlwN6jEee0kIKIEebuqA" name="InstructionsSectionInstructions" constrainedElement="_k8L2YP1HEeOVx4YMwgfjlA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydjlwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::Instruction2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_k8O5sP1HEeOVx4YMwgfjlA" general="_4qKukEE1EeGdmoWy_aLP0Q"/>
      <ownedOperation xmi:id="_ydjlwt6jEee0kIKIEebuqA" name="getConsolInstruction2s" bodyCondition="_ydjlxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ydjlxd6jEee0kIKIEebuqA" name="body" constrainedElement="_ydjlwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydjlxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ydjlw96jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ydjlxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_YCS1AP1WEeOW-qBXb0kbTA" name="InterventionsSection2">
      <ownedComment xmi:id="_k-j3IP1WEeOW-qBXb0kbTA">
        <body>&lt;p>&#xD;
This template represents Interventions. Interventions are actions taken to maximize the prospects of the goals of care for the patient, including the removal of barriers to success. Interventions can be planned, ordered, historical, etc.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Interventions include actions that may be ongoing (e.g., maintenance medications that the patient is taking, or monitoring the patient's health status or the status of an intervention).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Instructions are nested within interventions and may include self-care instructions. Instructions are information or directions to the patient and other providers including how to care for the individual's condition, what to do at home, when to call for help, any additional appointments, testing, and changes to the medication list or medication instructions, clinical guidelines and a summary of best practice.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Instructions are information or directions to the patient. Use the Instructions Section when instructions are included as part of a document that is not a Care Plan. Use the Interventions Section, containing the Intervention Act containing the Instruction entry, when instructions are part of a structured care plan.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_ydkz4N6jEee0kIKIEebuqA" name="InterventionsSectionTemplateId" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydkz4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.2.3' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ydvL8N6jEee0kIKIEebuqA" name="InterventionsSectionCodeP" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydvL8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ydpFUN6jEee0kIKIEebuqA" name="InterventionsSectionCode" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ydpFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '62387-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yeQwYN6jEee0kIKIEebuqA" name="InterventionsSection2InterventionAct" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yeRXcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::InterventionAct))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Nlh0N6jEee0kIKIEebuqA" name="InterventionsSection2HandoffCommunication" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Nlh0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HandoffCommunicationParticipants))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_27GvIN6jEee0kIKIEebuqA" name="InterventionsSection2PlannedInterventionAct" constrainedElement="_YCS1AP1WEeOW-qBXb0kbTA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_27GvId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlannedInterventionAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_YCVRQP1WEeOW-qBXb0kbTA" general="_hqzJADVyEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yeRXcd6jEee0kIKIEebuqA" name="getInterventionActs" bodyCondition="_yeRXdN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yeRXdN6jEee0kIKIEebuqA" name="body" constrainedElement="_yeRXcd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yeRXdd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::InterventionAct)).oclAsType(consol::InterventionAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yeRXct6jEee0kIKIEebuqA" type="_XD5vgJA8EeOZX935IVJfOg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yeRXc96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2NmI4N6jEee0kIKIEebuqA" name="getHandoffCommunications" bodyCondition="_2NmI496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2NmI496jEee0kIKIEebuqA" name="body" constrainedElement="_2NmI4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2NmI5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HandoffCommunicationParticipants)).oclAsType(consol::HandoffCommunicationParticipants)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2NmI4d6jEee0kIKIEebuqA" type="_POfwAIz7EeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2NmI4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_27HWMN6jEee0kIKIEebuqA" name="getPlannedInterventionActs" bodyCondition="_27HWM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_27HWM96jEee0kIKIEebuqA" name="body" constrainedElement="_27HWMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_27HWNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedInterventionAct)).oclAsType(consol::PlannedInterventionAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_27HWMd6jEee0kIKIEebuqA" type="_dGARYOLSEeS505YV9ux2XA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_27HWMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_5OKxwP1bEeO5Hq-yrsJSmg" name="MedicalEquipmentSection2">
      <ownedComment xmi:id="_GwZnsP1cEeO5Hq-yrsJSmg">
        <body>This section defines a patient's implanted and external health and medical devices and equipment. This section lists any pertinent durable medical equipment (DME) used to help maintain the patient's health status. All equipment relevant to the diagnosis, care, or treatment of a patient should be included. &#xD;
Devices applied to, or placed in, the patient are represented with the Procedure Activity Procedure (V2) template. Equipment supplied to the patient (e.g., pumps, inhalers, wheelchairs) is represented by the Non-Medicinal Supply Activity V2 template.&#xD;
These devices may be grouped together within a Medical Equipment Organizer. The organizer would probably not be used with devices applied in or on the patient but rather to organize a group of medical supplies the patient has been supplied with.</body>
      </ownedComment>
      <ownedRule xmi:id="_yeSlkN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionTemplateId" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yeSlkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.23' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yeeLwN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionCodeP" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yeeLwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yeW3AN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionCode" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yeW3Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46264-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ye_wMN6jEee0kIKIEebuqA" name="MedicalEquipmentSectionNonMedicinalSupplyActivity" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ye_wMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yfeRUN6jEee0kIKIEebuqA" name="MedicalEquipmentSection2MedicalEquipmentOrganizer" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yfeRUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::MedicalEquipmentOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yf7kUN6jEee0kIKIEebuqA" name="MedicalEquipmentSection2ProcedureActivityProcedure2" constrainedElement="_5OKxwP1bEeO5Hq-yrsJSmg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yf7kUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_5OOcIP1bEeO5Hq-yrsJSmg" general="_2KEucBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yfAXQN6jEee0kIKIEebuqA" name="getConsolNonMedicinalSupplyActivity2s" bodyCondition="_yfA-UN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yfA-UN6jEee0kIKIEebuqA" name="body" constrainedElement="_yfAXQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yfA-Ud6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yfAXQd6jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yfAXQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yfeRUt6jEee0kIKIEebuqA" name="getMedicalEquipmentOrganizers" bodyCondition="_yfeRVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yfeRVd6jEee0kIKIEebuqA" name="body" constrainedElement="_yfeRUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yfeRVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::MedicalEquipmentOrganizer)).oclAsType(consol::MedicalEquipmentOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yfeRU96jEee0kIKIEebuqA" type="_RbbCII0dEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yfeRVN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yf8LYN6jEee0kIKIEebuqA" name="getProcedureActivityProcedure2s" bodyCondition="_yf8LY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yf8LY96jEee0kIKIEebuqA" name="body" constrainedElement="_yf8LYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yf8LZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yf8LYd6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yf8LYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_F37nMP4jEeOwFalSp0fRiw" name="MedicationsAdministeredSection2">
      <ownedComment xmi:id="_cc_vkP4jEeOwFalSp0fRiw">
        <body>The Medications Administered Section usually resides inside a Procedure Note describing a procedure. This section defines medications and fluids administered during the procedure, its related encounter, or other procedure related activity excluding anesthetic medications. Anesthesia medications should be documented as described in the Anesthesia Section templateId 2.16.840.1.113883.10.20.22.2.25.</body>
      </ownedComment>
      <ownedRule xmi:id="_yf8ycN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionTemplateId" constrainedElement="_F37nMP4jEeOwFalSp0fRiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yf9ZgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.38' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ygGjcN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionCodeP" constrainedElement="_F37nMP4jEeOwFalSp0fRiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygHKgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ygAc0N6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionCode" constrainedElement="_F37nMP4jEeOwFalSp0fRiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygAc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29549-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ygryQN6jEee0kIKIEebuqA" name="MedicationsAdministeredSectionMedicationActivity" constrainedElement="_F37nMP4jEeOwFalSp0fRiw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygryQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_F3_RkP4jEeOwFalSp0fRiw" general="_2Poj_BSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_ygsZUN6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_ygsZU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ygsZU96jEee0kIKIEebuqA" name="body" constrainedElement="_ygsZUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygsZVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ygsZUd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ygsZUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_twgM0P4lEeOzC5ykp-XCaA" name="PayersSection2">
      <ownedComment xmi:id="_1F8wYP4lEeOzC5ykp-XCaA">
        <body>&lt;p>&#xD;
The Payers Section contains data on the patient's payers, whether &quot;third party&quot; insurance, self-pay, other payer or guarantor, or some combination of payers, and is used to define which entity is the responsible fiduciary for the financial aspects of a patient's care.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Each unique instance of a payer and all the pertinent data needed to contact, bill to, and collect from that payer should be included. Authorization information that can be used to define pertinent referral, authorization tracking number, procedure, therapy, intervention, device, or similar authorizations for the patient or provider, or both should be included. At a minimum, the patient's pertinent current payment sources should be listed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The sources of payment are represented as a Coverage Activity, which identifies all of the insurance policies or government or other programs that cover some or all of the patient's healthcare expenses. The policies or programs are sequenced by preference. The Coverage Activity has a sequence number that represents the preference order. Each policy or program identifies the covered party with respect to the payer, so that the identifiers can be recorded.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_ygtncN6jEee0kIKIEebuqA" name="PayersSectionTemplateId" constrainedElement="_twgM0P4lEeOzC5ykp-XCaA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygtncd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.18' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yg3YcN6jEee0kIKIEebuqA" name="PayersSectionCodeP" constrainedElement="_twgM0P4lEeOzC5ykp-XCaA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yg3Ycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ygxR0N6jEee0kIKIEebuqA" name="PayersSectionCode" constrainedElement="_twgM0P4lEeOzC5ykp-XCaA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ygxR0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yhayEN6jEee0kIKIEebuqA" name="PayersSectionCoverageActivity" constrainedElement="_twgM0P4lEeOzC5ykp-XCaA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yhayEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::CoverageActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_twipEP4lEeOzC5ykp-XCaA" general="_2MV_UBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yhbZIN6jEee0kIKIEebuqA" name="getConsolCoverageActivity2s" bodyCondition="_yhbZI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yhbZI96jEee0kIKIEebuqA" name="body" constrainedElement="_yhbZIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yhbZJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::CoverageActivity2)).oclAsType(consol::CoverageActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yhbZId6jEee0kIKIEebuqA" type="_aJr6ULkxEeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yhbZIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_-nZiYP4uEeObaveuCI77uA" name="PhysicalExamSection2">
      <ownedComment xmi:id="_ITYfgP4vEeObaveuCI77uA">
        <body>&lt;p>&#xD;
The section includes direct observations made by a clinician. The examination may include the use of simple instruments and may also describe simple maneuvers performed directly on the patient's body.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
It also includes observations made by the examining clinician using only inspection, palpation, auscultation, and percussion. It does not include laboratory or imaging findings.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The exam may be limited to pertinent body systems based on the patient's chief complaint or it may include a comprehensive examination. The examination may be reported as a collection of random clinical statements or it may be reported categorically.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Physical Exam Section may contain multiple nested subsections.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_yhcnQN6jEee0kIKIEebuqA" name="PhysicalExamSectionTemplateId" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yhcnQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.2.10' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yhnmYN6jEee0kIKIEebuqA" name="PhysicalExamSectionCodeP" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yhnmYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yhg4sN6jEee0kIKIEebuqA" name="PhysicalExamSectionCode" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yhg4sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29545-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yjZvEN6jEee0kIKIEebuqA" name="PhysicalExamSection2WoundObservation" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yjZvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::LongitudinalCareWoundObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yj6scN6jEee0kIKIEebuqA" name="PhysicalExamSectionPressureUlcerObservation" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yj6scd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ykbCwN6jEee0kIKIEebuqA" name="PhysicalExamSectionHighestPressureUlcerStage" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ykbCwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yk8AIN6jEee0kIKIEebuqA" name="PhysicalExamSectionNumberOfPressureUlcersObservation" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yk8AId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2N_xgN6jEee0kIKIEebuqA" name="PhysicalExamSection2Component" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2N_xgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies component->exists(component : cda::Component5 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component5))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6GOAQN6jEee0kIKIEebuqA" name="PhysicalExamSection2ComponentSectionCode" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6GOAQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).section->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6GOnUN6jEee0kIKIEebuqA" name="PhysicalExamSection2ComponentSectionCodeP" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6GOnUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).section->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6GPOYN6jEee0kIKIEebuqA" name="PhysicalExamSection2ComponentSectionTitle" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6GPOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).section->excluding(null)->reject((title.oclIsUndefined() or title.isNullFlavorUndefined()) implies (not title.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6GP1cN6jEee0kIKIEebuqA" name="PhysicalExamSection2ComponentSectionText" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6GP1cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).section->excluding(null)->reject(not text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6GQcgN6jEee0kIKIEebuqA" name="PhysicalExamSection2ComponentSection" constrainedElement="_-nZiYP4uEeObaveuCI77uA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6GQcgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null)->reject(section->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(cda::Section)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-nb-oP4uEeObaveuCI77uA" general="_2Pxt0hSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yjaWIN6jEee0kIKIEebuqA" name="getWoundObservations" bodyCondition="_yjaWI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yjaWI96jEee0kIKIEebuqA" name="body" constrainedElement="_yjaWIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yjaWJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::LongitudinalCareWoundObservation)).oclAsType(consol::LongitudinalCareWoundObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yjaWId6jEee0kIKIEebuqA" type="_09uFMJp_EeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yjaWIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yj6sct6jEee0kIKIEebuqA" name="getConsolPressureUlcerObservations" bodyCondition="_yj7TgN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yj7TgN6jEee0kIKIEebuqA" name="body" constrainedElement="_yj6sct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yj7Tgd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PressureUlcerObservation)).oclAsType(consol::PressureUlcerObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yj6sc96jEee0kIKIEebuqA" type="_9rQowOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yj6sdN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ykbp0N6jEee0kIKIEebuqA" name="getConsolHighestPressureUlcerStages" bodyCondition="_ykbp096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ykbp096jEee0kIKIEebuqA" name="body" constrainedElement="_ykbp0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ykbp1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HighestPressureUlcerStage)).oclAsType(consol::HighestPressureUlcerStage)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ykbp0d6jEee0kIKIEebuqA" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ykbp0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yk8AIt6jEee0kIKIEebuqA" name="getConsolNumberOfPressureUlcersObservations" bodyCondition="_yk8nMd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yk8nMd6jEee0kIKIEebuqA" name="body" constrainedElement="_yk8AIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yk8nMt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation)).oclAsType(consol::NumberOfPressureUlcersObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yk8AI96jEee0kIKIEebuqA" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yk8nMN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_bwml0P4yEeO_Yb9cO8w3bA" name="PlanOfTreatmentSection2">
      <ownedComment xmi:id="_7lKjoP4yEeO_Yb9cO8w3bA">
        <body>This section, formerly known as &quot;Plan of Care&quot;, contains data that define pending orders, interventions, encounters, services, and procedures for the patient. It is limited to prospective, unfulfilled, or incomplete orders and requests only. These are indicated by the @moodCode of the entries within this section. All active, incomplete, or pending orders, appointments, referrals, procedures, services, or any other pending event of clinical significance to the current care of the patient should be listed.&#xD;
This section may also contain information about ongoing care of the patient, clinical reminders, patient's values, beliefs, preferences, care expectations, and overarching care goals. &#xD;
Clinical reminders are placed here to provide prompts for disease prevention and management, patient safety, and healthcare quality improvements, including widely accepted performance measures. &#xD;
Values may include the importance of quality of life over longevity. These values are taken into account when prioritizing all problems and their treatments.&#xD;
Beliefs may include comfort with dying or the refusal of blood transfusions because of the patient's religious convictions.????&#xD;
Preferences may include liquid medicines over tablets, or treatment via secure email instead of in person. &#xD;
Care expectations may range from being treated only by female clinicians, to expecting all calls to be returned within 24 hours. &#xD;
Overarching goals described in this section are not tied to a specific condition, problem, health concern, or intervention. Examples of overarching goals could be to minimize pain or dependence on others, or to walk a daughter down the aisle for her marriage.????&#xD;
The plan may also indicate that patient education will be provided.</body>
      </ownedComment>
      <ownedRule xmi:id="_yk9OQN6jEee0kIKIEebuqA" name="PlanOfCareSectionTemplateId" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yk9OQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.10' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ylHmUN6jEee0kIKIEebuqA" name="PlanOfCareSectionCodeP" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ylHmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ylBfsN6jEee0kIKIEebuqA" name="PlanOfCareSectionCode" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ylBfsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '18776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yluDQN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityObservation" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yluDQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PlannedObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ymOZkN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityEncounter" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ymOZkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::PlannedEncounter2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ymthwN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityAct" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ymthwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlannedAct2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ynNRAN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivityProcedure" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ynNRAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlannedProcedure2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ynsZMN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivitySubstanceAdministration" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ynsZMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yoLhYN6jEee0kIKIEebuqA" name="PlanOfCareSectionPlanOfCareActivitySupply" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yoLhYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::PlannedSupply2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yorQoN6jEee0kIKIEebuqA" name="PlanOfCareSectionInstructions" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yorQod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::Instruction2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ypJxwN6jEee0kIKIEebuqA" name="PlanOfTreatmentSection2HandoffCommunication" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypJxwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::HandoffCommunicationParticipants))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ypoS4N6jEee0kIKIEebuqA" name="PlanOfTreatmentSection2NutritionRecommendation" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypoS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::NutritionRecommendation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2OybsN6jEee0kIKIEebuqA" name="PlanOfTreatmentSection2PlannedImmunizationActivity" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Oybsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::PlannedImmunizationActivity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2PMrYN6jEee0kIKIEebuqA" name="PlanOfTreatmentSection2GoalObservation" constrainedElement="_bwml0P4yEeO_Yb9cO8w3bA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2PNScN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::GoalObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_bwppIP4yEeO_Yb9cO8w3bA" general="_2NP-QxSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yluqUN6jEee0kIKIEebuqA" name="getConsolPlannedObservation2s" bodyCondition="_yluqU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yluqU96jEee0kIKIEebuqA" name="body" constrainedElement="_yluqUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yluqVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PlannedObservation2)).oclAsType(consol::PlannedObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yluqUd6jEee0kIKIEebuqA" type="_jKZssOdvEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yluqUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ymPAoN6jEee0kIKIEebuqA" name="getConsolPlannedEncounter2s" bodyCondition="_ymPAo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ymPAo96jEee0kIKIEebuqA" name="body" constrainedElement="_ymPAoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ymPApN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::PlannedEncounter2)).oclAsType(consol::PlannedEncounter2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ymPAod6jEee0kIKIEebuqA" type="_bDPFMOdXEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ymPAot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ymuI0N6jEee0kIKIEebuqA" name="getConsolPlannedAct2s" bodyCondition="_ymuI096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ymuI096jEee0kIKIEebuqA" name="body" constrainedElement="_ymuI0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ymuI1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedAct2)).oclAsType(consol::PlannedAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ymuI0d6jEee0kIKIEebuqA" type="_lLnRMOaYEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ymuI0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ynN4EN6jEee0kIKIEebuqA" name="getConsolPlannedProcedure2s" bodyCondition="_ynN4E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ynN4E96jEee0kIKIEebuqA" name="body" constrainedElement="_ynN4EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ynN4FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlannedProcedure2)).oclAsType(consol::PlannedProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ynN4Ed6jEee0kIKIEebuqA" type="_cs0YsOeEEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ynN4Et6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yntAQN6jEee0kIKIEebuqA" name="getConsolPlannedMedicationActivity2s" bodyCondition="_yntAQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yntAQ96jEee0kIKIEebuqA" name="body" constrainedElement="_yntAQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yntARN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2)).oclAsType(consol::PlannedMedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yntAQd6jEee0kIKIEebuqA" type="_Yj45YOgREeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yntAQt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yoMIcN6jEee0kIKIEebuqA" name="getConsolPlannedSupply2s" bodyCondition="_yoMIc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yoMIc96jEee0kIKIEebuqA" name="body" constrainedElement="_yoMIcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yoMvgN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::PlannedSupply2)).oclAsType(consol::PlannedSupply2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yoMIcd6jEee0kIKIEebuqA" type="_vEd1cOg0EeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yoMIct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yor3sN6jEee0kIKIEebuqA" name="getConsolInstruction2s" bodyCondition="_yor3s96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yor3s96jEee0kIKIEebuqA" name="body" constrainedElement="_yor3sN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yor3tN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yor3sd6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yor3st6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ypJxwt6jEee0kIKIEebuqA" name="getHandoffCommunications" bodyCondition="_ypJxxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ypJxxd6jEee0kIKIEebuqA" name="body" constrainedElement="_ypJxwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypKY0N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HandoffCommunicationParticipants)).oclAsType(consol::HandoffCommunicationParticipants)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ypJxw96jEee0kIKIEebuqA" type="_POfwAIz7EeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ypJxxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ypo58N6jEee0kIKIEebuqA" name="getNutritionRecommendations" bodyCondition="_ypo5896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ypo5896jEee0kIKIEebuqA" name="body" constrainedElement="_ypo58N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypo59N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::NutritionRecommendation)).oclAsType(consol::NutritionRecommendation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ypo58d6jEee0kIKIEebuqA" type="_FhAIMI3FEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ypo58t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2OzCwN6jEee0kIKIEebuqA" name="getPlannedImmunizationActivities" bodyCondition="_2OzCw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2OzCw96jEee0kIKIEebuqA" name="body" constrainedElement="_2OzCwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OzCxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlannedImmunizationActivity)).oclAsType(consol::PlannedImmunizationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2OzCwd6jEee0kIKIEebuqA" type="_KRcPwJXFEeOgXcDbh8Igkw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2OzCwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2PNScd6jEee0kIKIEebuqA" name="getGoalObservations" bodyCondition="_2PNSdN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2PNSdN6jEee0kIKIEebuqA" name="body" constrainedElement="_2PNScd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2PNSdd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::GoalObservation)).oclAsType(consol::GoalObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2PNSct6jEee0kIKIEebuqA" type="_-miMII9TEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2PNSc96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_dz0ZwP49EeO_F_2qLv6FWQ" name="PlannedProcedureSection2">
      <ownedComment xmi:id="_qFPvIP49EeO_F_2qLv6FWQ">
        <body>This section contains the procedure(s) that a clinician planned based on the preoperative assessment.</body>
      </ownedComment>
      <ownedRule xmi:id="_ypphAN6jEee0kIKIEebuqA" name="PlannedProcedureSectionTemplateId" constrainedElement="_dz0ZwP49EeO_F_2qLv6FWQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypqIEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.30' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ypz5EN6jEee0kIKIEebuqA" name="PlannedProcedureSectionCodeP" constrainedElement="_dz0ZwP49EeO_F_2qLv6FWQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ypz5Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yptycN6jEee0kIKIEebuqA" name="PlannedProcedureSectionCode" constrainedElement="_dz0ZwP49EeO_F_2qLv6FWQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yptycd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59772-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yqa9EN6jEee0kIKIEebuqA" name="PlannedProcedureSectionPlanOfCareActivityProcedure" constrainedElement="_dz0ZwP49EeO_F_2qLv6FWQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yqa9Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlannedProcedure2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_dz3dEP49EeO_F_2qLv6FWQ" general="_3b6E4DVyEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yqbkIN6jEee0kIKIEebuqA" name="getConsolPlannedProcedure2s" bodyCondition="_yqbkI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yqbkI96jEee0kIKIEebuqA" name="body" constrainedElement="_yqbkIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yqbkJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlannedProcedure2)).oclAsType(consol::PlannedProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yqbkId6jEee0kIKIEebuqA" type="_cs0YsOeEEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yqbkIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_MLNngP5BEeOmw9RN80Tpig" name="PostprocedureDiagnosisSection2">
      <ownedComment xmi:id="_r8KQoP5BEeOmw9RN80Tpig">
        <body>The Postprocedure Diagnosis Section records the diagnosis or diagnoses discovered or confirmed during the procedure. Often it is the same as the preprocedure diagnosis or indication.</body>
      </ownedComment>
      <ownedRule xmi:id="_yqcLMN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionTemplateId" constrainedElement="_MLNngP5BEeOmw9RN80Tpig">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yqcyQN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.36' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yqnxYN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionCodeP" constrainedElement="_MLNngP5BEeOmw9RN80Tpig">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yqnxYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yqgcoN6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionCode" constrainedElement="_MLNngP5BEeOmw9RN80Tpig">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yqgcod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yrJV0N6jEee0kIKIEebuqA" name="PostprocedureDiagnosisSectionPostprocedureDiagnosis" constrainedElement="_MLNngP5BEeOmw9RN80Tpig">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yrJV0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PostprocedureDiagnosis2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_MLRR4P5BEeOmw9RN80Tpig" general="_-jlSMDVyEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yrJ84N6jEee0kIKIEebuqA" name="getConsolPostprocedureDiagnosis2" bodyCondition="_yrJ8496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yrJ8496jEee0kIKIEebuqA" name="body" constrainedElement="_yrJ84N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yrJ85N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PostprocedureDiagnosis2))->asSequence()->any(true).oclAsType(consol::PostprocedureDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yrJ84d6jEee0kIKIEebuqA" type="__SgUwOwuEeOqa975IP2wug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yrJ84t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_JFd3MP5EEeOBnLkJOVC8NQ" name="PreoperativeDiagnosisSection2">
      <ownedComment xmi:id="_OTT1EP5EEeOBnLkJOVC8NQ">
        <body>The Preoperative Diagnosis Section records the surgical diagnoses assigned to the patient before the surgical procedure which are the reason for the surgery. The preoperative diagnosis is, in the surgeon's opinion, the diagnosis that will be confirmed during surgery.</body>
      </ownedComment>
      <ownedRule xmi:id="_yrLLAN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionTemplateId" constrainedElement="_JFd3MP5EEeOBnLkJOVC8NQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yrLLAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.34' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yrWKIN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionCodeP" constrainedElement="_JFd3MP5EEeOBnLkJOVC8NQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yrWKId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yrPccN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionCode" constrainedElement="_JFd3MP5EEeOBnLkJOVC8NQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yrPccd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yr8AAN6jEee0kIKIEebuqA" name="PreoperativeDiagnosisSectionPreoperativeDiagnosis" constrainedElement="_JFd3MP5EEeOBnLkJOVC8NQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yr8AAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PreoperativeDiagnosis2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JFgTcP5EEeOBnLkJOVC8NQ" general="_Cu6qMDVzEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_yr8AAt6jEee0kIKIEebuqA" name="getConsolPreoperativeDiagnosis2" bodyCondition="_yr8nEN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yr8nEN6jEee0kIKIEebuqA" name="body" constrainedElement="_yr8AAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yr8nEd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PreoperativeDiagnosis2))->asSequence()->any(true).oclAsType(consol::PreoperativeDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yr8AA96jEee0kIKIEebuqA" type="_5l3g0OzYEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yr8ABN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_lLOykP5FEeO_r7yO9mhwnA" name="ProcedureFindingsSection2">
      <ownedComment xmi:id="_vk8YYP5FEeO_r7yO9mhwnA">
        <body>The Procedure Findings Section records clinically significant observations confirmed or discovered during a procedure or surgery.</body>
      </ownedComment>
      <ownedRule xmi:id="_yr9OIN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionTemplateId" constrainedElement="_lLOykP5FEeO_r7yO9mhwnA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yr9OId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.28' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ysG_IN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionCodeP" constrainedElement="_lLOykP5FEeO_r7yO9mhwnA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ysG_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ysA4gN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionCode" constrainedElement="_lLOykP5FEeO_r7yO9mhwnA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ysA4gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yspxsN6jEee0kIKIEebuqA" name="ProcedureFindingsSectionProblemObservation" constrainedElement="_lLOykP5FEeO_r7yO9mhwnA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yspxsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lLR14P5FEeO_r7yO9mhwnA" general="_W4UBYDVzEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_ysqYwN6jEee0kIKIEebuqA" name="getConsolProblemObservation2s" bodyCondition="_ysqYw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ysqYw96jEee0kIKIEebuqA" name="body" constrainedElement="_ysqYwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ysqYxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ysqYwd6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ysqYwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_5_O94AByEeSjnfOPJpFg3A" name="ProcedureIndicationsSection2">
      <ownedComment xmi:id="_EH_WkABzEeSjnfOPJpFg3A">
        <body>This section contains the reason(s) for the procedure or surgery. This section may include the preprocedure diagnoses as well as symptoms contributing to the reason for the procedure.</body>
      </ownedComment>
      <ownedRule xmi:id="_ysq_0N6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionTemplateId" constrainedElement="_5_O94AByEeSjnfOPJpFg3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ysq_0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.29' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ys0w0N6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionCodeP" constrainedElement="_5_O94AByEeSjnfOPJpFg3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ys0w0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ysuqMN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionCode" constrainedElement="_5_O94AByEeSjnfOPJpFg3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ysuqMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '59768-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ytZYkN6jEee0kIKIEebuqA" name="ProcedureIndicationsSectionIndication" constrainedElement="_5_O94AByEeSjnfOPJpFg3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ytZYkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::Indication2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_5_SoQAByEeSjnfOPJpFg3A" general="_cjmJMDVzEeGaW4kr-GbV8Q"/>
      <ownedOperation xmi:id="_ytZYkt6jEee0kIKIEebuqA" name="getConsolIndication2s" bodyCondition="_ytZYld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ytZYld6jEee0kIKIEebuqA" name="body" constrainedElement="_ytZYkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ytZYlt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication2)).oclAsType(consol::Indication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ytZYk96jEee0kIKIEebuqA" type="_PrEOIOHoEeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ytZYlN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_80dMoAB0EeSLOb2O6vSPzg" name="ProceduresSectionEntriesOptional2">
      <ownedComment xmi:id="_IbycIAB1EeSLOb2O6vSPzg">
        <body>This section describes all interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated. The section should include notable procedures, but can contain all procedures for the period of time being summarized. The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM), therefore this section contains procedure templates represented with three RIM classes: Act, Observation, and Procedure. Procedure Activity Procedure (V2) is for procedures that alter the physical condition of a patient (e.g., splenectomy). Procedure Activity Observation (V2) is for procedures that result in new information about a patient but do not cause physical alteration (e.g., EEG). Procedure Activity Act (V2) is for all other types of procedures (e.g., dressing change).</body>
      </ownedComment>
      <ownedRule xmi:id="_ytamsN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ytamsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.7' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ytll0N6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ytll0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yte4IN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yte4Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yuIYYN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityProcedure" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yuIYYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yum5gN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityObservation" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yum5gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProcedureActivityObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yvFaoN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityAct" constrainedElement="_80dMoAB0EeSLOb2O6vSPzg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvFaod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProcedureActivityAct2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_80fo4AB0EeSLOb2O6vSPzg" general="_s9Ig4BVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_yuI_cN6jEee0kIKIEebuqA" name="getConsolProcedureActivityProcedure2s" bodyCondition="_yuI_c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yuI_c96jEee0kIKIEebuqA" name="body" constrainedElement="_yuI_cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yuI_dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yuI_cd6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yuI_ct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yungkN6jEee0kIKIEebuqA" name="getConsolProcedureActivityObservation2s" bodyCondition="_yungk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yungk96jEee0kIKIEebuqA" name="body" constrainedElement="_yungkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yunglN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation2)).oclAsType(consol::ProcedureActivityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yungkd6jEee0kIKIEebuqA" type="_QoLWAPDjEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yungkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yvFaot6jEee0kIKIEebuqA" name="getConsolProcedureActivityAct2s" bodyCondition="_yvFapd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yvFapd6jEee0kIKIEebuqA" name="body" constrainedElement="_yvFaot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvFapt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct2)).oclAsType(consol::ProcedureActivityAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yvFao96jEee0kIKIEebuqA" type="_CFMuYPDbEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yvFapN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Ya0H0AB5EeS20Pddu0dxVw" name="ReasonForReferralSection2">
      <ownedComment xmi:id="_kbRpAAB5EeS20Pddu0dxVw">
        <body>This section describes the clinical reason why a provider is sending a patient to another provider for care. The reason for referral may become the reason for visit documented by the receiving provider.</body>
      </ownedComment>
      <ownedRule xmi:id="_yvGowN6jEee0kIKIEebuqA" name="ReasonForReferralSectionTemplateId" constrainedElement="_Ya0H0AB5EeS20Pddu0dxVw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvGowd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.3.1' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yvQZwN6jEee0kIKIEebuqA" name="ReasonForReferralSectionCodeP" constrainedElement="_Ya0H0AB5EeS20Pddu0dxVw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvRA0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yvJsEN6jEee0kIKIEebuqA" name="ReasonForReferralSectionCode" constrainedElement="_Ya0H0AB5EeS20Pddu0dxVw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvJsEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42349-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yvzMUN6jEee0kIKIEebuqA" name="ReasonForReferralSection2PatientReferralAct" constrainedElement="_Ya0H0AB5EeS20Pddu0dxVw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvzMUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PatientReferralAct))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Ya3LIAB5EeS20Pddu0dxVw" general="_2PWQFxSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yvzzYN6jEee0kIKIEebuqA" name="getPatientReferralActs" bodyCondition="_yvzzY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yvzzY96jEee0kIKIEebuqA" name="body" constrainedElement="_yvzzYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yvzzZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PatientReferralAct)).oclAsType(consol::PatientReferralAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yvzzYd6jEee0kIKIEebuqA" type="_50a2UI62EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yvzzYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_yaJ3QAFAEeSaVZ5WxWd94w" name="ResultsSectionEntriesOptional2">
      <ownedComment xmi:id="_4GquIAFAEeSaVZ5WxWd94w">
        <body>&lt;p>&#xD;
This section contains the results of observations generated by laboratories, imaging and other procedures. The scope includes observations of hematology, chemistry, serology, virology, toxicology, microbiology, plain x-ray, ultrasound, CT, MRI, angiography, echocardiography, nuclear medicine, pathology, and procedure observations.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
This section often includes notable results such as abnormal values or relevant trends. It can contain all results for the period of time being documented.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Laboratory results are typically generated by laboratories providing analytic services in areas such as chemistry, hematology, serology, histology, cytology, anatomic pathology, microbiology, and/or virology. These observations are based on analysis of specimens obtained from the patient and submitted to the laboratory.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Imaging results are typically generated by a clinician reviewing the output of an imaging procedure, such as where a cardiologist reports the left ventricular ejection fraction based on the review of a cardiac echocardiogram.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Procedure results are typically generated by a clinician to provide more granular information about component observations made during a procedure, such as where a gastroenterologist reports the size of a polyp observed during a colonoscopy.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_yv0acN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_yaJ3QAFAEeSaVZ5WxWd94w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yv1BgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.3' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yv-LcN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_yaJ3QAFAEeSaVZ5WxWd94w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yv-Lcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yv4E0N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCode" constrainedElement="_yaJ3QAFAEeSaVZ5WxWd94w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yv4E0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ywgW8N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalResultOrganizer" constrainedElement="_yaJ3QAFAEeSaVZ5WxWd94w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ywgW8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::ResultOrganizer2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_yaM6kAFAEeSaVZ5WxWd94w" general="_xGqiEBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_ywgW8t6jEee0kIKIEebuqA" name="getConsolResultOrganizer2s" bodyCondition="_ywgW9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ywgW9d6jEee0kIKIEebuqA" name="body" constrainedElement="_ywgW8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ywgW9t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer2)).oclAsType(consol::ResultOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ywgW896jEee0kIKIEebuqA" type="_gU40UPGEEeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ywgW9N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_wLWZMAFHEeSG_MJH-zNFRw" name="SocialHistorySection2">
      <ownedComment xmi:id="_4SQ18AFHEeSG_MJH-zNFRw">
        <body>This section contains social history data that influence a patient's physical, psychological or emotional health (e.g., smoking status, pregnancy). Demographic data, such as marital status, race, ethnicity, and religious affiliation, is captured in the header.</body>
      </ownedComment>
      <ownedRule xmi:id="_ywhlEN6jEee0kIKIEebuqA" name="SocialHistorySectionTemplateId" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ywhlEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.17' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ywrWEN6jEee0kIKIEebuqA" name="SocialHistorySectionCodeP" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ywr9IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ywkoYN6jEee0kIKIEebuqA" name="SocialHistorySectionCode" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ywlPcN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '29762-2')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yxP90N6jEee0kIKIEebuqA" name="SocialHistorySectionSocialHistoryObservation" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yxP90d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SocialHistoryObservation2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yxvtEN6jEee0kIKIEebuqA" name="SocialHistorySectionSmokingStatusObservation" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yxvtEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yyPcUN6jEee0kIKIEebuqA" name="SocialHistorySectionTobaccoUse" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yyPcUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::TobaccoUse2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yyt9cN6jEee0kIKIEebuqA" name="SocialHistorySection2CaregiverCharacteristics" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yyt9cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CaregiverCharacteristics))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yzO60N6jEee0kIKIEebuqA" name="SocialHistorySection2CulturalAndReligiousObservation" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yzO60d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CulturalAndReligiousObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yzs04N6jEee0kIKIEebuqA" name="SocialHistorySection2CharacteristicsOfHomeEnvironment" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yzs04d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3RVd0N6jEee0kIKIEebuqA" name="SocialHistorySection2BirthSexObservation" constrainedElement="_wLWZMAFHEeSG_MJH-zNFRw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3RVd0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::BirthSexObservation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_wLZcgAFHEeSG_MJH-zNFRw" general="_2JKvgBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_yxP90t6jEee0kIKIEebuqA" name="getConsolSocialHistoryObservation2s" bodyCondition="_yxP91d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yxP91d6jEee0kIKIEebuqA" name="body" constrainedElement="_yxP90t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yxQk4N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SocialHistoryObservation2)).oclAsType(consol::SocialHistoryObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yxP9096jEee0kIKIEebuqA" type="_b_iGIPJfEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yxP91N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yxwUIN6jEee0kIKIEebuqA" name="getConsolCurrentSmokingStatus2s" bodyCondition="_yxwUI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yxwUI96jEee0kIKIEebuqA" name="body" constrainedElement="_yxwUIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yxwUJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2)).oclAsType(consol::SmokingStatusMeaningfulUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yxwUId6jEee0kIKIEebuqA" type="_Hl3ScLk0EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yxwUIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yyPcUt6jEee0kIKIEebuqA" name="getConsolTobaccoUse2s" bodyCondition="_yyQDYt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yyQDYt6jEee0kIKIEebuqA" name="body" constrainedElement="_yyPcUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yyQDY96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::TobaccoUse2)).oclAsType(consol::TobaccoUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yyQDYN6jEee0kIKIEebuqA" type="_qHUXwPMxEeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yyQDYd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yyt9ct6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_yyt9dd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yyt9dd6jEee0kIKIEebuqA" name="body" constrainedElement="_yyt9ct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yyt9dt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yyt9c96jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yyt9dN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yzO60t6jEee0kIKIEebuqA" name="getCulturalAndReligiousObservations" bodyCondition="_yzO61d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yzO61d6jEee0kIKIEebuqA" name="body" constrainedElement="_yzO60t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yzO61t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CulturalAndReligiousObservation)).oclAsType(consol::CulturalAndReligiousObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yzO6096jEee0kIKIEebuqA" type="_H2EzIIqZEeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yzO61N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_yztb8N6jEee0kIKIEebuqA" name="getCharacteristicsOfHomeEnvironments" bodyCondition="_yztb896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_yztb896jEee0kIKIEebuqA" name="body" constrainedElement="_yztb8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_yztb9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment)).oclAsType(consol::CharacteristicsOfHomeEnvironment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_yztb8d6jEee0kIKIEebuqA" type="_O-O-IInUEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yztb8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_3RWE4N6jEee0kIKIEebuqA" name="getBirthSexObservations" bodyCondition="_3RWE496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_3RWE496jEee0kIKIEebuqA" name="body" constrainedElement="_3RWE4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_3RWE5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::BirthSexObservation)).oclAsType(consol::BirthSexObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_3RWE4d6jEee0kIKIEebuqA" type="_8fGTcD-qEeaJttsCYk-pKw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3RWE4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_8LkzYAFTEeSmasYc71ZgMQ" name="VitalSignsSectionEntriesOptional2">
      <ownedComment xmi:id="_MeZhoAFUEeSmasYc71ZgMQ">
        <body>&lt;p>&#xD;
The Vital Signs Section contains relevant vital signs for the context and use case of the document type, such as blood pressure, heart rate, respiratory rate, height, weight, body mass index, head circumference, pulse oximetry, temperature, and body surface area. The section should include notable vital signs such as the most recent, maximum and/or minimum, baseline, or relevant trends.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Vital signs are represented in the same way as other results, but are aggregated into their own section to follow clinical conventions.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_yzuqEN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_8LkzYAFTEeSmasYc71ZgMQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yzuqEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.4' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yz6QQN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCodeP" constrainedElement="_8LkzYAFTEeSmasYc71ZgMQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yz6QQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_yzzikN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_8LkzYAFTEeSmasYc71ZgMQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_yzzikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y0dC0N6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalVitalSignsOrganizer" constrainedElement="_8LkzYAFTEeSmasYc71ZgMQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y0dC0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::VitalSignsOrganizer2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_8LnPoAFTEeSmasYc71ZgMQ" general="_bRH8sBVeEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_y0dp4N6jEee0kIKIEebuqA" name="getConsolVitalSignsOrganizer2s" bodyCondition="_y0dp496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y0dp496jEee0kIKIEebuqA" name="body" constrainedElement="_y0dp4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y0dp5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::VitalSignsOrganizer2)).oclAsType(consol::VitalSignsOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y0dp4d6jEee0kIKIEebuqA" type="_dDupoPV2EeONioZkBKP8eQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y0dp4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_jsKhYAFXEeSLIY0bHb-fFQ" name="AdvanceDirectivesSectionEntriesOptional2">
      <ownedComment xmi:id="_pViksAFXEeSLIY0bHb-fFQ">
        <body>&lt;p>&#xD;
This section contains data defining the patient's advance directives and any reference to supporting documentation, including living wills, healthcare proxies, and CPR and resuscitation status. If the referenced documents are available, they can be included in the exchange package.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The most recent directives are required, if known, and should be listed in as much detail as possible.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
This section differentiates between &quot;advance directives&quot; and &quot;advance directive documents&quot;. The former is the directions to be followed whereas the latter refers to a legal document containing those directions.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_y0eQ8N6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_jsKhYAFXEeSLIY0bHb-fFQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y0e4AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.21' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y0pQEN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCodeP" constrainedElement="_jsKhYAFXEeSLIY0bHb-fFQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y0pQEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y0iiYN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_jsKhYAFXEeSLIY0bHb-fFQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y0iiYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y1MpsN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptional2AdvanceDirectiveOrganizer" constrainedElement="_jsKhYAFXEeSLIY0bHb-fFQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1Mpsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::AdvanceDirectiveOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2LepAN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation" constrainedElement="_jsKhYAFXEeSLIY0bHb-fFQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2LepAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AdvanceDirectiveObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_jsNksAFXEeSLIY0bHb-fFQ" general="_1RZdIBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_y1NQwN6jEee0kIKIEebuqA" name="getAdvanceDirectiveOrganizers" bodyCondition="_y1NQw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y1NQw96jEee0kIKIEebuqA" name="body" constrainedElement="_y1NQwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1NQxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::AdvanceDirectiveOrganizer)).oclAsType(consol::AdvanceDirectiveOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y1NQwd6jEee0kIKIEebuqA" type="_Z8VQYIlFEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y1NQwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2LfQEN6jEee0kIKIEebuqA" name="getConsolAdvanceDirectiveObservation2s" bodyCondition="_2LfQE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2LfQE96jEee0kIKIEebuqA" name="body" constrainedElement="_2LfQEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2LfQFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)).oclAsType(consol::AdvanceDirectiveObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2LfQEd6jEee0kIKIEebuqA" type="_GnllUK-9EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2LfQEt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_JUvaUAFaEeS0nNJt6oyOyQ" name="MedicationsSectionEntriesOptional2">
      <ownedComment xmi:id="_R4TW0AFaEeS0nNJt6oyOyQ">
        <body>The Medications Section contains a patient's current medications and pertinent medication history. At a minimum, the currently active medications are listed. An entire medication history is an option. The section can describe a patient's prescription and dispense history and information about intended drug monitoring.</body>
      </ownedComment>
      <ownedRule xmi:id="_GHMuAAFfEeS0nNJt6oyOyQ" name="MedicationsSectionEntriesOptionalAbsenceOfMedications">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_GHMuAgFfEeS0nNJt6oyOyQ">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y1N30N6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_JUvaUAFaEeS0nNJt6oyOyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1N30d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.1' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y1bTMN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCodeP" constrainedElement="_JUvaUAFaEeS0nNJt6oyOyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1bTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y1T-cN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_JUvaUAFaEeS0nNJt6oyOyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1UlgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y1_68N6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalMedicationActivity" constrainedElement="_JUvaUAFaEeS0nNJt6oyOyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y1_68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JUxPgAFaEeS0nNJt6oyOyQ" general="_iAoXEBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_y2AiAN6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_y2AiA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y2AiA96jEee0kIKIEebuqA" name="body" constrainedElement="_y2AiAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2AiBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y2AiAd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y2AiAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZgLioAFkEeSJ2uHfynwxCw" name="ProblemSectionEntriesOptional2">
      <ownedComment xmi:id="_iFLCgAFkEeSJ2uHfynwxCw">
        <body>This section lists and describes all relevant clinical problems at the time the document is generated. At a minimum, all pertinent current and historical problems should be listed. Overall health status may be represented in this section.</body>
      </ownedComment>
      <ownedRule xmi:id="_y2BwIN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_ZgLioAFkEeSJ2uHfynwxCw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2BwId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.5' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y2MvQN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_ZgLioAFkEeSJ2uHfynwxCw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2MvQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y2GBkN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCode" constrainedElement="_ZgLioAFkEeSJ2uHfynwxCw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2GBkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y2u6wN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_ZgLioAFkEeSJ2uHfynwxCw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2u6wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProblemConcernAct2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3M00N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptional2HealthStatusObservation2" constrainedElement="_ZgLioAFkEeSJ2uHfynwxCw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3M00d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::HealthStatusObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ZgPNAAFkEeSJ2uHfynwxCw" general="_naxrkBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_y2u6wt6jEee0kIKIEebuqA" name="getConsolProblemConcernAct2s" bodyCondition="_y2u6xd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y2u6xd6jEee0kIKIEebuqA" name="body" constrainedElement="_y2u6wt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y2u6xt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct2)).oclAsType(consol::ProblemConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y2u6w96jEee0kIKIEebuqA" type="_y5C8IOzbEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y2u6xN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_y3Nb4N6jEee0kIKIEebuqA" name="getHealthStatusObservation2" bodyCondition="_y3Nb496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y3Nb496jEee0kIKIEebuqA" name="body" constrainedElement="_y3Nb4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3Nb5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation2))->asSequence()->any(true).oclAsType(consol::HealthStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y3Nb4d6jEee0kIKIEebuqA" type="_DMvdYOEFEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y3Nb4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZFbCkAIPEeS-F85KYVlDyA" name="AdvanceDirectivesSection2">
      <ownedComment xmi:id="_z2qQcAIPEeS-F85KYVlDyA">
        <body>&lt;p>&#xD;
This section contains data defining the patient's advance directives and any reference to supporting documentation, including living wills, healthcare proxies, and CPR and resuscitation status. If the referenced documents are available, they can be included in the exchange package.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The most recent directives are required, if known, and should be listed in as much detail as possible.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
This section differentiates between &quot;advance directives&quot; and &quot;advance directive documents&quot;. The former is the directions to be followed whereas the latter refers to a legal document containing those directions.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_qbVzIKJNEeSOc57SOMra_g" name="AdvanceDirectivesSection2HasAdvanceDirectiveObservation2XorAdvanceDirectiveOrganizer">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_RPDUYKJOEeSOc57SOMra_g">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies self.getObservations()->exists(obs : cda::Observation | obs.oclIsKindOf(consol::AdvanceDirectiveObservation2)) xor self.getOrganizers()->exists(org : cda::Organizer | org.oclIsKindOf(consol::AdvanceDirectiveOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3OqAN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3OqAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.21.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3beUN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCodeP" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3beUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3UJkN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3UJkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3jaIN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2Title" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3jaId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3o5sN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2Text" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3o5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y3uZQN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2NullFlavor" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y3uZQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y4M6YN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptional2AdvanceDirectiveOrganizer" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y4M6Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2L-YQN6jEee0kIKIEebuqA" name="AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2L-YQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2MZPAN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2Entry" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2MZPAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.oclIsUndefined() and entry.oclIsKindOf(cda::Entry))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6G1rUN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2EntryAdvanceDirectiveOrganizer" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6G1rUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entry->excluding(null)->reject(organizer->one(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::AdvanceDirectiveOrganizer)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6G2SYN6jEee0kIKIEebuqA" name="AdvanceDirectivesSection2EntryAdvanceDirectiveObservation2" constrainedElement="_ZFbCkAIPEeS-F85KYVlDyA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6G2SYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entry->excluding(null)->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ZFc3wAIPEeS-F85KYVlDyA" general="_jsKhYAFXEeSLIY0bHb-fFQ"/>
      <ownedOperation xmi:id="_y4NhcN6jEee0kIKIEebuqA" name="getConsolAdvanceDirectiveOrganizers" bodyCondition="_y4Nhc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y4Nhc96jEee0kIKIEebuqA" name="body" constrainedElement="_y4NhcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y4NhdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::AdvanceDirectiveOrganizer)).oclAsType(consol::AdvanceDirectiveOrganizer)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y4Nhcd6jEee0kIKIEebuqA" type="_Z8VQYIlFEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y4Nhct6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2L-_UN6jEee0kIKIEebuqA" name="getConsolAdvanceDirectiveObservation2s" bodyCondition="_2L-_U96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2L-_U96jEee0kIKIEebuqA" name="body" constrainedElement="_2L-_UN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2L-_VN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)).oclAsType(consol::AdvanceDirectiveObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2L-_Ud6jEee0kIKIEebuqA" type="_GnllUK-9EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2L-_Ut6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_nWAcMAIjEeSVzfoPSatgpg" name="AllergiesSectionEntriesOptional2">
      <ownedComment xmi:id="_w56bYAIjEeSVzfoPSatgpg">
        <body>This section lists and describes any medication allergies, adverse reactions, idiosyncratic reactions, anaphylaxis/anaphylactoid reactions to food items, and metabolic variations or adverse reactions/allergies to other substances (such as latex, iodine, tape adhesives). At a minimum, it should list currently active and any relevant historical allergies and adverse reactions.</body>
      </ownedComment>
      <ownedRule xmi:id="_y4OIgN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_nWAcMAIjEeSVzfoPSatgpg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y4OIgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.6' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y4WrYN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCodeP" constrainedElement="_nWAcMAIjEeSVzfoPSatgpg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y4WrYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y4RL0N6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_nWAcMAIjEeSVzfoPSatgpg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y4RL0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y40lcN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalAllergyProblemAct" constrainedElement="_nWAcMAIjEeSVzfoPSatgpg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y40lcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AllergyConcernAct2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_nWC4cAIjEeSVzfoPSatgpg" general="_bGzYgBVdEeGQCvUGzi1kDQ"/>
      <ownedOperation xmi:id="_y41MgN6jEee0kIKIEebuqA" name="getConsolAllergyConcernAct2s" bodyCondition="_y41Mg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y41Mg96jEee0kIKIEebuqA" name="body" constrainedElement="_y41MgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y41MhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AllergyConcernAct2)).oclAsType(consol::AllergyConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y41Mgd6jEee0kIKIEebuqA" type="_uCiIYLNwEeOtlapy2HWYww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y41Mgt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_EONPMAInEeSr1aKUYorURA" name="AllergiesSection2">
      <ownedComment xmi:id="_MQKTcAInEeSr1aKUYorURA">
        <body>This section lists and describes any medication allergies, adverse reactions, idiosyncratic reactions, anaphylaxis/anaphylactoid reactions to food items, and metabolic variations or adverse reactions/allergies to other substances (such as latex, iodine, tape adhesives). At a minimum, it should list currently active and any relevant historical allergies and adverse reactions.</body>
      </ownedComment>
      <ownedRule xmi:id="_y42aoN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y42aod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.6.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y45d8N6jEee0kIKIEebuqA" name="AllergiesSection2NullFlavor" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y45d8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y5DO8N6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCodeP" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5DO8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y49IUN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y49IUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y5JVkN6jEee0kIKIEebuqA" name="AllergiesSection2Title" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5JVkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y5NnAN6jEee0kIKIEebuqA" name="AllergiesSection2Text" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5NnAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y5sIIN6jEee0kIKIEebuqA" name="AllergiesSectionEntriesOptionalAllergyProblemAct" constrainedElement="_EONPMAInEeSr1aKUYorURA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5sIId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::AllergyConcernAct2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_EOQSgAInEeSr1aKUYorURA" general="_nWAcMAIjEeSVzfoPSatgpg"/>
      <ownedOperation xmi:id="_y5sIIt6jEee0kIKIEebuqA" name="getConsolAllergyConcernAct2s" bodyCondition="_y5svMt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y5svMt6jEee0kIKIEebuqA" name="body" constrainedElement="_y5sIIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5svM96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AllergyConcernAct2)).oclAsType(consol::AllergyConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y5svMN6jEee0kIKIEebuqA" type="_uCiIYLNwEeOtlapy2HWYww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y5svMd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ogD-EAIvEeScubSeRE1upQ" name="EncountersSection2">
      <ownedComment xmi:id="_2f59EAIvEeScubSeRE1upQ">
        <body>This section lists and describes any healthcare encounters pertinent to the patient's current health status or historical health history. An encounter is an interaction, regardless of the setting, between a patient and a practitioner who is vested with primary responsibility for diagnosing, evaluating, or treating the patient's condition. It may include visits, appointments, as well as non-face-to-face interactions. It is also a contact between a patient and a practitioner who has primary responsibility (exercising independent judgment) for assessing and treating the patient at a given contact. This section may contain all encounters for the time period being summarized, but should include notable encounters.</body>
      </ownedComment>
      <ownedRule xmi:id="_y5tWQN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5t9UN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.22.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y5xAoN6jEee0kIKIEebuqA" name="EncountersSection2NullFlavor" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y5xAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y56xoN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y56xod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y50rAN6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalCode" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y50rAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6A4QN6jEee0kIKIEebuqA" name="EncountersSection2Text" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6A4Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6FwwN6jEee0kIKIEebuqA" name="EncountersSection2Title" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6Fwwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6jq0N6jEee0kIKIEebuqA" name="EncountersSectionEntriesOptionalEncounterActivities" constrainedElement="_ogD-EAIvEeScubSeRE1upQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6jq0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::EncounterActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_ogHBYAIvEeScubSeRE1upQ" general="_kgM0YPvbEeOJwYDYIUCQDg"/>
      <ownedOperation xmi:id="_y6kR4N6jEee0kIKIEebuqA" name="getConsolEncounterActivity2s" bodyCondition="_y6kR496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y6kR496jEee0kIKIEebuqA" name="body" constrainedElement="_y6kR4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6kR5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivity2)).oclAsType(consol::EncounterActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y6kR4d6jEee0kIKIEebuqA" type="_RGU34MzDEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y6kR4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Jt0moAI0EeSRkrs1G7P_XQ" name="DischargeMedicationsSection2">
      <ownedComment xmi:id="_RgJTcAI0EeSRkrs1G7P_XQ">
        <body>This section contains the medications the patient is intended to take or stop after discharge. Current, active medications must be listed. The section may also include a patient's prescription history and indicate the source of the medication list.</body>
      </ownedComment>
      <ownedRule xmi:id="_y6k48N6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6lgAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.11.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6ojUN6jEee0kIKIEebuqA" name="DischargeMedicationsSection2NullFlavor" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6ojUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6yUUN6jEee0kIKIEebuqA" name="DischargeMedicationsSection2CodeP" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6yUUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y6sNsN6jEee0kIKIEebuqA" name="DischargeMedicationsSection2Code" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y6sNsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y64a8N6jEee0kIKIEebuqA" name="DischargeMedicationsSection2Title" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y64a8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y68sYN6jEee0kIKIEebuqA" name="DischargeMedicationsSection2Text" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y68sYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y7iiQN6jEee0kIKIEebuqA" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7iiQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::DischargeMedication2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6G7x8N6jEee0kIKIEebuqA" name="DischargeMedicationsSection2CETranslation" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6G7x8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75311-1' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6G8ZAN6jEee0kIKIEebuqA" name="DischargeMedicationsSection2CETranslationP" constrainedElement="_Jt0moAI0EeSRkrs1G7P_XQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6G8ZAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Jt3p8AI0EeSRkrs1G7P_XQ" general="_HlfBYPyzEeOfAK77IvEBUw"/>
      <ownedOperation xmi:id="_y7jJUN6jEee0kIKIEebuqA" name="getConsolDischargeMedication2s" bodyCondition="_y7jJU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y7jJU96jEee0kIKIEebuqA" name="body" constrainedElement="_y7jJUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7jJVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::DischargeMedication2)).oclAsType(consol::DischargeMedication2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y7jJUd6jEee0kIKIEebuqA" type="_EIeu8MyjEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y7jJUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_14bikALNEeSIPYXg7AgJzw" name="ImmunizationsSection2">
      <ownedComment xmi:id="_64PrgALNEeSIPYXg7AgJzw">
        <body>The Immunizations Section defines a patient's current immunization status and pertinent immunization history. The primary use case for the Immunization Section is to enable communication of a patient's immunization status. The section should include current immunization status, and may contain the entire immunization history that is relevant to the period of time being summarized.</body>
      </ownedComment>
      <ownedRule xmi:id="_y7kXcN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7kXcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.2.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y7nawN6jEee0kIKIEebuqA" name="ImmunizationsSection2NullFlavor" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7nawd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y7xLwN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCodeP" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7xLwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y7rFIN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y7rFId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y735cN6jEee0kIKIEebuqA" name="ImmunizationsSection2Title" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y735cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y78K4N6jEee0kIKIEebuqA" name="ImmunizationsSection2Text" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y78K4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8asAN6jEee0kIKIEebuqA" name="ImmunizationsSectionEntriesOptionalImmunizationActivity" constrainedElement="_14bikALNEeSIPYXg7AgJzw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8asAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_14dXwALNEeSIPYXg7AgJzw" general="_kdQhIPy3EeO1SvUcmWeLDQ"/>
      <ownedOperation xmi:id="_y8asAt6jEee0kIKIEebuqA" name="getConsolImmunizationActivity2s" bodyCondition="_y8asBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y8asBd6jEee0kIKIEebuqA" name="body" constrainedElement="_y8asAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8asBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2)).oclAsType(consol::ImmunizationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y8asA96jEee0kIKIEebuqA" type="_zI6vcOE7EeOTq9XEMvvkWw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y8asBN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_P2mp4ALQEeS0YMHMf4rRtQ" name="MedicationsSection2">
      <ownedComment xmi:id="_w0ZgoALQEeS0YMHMf4rRtQ">
        <body>The Medications Section contains a patient's current medications and pertinent medication history. At a minimum, the currently active medications are listed. An entire medication history is an option. The section can describe a patient's prescription and dispense history and information about intended drug monitoring. &#xD;
This section requires either an entry indicating the subject is not known to be on any medications or entries summarizing the subject's medications.</body>
      </ownedComment>
      <ownedRule xmi:id="_y8b6IN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8b6Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.1.1' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8e9cN6jEee0kIKIEebuqA" name="MedicationsSection2NullFlavor" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8fkgN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8oucN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCodeP" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8oucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8in0N6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8jO4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8vcIN6jEee0kIKIEebuqA" name="MedicationsSection2Title" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8vcId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y8ztkN6jEee0kIKIEebuqA" name="MedicationsSection2Text" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y8ztkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9SOsN6jEee0kIKIEebuqA" name="MedicationsSectionEntriesOptionalMedicationActivity" constrainedElement="_P2mp4ALQEeS0YMHMf4rRtQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9SOsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::MedicationActivity2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_P2ofEALQEeS0YMHMf4rRtQ" general="_JUvaUAFaEeS0nNJt6oyOyQ"/>
      <ownedOperation xmi:id="_y9SOst6jEee0kIKIEebuqA" name="getConsolMedicationActivity2s" bodyCondition="_y9SOtd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y9SOtd6jEee0kIKIEebuqA" name="body" constrainedElement="_y9SOst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9SOtt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y9SOs96jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y9SOtN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_IXrA4ALVEeSyydFGYJajGA" name="ProblemSection2">
      <ownedComment xmi:id="_1M5_sALVEeSyydFGYJajGA">
        <body>This section lists and describes all relevant clinical problems at the time the document is generated. At a minimum, all pertinent current and historical problems should be listed. Overall health status may be represented in this section.</body>
      </ownedComment>
      <ownedRule xmi:id="_y9Tc0N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9Tc0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.5.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9WgIN6jEee0kIKIEebuqA" name="ProblemSection2NullFlavor" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9WgId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9kikN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9kikd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9aKgN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalCode" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9aKgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9rQQN6jEee0kIKIEebuqA" name="ProblemSection2Title" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9rQQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y9vhsN6jEee0kIKIEebuqA" name="ProblemSection2Text" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9vhsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-Op4N6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-Op4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProblemConcernAct2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-qHsN6jEee0kIKIEebuqA" name="ProblemSectionEntriesOptional2HealthStatusObservation2" constrainedElement="_IXrA4ALVEeSyydFGYJajGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-qHsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->one(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::HealthStatusObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_IXs2EALVEeSyydFGYJajGA" general="_ZgLioAFkEeSJ2uHfynwxCw"/>
      <ownedOperation xmi:id="_y-Op4t6jEee0kIKIEebuqA" name="getConsolProblemConcernAct2s" bodyCondition="_y-Op5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y-Op5d6jEee0kIKIEebuqA" name="body" constrainedElement="_y-Op4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-PQ8N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct2)).oclAsType(consol::ProblemConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y-Op496jEee0kIKIEebuqA" type="_y5C8IOzbEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y-Op5N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_y-qHst6jEee0kIKIEebuqA" name="getConsolHealthStatusObservation2" bodyCondition="_y-quwd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y-quwd6jEee0kIKIEebuqA" name="body" constrainedElement="_y-qHst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-quwt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation2))->asSequence()->any(true).oclAsType(consol::HealthStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y-qHs96jEee0kIKIEebuqA" type="_DMvdYOEFEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y-quwN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_N6wUUALoEeSBA9s7kRnaEg" name="ProceduresSection2">
      <ownedComment xmi:id="_S_JbQALoEeSBA9s7kRnaEg">
        <body>This section describes all interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated. The section should include notable procedures, but can contain all procedures for the period of time being summarized. The common notion of &quot;procedure&quot; is broader than that specified by the HL7 Version 3 Reference Information Model (RIM), therefore this section contains procedure templates represented with three RIM classes: Act. Observation, and Procedure. Procedure act is for procedures that alter the physical condition of a patient (e.g., splenectomy). Observation act is for procedures that result in new information about a patient but do not cause physical alteration (e.g., EEG). Act is for all other types of procedures (e.g., dressing change).</body>
      </ownedComment>
      <ownedRule xmi:id="_kd9woALqEeSBA9s7kRnaEg" name="ProceduresSection2HasProcedureActivity">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kd9woQLqEeSBA9s7kRnaEg">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies self.getActs()->exists(a : cda::Act | a.oclIsKindOf(consol::ProcedureActivityAct)) or self.getObservations()->exists(o : cda::Observation | o.oclIsKindOf(consol::ProcedureActivityObservation)) or self.getProcedures()->exists(p : cda::Procedure | p.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-rV0N6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-r84N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.7.1' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-w1YN6jEee0kIKIEebuqA" name="ProceduresSection2NullFlavor" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-w1Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-7NcN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-7Ncd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y-0fwN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y-0fwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y_CiMN6jEee0kIKIEebuqA" name="ProceduresSection2Title" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y_CiMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y_GzoN6jEee0kIKIEebuqA" name="ProceduresSection2Text" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y_Gzod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_y_lUwN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityProcedure" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_y_lUwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zACAsN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityObservation" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zACAsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zAesoN6jEee0kIKIEebuqA" name="ProceduresSectionEntriesOptionalProcedureActivityAct" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAesod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>true</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2PoJMN6jEee0kIKIEebuqA" name="ProceduresSection2Entry" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2PoJMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.oclIsUndefined() and entry.oclIsKindOf(cda::Entry))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6HXPwN6jEee0kIKIEebuqA" name="ProceduresSection2EntryProcedureActivityAct2" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6HXPwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entry->excluding(null)->reject(act->one(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6HX20N6jEee0kIKIEebuqA" name="ProceduresSection2EntryProcedureActivityObservation2" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6HX20d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entry->excluding(null)->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6HYd4N6jEee0kIKIEebuqA" name="ProceduresSection2EntryProcedureActivityProcedure2" constrainedElement="_N6wUUALoEeSBA9s7kRnaEg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6HYd4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entry->excluding(null)->reject(procedure->one(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_N6zXoALoEeSBA9s7kRnaEg" general="_80dMoAB0EeSLOb2O6vSPzg"/>
      <ownedOperation xmi:id="_y_lUwt6jEee0kIKIEebuqA" name="getConsolProcedureActivityProcedure2s" bodyCondition="_y_l70t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_y_l70t6jEee0kIKIEebuqA" name="body" constrainedElement="_y_lUwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_y_l7096jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_y_l70N6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y_l70d6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zACnwN6jEee0kIKIEebuqA" name="getConsolProcedureActivityObservation2s" bodyCondition="_zACnw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zACnw96jEee0kIKIEebuqA" name="body" constrainedElement="_zACnwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zACnxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation2)).oclAsType(consol::ProcedureActivityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zACnwd6jEee0kIKIEebuqA" type="_QoLWAPDjEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zACnwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zAfTsN6jEee0kIKIEebuqA" name="getConsolProcedureActivityAct2s" bodyCondition="_zAfTs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zAfTs96jEee0kIKIEebuqA" name="body" constrainedElement="_zAfTsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAfTtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct2)).oclAsType(consol::ProcedureActivityAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zAfTsd6jEee0kIKIEebuqA" type="_CFMuYPDbEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zAfTst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_bAAhEALtEeSueJWOLw5iaQ" name="ResultsSection2">
      <ownedComment xmi:id="_gHqXYALtEeSueJWOLw5iaQ">
        <body>&lt;p>&#xD;
The Results Section contains observations of results generated by laboratories, imaging procedures, and other procedures. These coded result observations are contained within a Results Organizer in the Results Section. The scope includes observations such as hematology, chemistry, serology, virology, toxicology, microbiology, plain x-ray, ultrasound, CT, MRI, angiography, echocardiography, nuclear medicine, pathology, and procedure observations. The section often includes notable results such as abnormal values or relevant trends, and could contain all results for the period of time being documented.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Laboratory results are typically generated by laboratories providing analytic services in areas such as chemistry, hematology, serology, histology, cytology, anatomic pathology, microbiology, and/or virology. These observations are based on analysis of specimens obtained from the patient and submitted to the laboratory.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Imaging results are typically generated by a clinician reviewing the output of an imaging procedure, such as where a cardiologist reports the left ventricular ejection fraction based on the review of a cardiac echocardiogram.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Procedure results are typically generated by a clinician to provide more granular information about component observations made during a procedure, such as where a gastroenterologist reports the size of a polyp observed during a colonoscopy.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_zAgh0N6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAgh0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.3.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zAjlIN6jEee0kIKIEebuqA" name="ResultsSection2NullFlavor" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAjlId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zAtWIN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAtWId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zAnPgN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalCode" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zAnPgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zAzcwN6jEee0kIKIEebuqA" name="ResultsSection2Title" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zA0D0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zA48UN6jEee0kIKIEebuqA" name="ResultsSection2Text" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zA48Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zBZ5sN6jEee0kIKIEebuqA" name="ResultsSectionEntriesOptionalResultOrganizer" constrainedElement="_bAAhEALtEeSueJWOLw5iaQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBZ5sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::ResultOrganizer2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_bAC9UALtEeSueJWOLw5iaQ" general="_yaJ3QAFAEeSaVZ5WxWd94w"/>
      <ownedOperation xmi:id="_zBZ5st6jEee0kIKIEebuqA" name="getConsolResultOrganizer2s" bodyCondition="_zBZ5td6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zBZ5td6jEee0kIKIEebuqA" name="body" constrainedElement="_zBZ5st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBZ5tt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer2)).oclAsType(consol::ResultOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zBZ5s96jEee0kIKIEebuqA" type="_gU40UPGEEeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zBZ5tN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_D3010ALzEeSM0Jd2D1FgKw" name="VitalSignsSection2">
      <ownedComment xmi:id="_KuBRkALzEeSM0Jd2D1FgKw">
        <body>&lt;p>&#xD;
The Vital Signs Section contains relevant vital signs for the context and use case of the document type, such as blood pressure, heart rate, respiratory rate, height, weight, body mass index, head circumference, pulse oximetry, temperature, and body surface area. The section should include notable vital signs such as the most recent, maximum and/or minimum, baseline, or relevant trends.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Vital signs are represented in the same way as other results, but are aggregated into their own section to follow clinical conventions.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_zBbH0N6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBbu4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.4.1' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zBgnYN6jEee0kIKIEebuqA" name="VitalSignsSection2NullFlavor" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBgnYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('nullFlavor')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zBtbsN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCodeP" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBtbsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zBk40N6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zBlf4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zB1XgN6jEee0kIKIEebuqA" name="VitalSignsSection2Title" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zB1Xgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zB5o8N6jEee0kIKIEebuqA" name="VitalSignsSection2Text" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zB5o8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zCYKEN6jEee0kIKIEebuqA" name="VitalSignsSectionEntriesOptionalVitalSignsOrganizer" constrainedElement="_D3010ALzEeSM0Jd2D1FgKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zCYKEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::VitalSignsOrganizer2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_D33SEALzEeSM0Jd2D1FgKw" general="_8LkzYAFTEeSmasYc71ZgMQ"/>
      <ownedOperation xmi:id="_zCYKEt6jEee0kIKIEebuqA" name="getConsolVitalSignsOrganizer2s" bodyCondition="_zCYKFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zCYKFd6jEee0kIKIEebuqA" name="body" constrainedElement="_zCYKEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zCYKFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::VitalSignsOrganizer2)).oclAsType(consol::VitalSignsOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zCYKE96jEee0kIKIEebuqA" type="_dDupoPV2EeONioZkBKP8eQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zCYKFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_PkP3oCFmEeSt4IEYu7xgbw" name="ConsultationNote2">
      <ownedComment xmi:id="_jfbzsCFmEeSt4IEYu7xgbw">
        <body>&lt;p>&#xD;
The Consultation Note is generated by a request from a clinician for an opinion or advice from another clinician. Consultations may involve face-to-face time with the patient or may fall under the auspices of telemedicine visits. Consultations may occur while the patient is inpatient or ambulatory. The Consultation Note should also be used to summarize an Emergency Room or Urgent Care encounter.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Consultation Note includes the reason for the referral, history of present illness, physical examination, and decision-making components (Assessment and Plan).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_OvlKkCGUEeSt4IEYu7xgbw" name="ConsultationNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_OvlKkSGUEeSt4IEYu7xgbw">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_QEkAgCGUEeSt4IEYu7xgbw" name="ConsultationNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_QEkAgSGUEeSt4IEYu7xgbw">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Q1sigCGUEeSt4IEYu7xgbw" name="ConsultationNote2DoesNotHaveChiefComplaintWithChiefComplaintOrReasonForVisitSection">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q1sigSGUEeSt4IEYu7xgbw">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_N-CYkDu6EeWD4MX6K2c_gA" name="ConsultationNote2HasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_N-CYkTu6EeWD4MX6K2c_gA">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zLFaIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zLFaId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.4' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zLr3EN6jEee0kIKIEebuqA" name="ConsultationNote2CodeP" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zLr3Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zLNV8N6jEee0kIKIEebuqA" name="ConsultationNote2Code" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zLNV8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11488-4' or value.code = '34100-8' or value.code = '34104-0' or value.code = '51845-6' or value.code = '51853-0' or value.code = '51846-4' or value.code = '34101-6' or value.code = '34749-2' or value.code = '34102-4' or value.code = '34099-2' or value.code = '34756-7' or value.code = '34758-3' or value.code = '34760-9' or value.code = '34879-7' or value.code = '34761-7' or value.code = '34764-1' or value.code = '34771-6' or value.code = '34776-5' or value.code = '34777-3' or value.code = '34779-9' or value.code = '34781-5' or value.code = '34783-1' or value.code = '34785-6' or value.code = '34795-5' or value.code = '34797-1' or value.code = '34798-9' or value.code = '34800-3' or value.code = '34803-7' or value.code = '34855-7' or value.code = '34805-2' or value.code = '34807-8' or value.code = '34810-2' or value.code = '34812-8' or value.code = '34814-4' or value.code = '34816-9' or value.code = '34820-1' or value.code = '34822-7' or value.code = '34824-3' or value.code = '34826-8' or value.code = '34828-4' or value.code = '34788-0' or value.code = '34791-4' or value.code = '34103-2' or value.code = '34831-8' or value.code = '34833-4' or value.code = '34835-9' or value.code = '34837-5' or value.code = '34839-1' or value.code = '34841-7' or value.code = '34845-8' or value.code = '34847-4' or value.code = '34849-0' or value.code = '34851-6' or value.code = '34853-2'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zNIokN6jEee0kIKIEebuqA" name="ConsultationNote2Participant" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zNIokd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::CALLBCK)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zO0DkN6jEee0kIKIEebuqA" name="ConsultationNote2InFulfillmentOf" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zO0Dkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zPuCgN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOf" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zPuCgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zSGBEN6jEee0kIKIEebuqA" name="ConsultationNote2AssessmentSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zSGBEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zShe4N6jEee0kIKIEebuqA" name="ConsultationNote2AssessmentAndPlanSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zShe4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zS-K0N6jEee0kIKIEebuqA" name="ConsultationNote2PlanOfTreatmentSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zS-K0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zTYagN6jEee0kIKIEebuqA" name="ConsultationNote2ReasonForVisitSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zTYagd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zTyDIN6jEee0kIKIEebuqA" name="ConsultationNote2HistoryOfPresentIllnessSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zTyDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zULEsN6jEee0kIKIEebuqA" name="ConsultationNote2PhysicalExamSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zULEsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zUktUN6jEee0kIKIEebuqA" name="ConsultationNote2AllergiesSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zUktUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zU9H0N6jEee0kIKIEebuqA" name="ConsultationNote2ChiefComplaintSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zU9u4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zVWJYN6jEee0kIKIEebuqA" name="ConsultationNote2ChiefComplaintAndReasonForVisitSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zVWJYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zVvyAN6jEee0kIKIEebuqA" name="ConsultationNote2GeneralStatusSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zVvyAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zWJaoN6jEee0kIKIEebuqA" name="ConsultationNote2HistoryOfPastIllnessSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zWJaod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zWicMN6jEee0kIKIEebuqA" name="ConsultationNote2ImmunizationsSectionEntriesOptional2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zWicMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zW8E0N6jEee0kIKIEebuqA" name="ConsultationNote2MedicationsSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zW8E0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zXVGYN6jEee0kIKIEebuqA" name="ConsultationNote2ProblemSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zXVGYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zXuvAN6jEee0kIKIEebuqA" name="ConsultationNote2ProceduresSectionEntriesOptional2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zXuvAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zYHJgN6jEee0kIKIEebuqA" name="ConsultationNote2ResultsSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zYHJgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zYgyIN6jEee0kIKIEebuqA" name="ConsultationNote2SocialHistorySection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zYgyId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zY9eEN6jEee0kIKIEebuqA" name="ConsultationNote2VitalSignsSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zY9eEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zZWfoN6jEee0kIKIEebuqA" name="ConsultationNote2AdvanceDirectivesSectionEntriesOptional2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zZWfod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zZwvUN6jEee0kIKIEebuqA" name="ConsultationNote2FunctionalStatusSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zZwvUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zaJw4N6jEee0kIKIEebuqA" name="ConsultationNote2ReviewOfSystemsSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zaJw4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zajZgN6jEee0kIKIEebuqA" name="ConsultationNote2MedicalEquipmentSection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zajZgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_za8bEN6jEee0kIKIEebuqA" name="ConsultationNote2MentalStatusSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_za8bEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zbZuEN6jEee0kIKIEebuqA" name="ConsultationNote2NutritionSection" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zbZuEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2DDs0N6jEee0kIKIEebuqA" name="ConsultationNote2FamilyHistorySection2" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2DDs0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Il-0N6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityAssociatedPersonName" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Il-0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (( not name->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Iml4N6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityClassCode" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Iml4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(classCode=vocab::RoleClassAssociative::ASSIGNED)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6InM8N6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityId" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6InM8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6InM8t6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityAddr" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6InM896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6In0AN6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityTelecom" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6In0Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (( not telecom->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6IobEN6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityAssociatedPerson" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6IobEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6IpCIN6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntityScopingOrganization" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6IpCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK).associatedEntity->excluding(null)->reject(scopingOrganization->one(scopingOrganization : cda::Organization | not scopingOrganization.oclIsUndefined() and scopingOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6IppMN6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantTypeCode" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6IppMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK)->select(typeCode = vocab::ParticipationType::CALLBCK)->reject(typeCode=vocab::ParticipationType::CALLBCK)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6IppMt6jEee0kIKIEebuqA" name="ConsultationNote2ParticipantAssociatedEntity" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6IppM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::CALLBCK)->select(typeCode = vocab::ParticipationType::CALLBCK)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6JeIkN6jEee0kIKIEebuqA" name="ConsultationNote2InFulfillmentOfOrderId" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6JeIkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null).order->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6JevoN6jEee0kIKIEebuqA" name="ConsultationNote2InFulfillmentOfOrder" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Jevod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null)->reject(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6KUdIN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KVEMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 8) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 8) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 8))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6KVEMd6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KVEMt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 12) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 12) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 12))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6KVrQN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KVrQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 14) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 14) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 14))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6KWSUN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KWSUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject((not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15) and ((not low.value.oclIsUndefined() and low.value.size() > 8 implies low.value.size() >= 15) and (not high.value.oclIsUndefined() and high.value.size() > 8 implies high.value.size() >= 15)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6KyXMN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6KyXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Ky-QN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Ky-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LL_0N6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LL_0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LMm4N6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LMm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LNN8N6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterId" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LNN8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LN1AN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LN1Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LOcEN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterResponsibleParty" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LOcEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LPDIN6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipant" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LPDId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->exists(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6LPDIt6jEee0kIKIEebuqA" name="ConsultationNote2ComponentOfEncompassingEncounter" constrainedElement="_PkP3oCFmEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6LPDI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_PkS68CFmEeSt4IEYu7xgbw" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_zSGoIN6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_zSGoI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zSGoI96jEee0kIKIEebuqA" name="body" constrainedElement="_zSGoIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zSGoJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zSGoId6jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zSGoIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zShe4t6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_zSiF8N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zSiF8N6jEee0kIKIEebuqA" name="body" constrainedElement="_zShe4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zSiF8d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zShe496jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zShe5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zS-K0t6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_zS-x4N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zS-x4N6jEee0kIKIEebuqA" name="body" constrainedElement="_zS-K0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zS-x4d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zS-K096jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zS-K1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zTYagt6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_zTYahd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zTYahd6jEee0kIKIEebuqA" name="body" constrainedElement="_zTYagt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zTYaht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zTYag96jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zTYahN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zTyqMN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_zTyqM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zTyqM96jEee0kIKIEebuqA" name="body" constrainedElement="_zTyqMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zTyqNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zTyqMd6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zTyqMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zULrwN6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_zULrw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zULrw96jEee0kIKIEebuqA" name="body" constrainedElement="_zULrwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zULrxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zULrwd6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zULrwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zUktUt6jEee0kIKIEebuqA" name="getAllergiesSection2" bodyCondition="_zUktVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zUktVd6jEee0kIKIEebuqA" name="body" constrainedElement="_zUktUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zUktVt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))->asSequence()->any(true).oclAsType(consol::AllergiesSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zUktU96jEee0kIKIEebuqA" type="_EONPMAInEeSr1aKUYorURA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zUktVN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zU9u4d6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_zU9u5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zU9u5N6jEee0kIKIEebuqA" name="body" constrainedElement="_zU9u4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zU9u5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zU9u4t6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zU9u496jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zVWwcN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_zVWwc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zVWwc96jEee0kIKIEebuqA" name="body" constrainedElement="_zVWwcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zVWwdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zVWwcd6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zVWwct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zVvyAt6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_zVvyBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zVvyBd6jEee0kIKIEebuqA" name="body" constrainedElement="_zVvyAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zVvyBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zVvyA96jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zVvyBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zWJaot6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_zWJapd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zWJapd6jEee0kIKIEebuqA" name="body" constrainedElement="_zWJaot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zWJapt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zWJao96jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zWJapN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zWjDQN6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional2" bodyCondition="_zWjDQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zWjDQ96jEee0kIKIEebuqA" name="body" constrainedElement="_zWjDQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zWjDRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zWjDQd6jEee0kIKIEebuqA" type="_kdQhIPy3EeO1SvUcmWeLDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zWjDQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zW8E0t6jEee0kIKIEebuqA" name="getMedicationsSection2" bodyCondition="_zW8r4N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zW8r4N6jEee0kIKIEebuqA" name="body" constrainedElement="_zW8E0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zW8r4d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))->asSequence()->any(true).oclAsType(consol::MedicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zW8E096jEee0kIKIEebuqA" type="_P2mp4ALQEeS0YMHMf4rRtQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zW8E1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zXVtcN6jEee0kIKIEebuqA" name="getProblemSection2" bodyCondition="_zXVtc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zXVtc96jEee0kIKIEebuqA" name="body" constrainedElement="_zXVtcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zXVtdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))->asSequence()->any(true).oclAsType(consol::ProblemSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zXVtcd6jEee0kIKIEebuqA" type="_IXrA4ALVEeSyydFGYJajGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zXVtct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zXuvAt6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional2" bodyCondition="_zXuvBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zXuvBd6jEee0kIKIEebuqA" name="body" constrainedElement="_zXuvAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zXuvBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zXuvA96jEee0kIKIEebuqA" type="_80dMoAB0EeSLOb2O6vSPzg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zXuvBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zYHwkN6jEee0kIKIEebuqA" name="getResultsSection2" bodyCondition="_zYHwk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zYHwk96jEee0kIKIEebuqA" name="body" constrainedElement="_zYHwkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zYHwlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))->asSequence()->any(true).oclAsType(consol::ResultsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zYHwkd6jEee0kIKIEebuqA" type="_bAAhEALtEeSueJWOLw5iaQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zYHwkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zYhZMN6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_zYhZM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zYhZM96jEee0kIKIEebuqA" name="body" constrainedElement="_zYhZMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zYhZNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zYhZMd6jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zYhZMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zY9eEt6jEee0kIKIEebuqA" name="getVitalSignsSection2" bodyCondition="_zY9eFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zY9eFd6jEee0kIKIEebuqA" name="body" constrainedElement="_zY9eEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zY9eFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))->asSequence()->any(true).oclAsType(consol::VitalSignsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zY9eE96jEee0kIKIEebuqA" type="_D3010ALzEeSM0Jd2D1FgKw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zY9eFN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zZXGsN6jEee0kIKIEebuqA" name="getAdvanceDirectivesSectionEntriesOptional2" bodyCondition="_zZXGs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zZXGs96jEee0kIKIEebuqA" name="body" constrainedElement="_zZXGsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zZXGtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zZXGsd6jEee0kIKIEebuqA" type="_jsKhYAFXEeSLIY0bHb-fFQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zZXGst6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zZxWYN6jEee0kIKIEebuqA" name="getFunctionalStatusSection2" bodyCondition="_zZxWY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zZxWY96jEee0kIKIEebuqA" name="body" constrainedElement="_zZxWYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zZxWZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zZxWYd6jEee0kIKIEebuqA" type="_8rMFkPyHEeOozpLKXSm5NA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zZxWYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zaKX8N6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_zaKX896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zaKX896jEee0kIKIEebuqA" name="body" constrainedElement="_zaKX8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zaKX9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zaKX8d6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zaKX8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zajZgt6jEee0kIKIEebuqA" name="getMedicalEquipmentSection2" bodyCondition="_zajZhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zajZhd6jEee0kIKIEebuqA" name="body" constrainedElement="_zajZgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zajZht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))->asSequence()->any(true).oclAsType(consol::MedicalEquipmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zajZg96jEee0kIKIEebuqA" type="_5OKxwP1bEeO5Hq-yrsJSmg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zajZhN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_za9CIN6jEee0kIKIEebuqA" name="getMentalStatusSection" bodyCondition="_za9CI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_za9CI96jEee0kIKIEebuqA" name="body" constrainedElement="_za9CIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_za9CJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))->asSequence()->any(true).oclAsType(consol::MentalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_za9CId6jEee0kIKIEebuqA" type="_4tfOMJ2CEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_za9CIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zbZuEt6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_zbZuFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zbZuFd6jEee0kIKIEebuqA" name="body" constrainedElement="_zbZuEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zbZuFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zbZuE96jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zbZuFN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2DET4N6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_2DET496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2DET496jEee0kIKIEebuqA" name="body" constrainedElement="_2DET4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2DET5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2DET4d6jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2DET4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_lPMNYCGjEeSt4IEYu7xgbw" name="ContinuityOfCareDocument2">
      <ownedComment xmi:id="_-z2TYCGjEeSt4IEYu7xgbw">
        <body>&lt;p>&#xD;
This document type was originally based on the Continuity of Care Document (CCD) Release 1.1 which itself was derived from HITSP C32 and CCD Release 1.0.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Continuity of Care Document (CCD) represents a core data set of the most relevant administrative, demographic, and clinical information facts about a patient's healthcare, covering one or more healthcare encounters. It provides a means for one healthcare practitioner, system, or setting to aggregate all of the pertinent data about a patient and forward it to another to support the continuity of care.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The primary use case for the CCD is to provide a snapshot in time containing the germane clinical, demographic, and administrative data for a specific patient. The key characteristic of a CCD is that the ServiceEvent is constrained to &quot;PCPR&quot;. This means it does not function to report new ServiceEvents associated with performing care. It reports on care that has already been provided. The CCD provides a historical tally of the care over a range of time and is not a record of new services delivered.&#xD;
More specific use cases, such as a Discharge Summary, Transfer Summary, Referral Note, Consultation Note, or Progress Note, are available as alternative documents in this guide.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_zba8MN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zba8Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.2' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zbmiYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2CodeP" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zbmiYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zbemkN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2Code" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zbemkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '34133-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zchIYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2Author" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zchIYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zdagQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOf" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zdagQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zfY2MN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2AllergiesSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zfY2Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zf1iIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2MedicationsSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zf2JMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zgPx0N6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2ProblemSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zgPx0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zgpacN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2ProceduresSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zgpacd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zhCcAN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2ResultsSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zhCcAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zhbdkN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2AdvanceDirectivesSectionEntriesOptional2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zhcEoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zh1GMN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2EncountersSectionEntriesOptional2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zh1GMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ziOu0N6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2FunctionalStatusSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ziOu0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zioXcN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2ImmunizationsSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zio-gN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zjCAEN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2MedicalEquipmentSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zjCAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zjbosN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2PayersSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zjbosd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zj0qQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2PlanOfTreatmentSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zj1RUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zkOS4N6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2SocialHistorySection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zkOS4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zkpJoN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2VitalSignsSection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zkpJod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zlCyQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2MentalStatusSection" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlDZUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2DdVcN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2NutritionSection" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2DdVcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2D2XAN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2FamilyHistorySection2" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2D2XAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6MJpIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2AuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6MJpId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not assignedPerson.oclIsUndefined()) or (not representedOrganization.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6MKQMN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2AuthorAssignedAuthorHasRepresentOrganization" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6MKQMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not representedOrganization.oclIsUndefined() and assignedPerson.oclIsUndefined() and assignedAuthoringDevice.oclIsUndefined()) implies id->exists(id | not id.isNullFlavorUndefined() and id.nullFlavor = vocab::NullFlavor::NA))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6MK3QN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2AuthorAssignedAuthor" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6MK3Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6NBy4N6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6NBy4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6NCZ8N6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6NCZ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N0dEN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N0dEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject((not assignedPerson.oclIsUndefined() and not id->isEmpty()) implies id->exists(id | (id.isNullFlavorDefined() and id.extension->isEmpty() and id.root->isEmpty()) or (id.isNullFlavorDefined() and id.root='2.16.840.1.113883.4.6') or (id.root='2.16.840.1.113883.4.6' and id.extension->size() = 1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N1EIN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N1EId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N1EIt6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N1EI96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N1rMN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N1rMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N2SQN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N2SQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N25UN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventClassCode" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N25Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N3gYN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventEffectiveTime" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N3gYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N3gYt6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEventPerformer" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N3gY96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6N4HcN6jEee0kIKIEebuqA" name="ContinuityOfCareDocument2DocumentationOfServiceEvent" constrainedElement="_lPMNYCGjEeSt4IEYu7xgbw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6N4Hcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lPMNYSGjEeSt4IEYu7xgbw" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_zfZdQN6jEee0kIKIEebuqA" name="getAllergiesSection2" bodyCondition="_zfZdQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zfZdQ96jEee0kIKIEebuqA" name="body" constrainedElement="_zfZdQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zfZdRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection2))->asSequence()->any(true).oclAsType(consol::AllergiesSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zfZdQd6jEee0kIKIEebuqA" type="_EONPMAInEeSr1aKUYorURA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zfZdQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zf2JMd6jEee0kIKIEebuqA" name="getMedicationsSection2" bodyCondition="_zf2JNN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zf2JNN6jEee0kIKIEebuqA" name="body" constrainedElement="_zf2JMd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zf2JNd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection2))->asSequence()->any(true).oclAsType(consol::MedicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zf2JMt6jEee0kIKIEebuqA" type="_P2mp4ALQEeS0YMHMf4rRtQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zf2JM96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zgPx0t6jEee0kIKIEebuqA" name="getProblemSection2" bodyCondition="_zgQY4t6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zgQY4t6jEee0kIKIEebuqA" name="body" constrainedElement="_zgPx0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zgQY496jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection2))->asSequence()->any(true).oclAsType(consol::ProblemSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zgQY4N6jEee0kIKIEebuqA" type="_IXrA4ALVEeSyydFGYJajGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zgQY4d6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zgpact6jEee0kIKIEebuqA" name="getProceduresSection2" bodyCondition="_zgpadd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zgpadd6jEee0kIKIEebuqA" name="body" constrainedElement="_zgpact6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zgpadt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection2))->asSequence()->any(true).oclAsType(consol::ProceduresSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zgpac96jEee0kIKIEebuqA" type="_N6wUUALoEeSBA9s7kRnaEg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zgpadN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zhDDEN6jEee0kIKIEebuqA" name="getResultsSection2" bodyCondition="_zhDDE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zhDDE96jEee0kIKIEebuqA" name="body" constrainedElement="_zhDDEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zhDDFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection2))->asSequence()->any(true).oclAsType(consol::ResultsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zhDDEd6jEee0kIKIEebuqA" type="_bAAhEALtEeSueJWOLw5iaQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zhDDEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zhcEod6jEee0kIKIEebuqA" name="getAdvanceDirectivesSectionEntriesOptional2" bodyCondition="_zhcEpN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zhcEpN6jEee0kIKIEebuqA" name="body" constrainedElement="_zhcEod6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zhcEpd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdvanceDirectivesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zhcEot6jEee0kIKIEebuqA" type="_jsKhYAFXEeSLIY0bHb-fFQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zhcEo96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zh1tQN6jEee0kIKIEebuqA" name="getEncountersSectionEntriesOptional2" bodyCondition="_zh1tQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zh1tQ96jEee0kIKIEebuqA" name="body" constrainedElement="_zh1tQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zh1tRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::EncountersSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zh1tQd6jEee0kIKIEebuqA" type="_kgM0YPvbEeOJwYDYIUCQDg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zh1tQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_ziOu0t6jEee0kIKIEebuqA" name="getFunctionalStatusSection2" bodyCondition="_ziOu1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_ziOu1d6jEee0kIKIEebuqA" name="body" constrainedElement="_ziOu0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_ziOu1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_ziOu096jEee0kIKIEebuqA" type="_8rMFkPyHEeOozpLKXSm5NA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ziOu1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zio-gd6jEee0kIKIEebuqA" name="getImmunizationsSection2" bodyCondition="_zio-hN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zio-hN6jEee0kIKIEebuqA" name="body" constrainedElement="_zio-gd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zio-hd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zio-gt6jEee0kIKIEebuqA" type="_14bikALNEeSIPYXg7AgJzw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zio-g96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zjCnIN6jEee0kIKIEebuqA" name="getMedicalEquipmentSection2" bodyCondition="_zjCnI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zjCnI96jEee0kIKIEebuqA" name="body" constrainedElement="_zjCnIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zjCnJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection2))->asSequence()->any(true).oclAsType(consol::MedicalEquipmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zjCnId6jEee0kIKIEebuqA" type="_5OKxwP1bEeO5Hq-yrsJSmg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zjCnIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zjcPwN6jEee0kIKIEebuqA" name="getPayersSection2" bodyCondition="_zjcPw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zjcPw96jEee0kIKIEebuqA" name="body" constrainedElement="_zjcPwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zjcPxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection2))->asSequence()->any(true).oclAsType(consol::PayersSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zjcPwd6jEee0kIKIEebuqA" type="_twgM0P4lEeOzC5ykp-XCaA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zjcPwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zj1RUd6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_zj1RVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zj1RVN6jEee0kIKIEebuqA" name="body" constrainedElement="_zj1RUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zj1RVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zj1RUt6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zj1RU96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zkO58N6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_zkO5896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zkO5896jEee0kIKIEebuqA" name="body" constrainedElement="_zkO58N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zkO59N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zkO58d6jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zkO58t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zkpJot6jEee0kIKIEebuqA" name="getVitalSignsSection2" bodyCondition="_zkpwsN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zkpwsN6jEee0kIKIEebuqA" name="body" constrainedElement="_zkpJot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zkpwsd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection2))->asSequence()->any(true).oclAsType(consol::VitalSignsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zkpJo96jEee0kIKIEebuqA" type="_D3010ALzEeSM0Jd2D1FgKw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zkpJpN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zlDZUd6jEee0kIKIEebuqA" name="getMentalStatusSection" bodyCondition="_zlDZVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zlDZVN6jEee0kIKIEebuqA" name="body" constrainedElement="_zlDZUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlDZVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MentalStatusSection))->asSequence()->any(true).oclAsType(consol::MentalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zlDZUt6jEee0kIKIEebuqA" type="_4tfOMJ2CEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zlDZU96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2DdVct6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_2DdVdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2DdVdd6jEee0kIKIEebuqA" name="body" constrainedElement="_2DdVct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2DdVdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2DdVc96jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2DdVdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2D2XAt6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_2D2-Et6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2D2-Et6jEee0kIKIEebuqA" name="body" constrainedElement="_2D2XAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2D2-E96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2D2-EN6jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2D2-Ed6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4JRRsCJnEeSBLYc2hU6GfA" name="DiagnosticImagingReport2">
      <ownedComment xmi:id="_GhvMECJoEeSBLYc2hU6GfA">
        <body>A Diagnostic Imaging Report (DIR) is a document that contains a consulting specialist's interpretation of image data. It conveys the interpretation to the referring (ordering) physician and becomes part of the patient's medical record. It is for use in Radiology, Endoscopy, Cardiology, and other imaging specialties.</body>
      </ownedComment>
      <ownedRule xmi:id="_zlFOgN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlFOgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.5' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zlKuEN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2Id" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlKuEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zlwj8N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2CodeP" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlxLAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zlSp4N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2Code" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zlSp4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zoSTgN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2InformationRecipient" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zoSTgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zosjMN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2Participant" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zosjMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zp-8oN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2InFulfillmentOf" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zp-8od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zq6wwN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOf" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zq6wwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zrta8N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2RelatedDocument" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zrta8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->one(relatedDocument : cda::RelatedDocument | not relatedDocument.oclIsUndefined() and relatedDocument.oclIsKindOf(cda::RelatedDocument))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zsmLwN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOf" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zsmLwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zupaMN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2FindingsSection" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zupaMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zvKXkN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DICOMObjectCatalogSection" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zvK-oN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DICOMObjectCatalogSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_zvnqkN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2Component2" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zvnqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->one(component : cda::Component2 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z6AVoN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2Informant" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z6AVod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informant->select(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(rim::Participation))->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6O6CMN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2IIRootOIDsMustBeNoMoreThan64Characters" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6O6CMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->excluding(null)->select(isNullFlavorUndefined())->reject(id.root.size() &lt;= 64)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6O6pQN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2IIRoot" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6O6pQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not root.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6QFt8N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ParticipantAssociatedEntityPersonName" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6QFt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null).associatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (name->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6QGVAN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ParticipantAssociatedEntityAssociatedPerson" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6QGVAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6QG8EN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ParticipantAssociatedEntity" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6QG8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Q8CgN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2InFulfillmentOfOrderId" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Q8Cgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null).order->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Q8pkN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2InFulfillmentOfOrder" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Q8pkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->excluding(null)->reject(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6R2BcN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOfServiceEventClassCode" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6R2Bcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::ACT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6R2Bct6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOfServiceEventId" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6R2Bc96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6R2ogN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOfServiceEventCode" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6R2ogd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6R3PkN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOfServiceEventPhysicianReadingStudyPerformer2" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6R3Pkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(consol::PhysicianReadingStudyPerformer2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6R32oN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2DocumentationOfServiceEvent" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6R32od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6StkIN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6StkId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null).parentDocument->excluding(null).id->excluding(null)->select(isNullFlavorUndefined())->reject(not root.oclIsUndefined() implies root.size() &lt;= 64)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6SuLMN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2RelatedDocumentParentDocumentId" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6SuLMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null).parentDocument->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() =  1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6SuLMt6jEee0kIKIEebuqA" name="DiagnosticImagingReport2RelatedDocumentParentDocument" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6SuLM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.relatedDocument->excluding(null)->reject(parentDocument->one(parentDocument : cda::ParentDocument | not parentDocument.oclIsUndefined() and parentDocument.oclIsKindOf(cda::ParentDocument)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6TkfwN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6TlG0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 8) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 8) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 8))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6TlG0d6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6TlG0t6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 12) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 12) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 12))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Tlt4N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Tlt4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 14) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 14) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 14))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6TmU8N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6TmU8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject((not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15) and ((not low.value.oclIsUndefined() and low.value.size() > 8 implies low.value.size() >= 15) and (not high.value.oclIsUndefined() and high.value.size() > 8 implies high.value.size() >= 15)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UXxAN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UXxAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->size() = 1 or representedOrganization->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UYYEN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UYYEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UY_IN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterId" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UY_Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UZmMN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UZmMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UaNQN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsibleParty" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UaNQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Ua0UN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounterPhysicianofRecordParticipant2" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Ua0Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(consol::PhysicianofRecordParticipant2)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6UbbYN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentOfEncompassingEncounter" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6UbbYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6WX8IN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubjectFetusSubjectContext" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6WX8Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null).subject->excluding(null)->reject(relatedSubject->one(relatedSubject : cda::RelatedSubject | not relatedSubject.oclIsUndefined() and relatedSubject.oclIsKindOf(consol::FetusSubjectContext)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6WyL0N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSectionsHaveText" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6WyL0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(getAllSections()->forAll(section : cda::Section | not section.text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Wyy4N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCode" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Wyy4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '1.2.840.10008.2.16.4' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6WzZ8N6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeP" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6WzZ8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W0BAN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTitle" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W0BAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject((title.oclIsUndefined() or title.isNullFlavorUndefined()) implies (not title.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W0BAt6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionText" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W0BA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(not text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W0oEN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubject" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W0oEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies subject->exists(subject : cda::Subject | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::Subject)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W1PIN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionAuthor" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W1PId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W12MN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionProcedureContext" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W12Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::ProcedureContext)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W2dQN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTextObservation" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W2dQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::TextObservation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W3EUN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeObservations" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W3EUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CodeObservations)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W3EUt6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionQuantityMeasurementObservation" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W3rYN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::QuantityMeasurementObservation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W3rYd6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSOPInstanceObservation" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W3rYt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null).section->excluding(null)->reject(nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SOPInstanceObservation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W4ScN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3Section" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W4Scd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null).component->excluding(null)->reject(section->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(cda::Section)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W45gN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBodyComponent3" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W45gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).structuredBody->excluding(null)->reject(component->exists(component : cda::Component3 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component3)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6W5gkN6jEee0kIKIEebuqA" name="DiagnosticImagingReport2ComponentStructuredBody" constrainedElement="_4JRRsCJnEeSBLYc2hU6GfA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6W5gkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null)->reject(structuredBody->one(structuredBody : cda::StructuredBody | not structuredBody.oclIsUndefined() and structuredBody.oclIsKindOf(cda::StructuredBody)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4JRRsSJnEeSBLYc2hU6GfA" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_zuqBQN6jEee0kIKIEebuqA" name="getFindingsSection" bodyCondition="_zuqBQ96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zuqBQ96jEee0kIKIEebuqA" name="body" constrainedElement="_zuqBQN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zuqBRN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FindingsSection))->asSequence()->any(true).oclAsType(consol::FindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zuqBQd6jEee0kIKIEebuqA" type="_ZcC-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zuqBQt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_zvK-od6jEee0kIKIEebuqA" name="getDICOMObjectCatalogSection" bodyCondition="_zvK-pN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_zvK-pN6jEee0kIKIEebuqA" name="body" constrainedElement="_zvK-od6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_zvK-pd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DICOMObjectCatalogSection))->asSequence()->any(true).oclAsType(consol::DICOMObjectCatalogSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_zvK-ot6jEee0kIKIEebuqA" type="_WPTWEDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zvK-o96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_89EzQCP5EeS4d9o7u1_H3A" name="DischargeSummary2">
      <ownedComment xmi:id="_QEvAoCP6EeS4d9o7u1_H3A">
        <body>&lt;p>&#xD;
The Discharge Summary is a document which synopsizes a patient's admission to a hospital, LTPAC provider, or other setting. It provides information for the continuation of care following discharge. The Joint Commission requires the following information to be included in the Discharge Summary (http://www.jointcommission.org/):&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;ul>&#xD;
&lt;li>The reason for hospitalization (the admission)&lt;/li>&#xD;
&lt;li>The procedures performed, as applicable&lt;/li>&#xD;
&lt;li>The care, treatment, and services provided&lt;/li>&#xD;
&lt;li>The patient's condition and disposition at discharge&lt;/li>&#xD;
&lt;li>Information provided to the patient and family&lt;/li>&#xD;
&lt;li>Provisions for follow-up care&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The best practice for a Discharge Summary is to include the discharge disposition in the display of the header.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_SpwesCSVEeS4d9o7u1_H3A" name="DischargeSummary2DoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_SpwesSSVEeS4d9o7u1_H3A">
          <language>OCL</language>
          <body>( self.getAllSections()->exists(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection)) ) implies not ( self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection)) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z6BjwN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z6CK0N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.8' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z6tgQN6jEee0kIKIEebuqA" name="DischargeSummary2CodeP" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z6tgQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z6HqYN6jEee0kIKIEebuqA" name="DischargeSummary2Code" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z6HqYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '18842-5' or value.code = '11490-0' or value.code = '28655-9' or value.code = '29761-4' or value.code = '34745-0' or value.code = '34105-7' or value.code = '34106-5'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z9JJMN6jEee0kIKIEebuqA" name="DischargeSummary2Participant" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z9JJMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_z9o4cN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOf" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_z9o4cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0AEhYN6jEee0kIKIEebuqA" name="DischargeSummary2AllergiesSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0AEhYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0AfYIN6jEee0kIKIEebuqA" name="DischargeSummary2HospitalCourseSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0AfYId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0A8EEN6jEee0kIKIEebuqA" name="DischargeSummary2PlanOfTreatmentSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0A8EEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0BVssN6jEee0kIKIEebuqA" name="DischargeSummary2ChiefComplaintSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0BVssd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0B4fQN6jEee0kIKIEebuqA" name="DischargeSummary2ChiefComplaintAndReasonForVisitSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0B4fQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0CTWAN6jEee0kIKIEebuqA" name="DischargeSummary2NutritionSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0CTWAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0CtlsN6jEee0kIKIEebuqA" name="DischargeSummary2FunctionalStatusSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Ctlsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0DIccN6jEee0kIKIEebuqA" name="DischargeSummary2HistoryOfPastIllnessSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0DIccd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0Dj6QN6jEee0kIKIEebuqA" name="DischargeSummary2HistoryOfPresentIllnessSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Dj6Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0D-J8N6jEee0kIKIEebuqA" name="DischargeSummary2HospitalConsultationsSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0D-J8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0EaO0N6jEee0kIKIEebuqA" name="DischargeSummary2HospitalDischargeInstructionsSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0EaO0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0Ez3cN6jEee0kIKIEebuqA" name="DischargeSummary2HospitalDischargePhysicalSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Ez3cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0FOHIN6jEee0kIKIEebuqA" name="DischargeSummary2HospitalDischargeStudiesSummarySection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0FOuMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0F3AUN6jEee0kIKIEebuqA" name="DischargeSummary2ImmunizationsSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0F3AUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0GWvkN6jEee0kIKIEebuqA" name="DischargeSummary2ProblemSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0GWvkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0G2e0N6jEee0kIKIEebuqA" name="DischargeSummary2ProceduresSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0G2e0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0HZRYN6jEee0kIKIEebuqA" name="DischargeSummary2ReasonForVisitSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0HZRYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0H7c4N6jEee0kIKIEebuqA" name="DischargeSummary2ReviewOfSystemsSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0H7c4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0IdBUN6jEee0kIKIEebuqA" name="DischargeSummary2SocialHistorySection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0IdBUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0I8JgN6jEee0kIKIEebuqA" name="DischargeSummary2VitalSignsSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0I8Jgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2GQx0N6jEee0kIKIEebuqA" name="DischargeSummary2DischargeDiagnosisSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2GRY4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2GpzYN6jEee0kIKIEebuqA" name="DischargeSummary2DischargeMedicationsSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2GqacN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeMedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2HF4QN6jEee0kIKIEebuqA" name="DischargeSummary2FamilyHistorySection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2HF4Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Hfg4N6jEee0kIKIEebuqA" name="DischargeSummary2AdmissionDiagnosisSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Hfg4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2H5JgN6jEee0kIKIEebuqA" name="DischargeSummary2AdmissionMedicationsSectionEntriesOptional2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2H5Jgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionMedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2ISLEN6jEee0kIKIEebuqA" name="DischargeSummary2DischargeMedicationsSection2" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ISLEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeMedicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2IsawN6jEee0kIKIEebuqA" name="DischargeSummary2DischargeDietSection" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Isawd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6XZP0N6jEee0kIKIEebuqA" name="DischargeSummary2ParticipantIfParTypeCodeINDThenAEClassCodeIND" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6XZP0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(p : cda::Participant1 | p.typeCode = vocab::ParticipationType::IND and not ( p.associatedEntity.classCode = vocab::RoleClassAssociative::PRS  or p.associatedEntity.classCode = vocab::RoleClassAssociative::NOK or p.associatedEntity.classCode = vocab::RoleClassAssociative::CAREGIVER or p.associatedEntity.classCode = vocab::RoleClassAssociative::AGNT or p.associatedEntity.classCode = vocab::RoleClassAssociative::GUAR or p.associatedEntity.classCode = vocab::RoleClassAssociative::ECON or p.associatedEntity.isNullFlavorDefined() ) or p.associatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6YSAoN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6YSAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6YSnsN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6YSnsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((high.oclIsUndefined() or high.isNullFlavorUndefined()) implies (not high.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ZEq0N6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityAssignedPerson" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ZEq0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ZFR4N6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityRepresentedOrganization" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ZFR4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ZF48N6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ZF48d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ZF48t6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ZF4896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z38EN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityAssignedPerson" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z38Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null).assignedEntity->excluding(null)->reject(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z4jIN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityRepresentedOrganization" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z4jId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null).assignedEntity->excluding(null)->reject(representedOrganization->one(representedOrganization : cda::Organization | not representedOrganization.oclIsUndefined() and representedOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z5KMN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z5KMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z5KMt6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z5KM96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z5xQN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z5xQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z6YUN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCode" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z6YUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((dischargeDispositionCode.oclIsUndefined() or dischargeDispositionCode.isNullFlavorUndefined()) implies (not dischargeDispositionCode.oclIsUndefined() and dischargeDispositionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = dischargeDispositionCode.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.301.5' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z6_YN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCodeP" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z6_Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((dischargeDispositionCode.oclIsUndefined() or dischargeDispositionCode.isNullFlavorUndefined()) implies (not dischargeDispositionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z7mcN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipant" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z7mcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z7mct6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounterResponsibleParty" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z7mc96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6Z8NgN6jEee0kIKIEebuqA" name="DischargeSummary2ComponentOfEncompassingEncounter" constrainedElement="_89EzQCP5EeS4d9o7u1_H3A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6Z8Ngd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_89FaUCP5EeS4d9o7u1_H3A" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_0AFIcN6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional2" bodyCondition="_0AFIc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0AFIc96jEee0kIKIEebuqA" name="body" constrainedElement="_0AFIcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0AFIdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0AFIcd6jEee0kIKIEebuqA" type="_nWAcMAIjEeSVzfoPSatgpg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0AFIct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0AfYIt6jEee0kIKIEebuqA" name="getHospitalCourseSection" bodyCondition="_0AfYJd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0AfYJd6jEee0kIKIEebuqA" name="body" constrainedElement="_0AfYIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0AfYJt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))->asSequence()->any(true).oclAsType(consol::HospitalCourseSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0AfYI96jEee0kIKIEebuqA" type="_2RqkOxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0AfYJN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0A8rIN6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_0A8rI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0A8rI96jEee0kIKIEebuqA" name="body" constrainedElement="_0A8rIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0A8rJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0A8rId6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0A8rIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0BWTwN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_0BWTw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0BWTw96jEee0kIKIEebuqA" name="body" constrainedElement="_0BWTwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0BWTxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0BWTwd6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0BWTwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0B5GUN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_0B5GU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0B5GU96jEee0kIKIEebuqA" name="body" constrainedElement="_0B5GUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0B5GVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0B5GUd6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0B5GUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0CTWAt6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_0CTWBd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0CTWBd6jEee0kIKIEebuqA" name="body" constrainedElement="_0CTWAt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0CTWBt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0CTWA96jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0CTWBN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0CuMwN6jEee0kIKIEebuqA" name="getFunctionalStatusSection2" bodyCondition="_0CuMw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0CuMw96jEee0kIKIEebuqA" name="body" constrainedElement="_0CuMwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0CuMxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection2))->asSequence()->any(true).oclAsType(consol::FunctionalStatusSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0CuMwd6jEee0kIKIEebuqA" type="_8rMFkPyHEeOozpLKXSm5NA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0CuMwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0DJDgN6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_0DJDg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0DJDg96jEee0kIKIEebuqA" name="body" constrainedElement="_0DJDgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0DJDhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0DJDgd6jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0DJDgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0DkhUN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_0DkhU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0DkhU96jEee0kIKIEebuqA" name="body" constrainedElement="_0DkhUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0DkhVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0DkhUd6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0DkhUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0D-xAN6jEee0kIKIEebuqA" name="getHospitalConsultationsSection" bodyCondition="_0D-xA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0D-xA96jEee0kIKIEebuqA" name="body" constrainedElement="_0D-xAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0D-xBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection))->asSequence()->any(true).oclAsType(consol::HospitalConsultationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0D-xAd6jEee0kIKIEebuqA" type="_eKFbUDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0D-xAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0EaO0t6jEee0kIKIEebuqA" name="getHospitalDischargeInstructionsSection" bodyCondition="_0EaO1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0EaO1d6jEee0kIKIEebuqA" name="body" constrainedElement="_0EaO0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0EaO1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))->asSequence()->any(true).oclAsType(consol::HospitalDischargeInstructionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0EaO096jEee0kIKIEebuqA" type="_lBergCUMEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0EaO1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0Ez3ct6jEee0kIKIEebuqA" name="getHospitalDischargePhysicalSection" bodyCondition="_0E0egd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0E0egd6jEee0kIKIEebuqA" name="body" constrainedElement="_0Ez3ct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0E0egt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))->asSequence()->any(true).oclAsType(consol::HospitalDischargePhysicalSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0Ez3c96jEee0kIKIEebuqA" type="_WikGsCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0E0egN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0FOuMd6jEee0kIKIEebuqA" name="getHospitalDischargeStudiesSummarySection" bodyCondition="_0FOuNN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0FOuNN6jEee0kIKIEebuqA" name="body" constrainedElement="_0FOuMd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0FOuNd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))->asSequence()->any(true).oclAsType(consol::HospitalDischargeStudiesSummarySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0FOuMt6jEee0kIKIEebuqA" type="_38AXoCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0FOuM96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0F3nYN6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional2" bodyCondition="_0F3nY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0F3nY96jEee0kIKIEebuqA" name="body" constrainedElement="_0F3nYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0F3nZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0F3nYd6jEee0kIKIEebuqA" type="_kdQhIPy3EeO1SvUcmWeLDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0F3nYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0GXWoN6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional2" bodyCondition="_0GXWo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0GXWo96jEee0kIKIEebuqA" name="body" constrainedElement="_0GXWoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0GXWpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0GXWod6jEee0kIKIEebuqA" type="_ZgLioAFkEeSJ2uHfynwxCw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0GXWot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0G3F4N6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional2" bodyCondition="_0G3F496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0G3F496jEee0kIKIEebuqA" name="body" constrainedElement="_0G3F4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0G3F5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0G3F4d6jEee0kIKIEebuqA" type="_80dMoAB0EeSLOb2O6vSPzg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0G3F4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0HZ4cN6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_0HZ4c96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0HZ4c96jEee0kIKIEebuqA" name="body" constrainedElement="_0HZ4cN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0HZ4dN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0HZ4cd6jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0HZ4ct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0H8D8N6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_0H8D896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0H8D896jEee0kIKIEebuqA" name="body" constrainedElement="_0H8D8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0H8D9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0H8D8d6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0H8D8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0IdoYN6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_0IdoY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0IdoY96jEee0kIKIEebuqA" name="body" constrainedElement="_0IdoYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0IdoZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0IdoYd6jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0IdoYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0I8wkN6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional2" bodyCondition="_0I8wk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0I8wk96jEee0kIKIEebuqA" name="body" constrainedElement="_0I8wkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0I8wlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0I8wkd6jEee0kIKIEebuqA" type="_8LkzYAFTEeSmasYc71ZgMQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0I8wkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2GRY4d6jEee0kIKIEebuqA" name="getDischargeDiagnosisSection2" bodyCondition="_2GRY5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2GRY5N6jEee0kIKIEebuqA" name="body" constrainedElement="_2GRY4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2GRY5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::DischargeDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2GRY4t6jEee0kIKIEebuqA" type="_jfuGYPytEeOmn53IDV99zw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2GRY496jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2Gqacd6jEee0kIKIEebuqA" name="getDischargeMedicationsSectionEntriesOptional2" bodyCondition="_2GqadN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2GqadN6jEee0kIKIEebuqA" name="body" constrainedElement="_2Gqacd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Gqadd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeMedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::DischargeMedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2Gqact6jEee0kIKIEebuqA" type="_HlfBYPyzEeOfAK77IvEBUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2Gqac96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2HF4Qt6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_2HF4Rd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2HF4Rd6jEee0kIKIEebuqA" name="body" constrainedElement="_2HF4Qt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2HGfUN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2HF4Q96jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2HF4RN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2Hfg4t6jEee0kIKIEebuqA" name="getAdmissionDiagnosisSection2" bodyCondition="_2Hfg5d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2Hfg5d6jEee0kIKIEebuqA" name="body" constrainedElement="_2Hfg4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Hfg5t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::AdmissionDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2Hfg496jEee0kIKIEebuqA" type="_ctJgAPylEeOc0tW1-DpN-Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2Hfg5N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2H5Jgt6jEee0kIKIEebuqA" name="getAdmissionMedicationsSectionEntriesOptional2" bodyCondition="_2H5Jhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2H5Jhd6jEee0kIKIEebuqA" name="body" constrainedElement="_2H5Jgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2H5Jht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdmissionMedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AdmissionMedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2H5Jg96jEee0kIKIEebuqA" type="_ZLY3MPyqEeOlg_Cnc5bODw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2H5JhN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2ISyIN6jEee0kIKIEebuqA" name="getDischargeMedicationsSection2" bodyCondition="_2ISyI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2ISyI96jEee0kIKIEebuqA" name="body" constrainedElement="_2ISyIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ISyJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeMedicationsSection2))->asSequence()->any(true).oclAsType(consol::DischargeMedicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2ISyId6jEee0kIKIEebuqA" type="_Jt0moAI0EeSRkrs1G7P_XQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ISyIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2ItB0N6jEee0kIKIEebuqA" name="getDischargeDietSection" bodyCondition="_2ItB096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2ItB096jEee0kIKIEebuqA" name="body" constrainedElement="_2ItB0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ItB1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))->asSequence()->any(true).oclAsType(consol::DischargeDietSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2ItB0d6jEee0kIKIEebuqA" type="_2Uz-4xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ItB0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4mLhsCluEeSoCqqrpX8LzQ" name="HistoryAndPhysicalNote2">
      <ownedComment xmi:id="_QnxScClvEeSoCqqrpX8LzQ">
        <body>&lt;p>&#xD;
A History and Physical (H&amp;P) note is a medical report that documents the current and past conditions of the patient. It contains essential information that helps determine an individual's health status.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The first portion of the report is a current collection of organized information unique to an individual. This is typically supplied by the patient or the caregiver, concerning the current medical problem or the reason for the patient encounter. This information is followed by a description of any past or ongoing medical issues, including current medications and allergies. Information is also obtained about the patient's lifestyle, habits, and diseases among family members.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The next portion of the report contains information obtained by physically examining the patient and gathering diagnostic information in the form of laboratory tests, imaging, or other diagnostic procedures.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The report ends with the clinician's assessment of the patient's situation and the intended plan to address those issues.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A History and Physical Examination is required upon hospital admission as well as before operative procedures. An initial evaluation in an ambulatory setting is often documented in the form of an H&amp;P note.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_pfraYCyUEeSoCqqrpX8LzQ" name="HistoryAndPhysicalNote2HasChiefComplaintAndReasonForVisitChiefComplaintOrReasonForVisit">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pfraYSyUEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Ye-nkCyWEeSoCqqrpX8LzQ" name="HistoryAndPhysicalNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ye-nkSyWEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gkx0kCyXEeSoCqqrpX8LzQ" name="HistoryAndPhysicalNote2DoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gkx0kSyXEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_sU-2wCyYEeSoCqqrpX8LzQ" name="HistoryAndPhysicalNote2DoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sU-2wSyYEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0JfjIN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0JgKMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.3' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0KS0YN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2CodeP" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0KS0Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0JqiQN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2Code" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0JqiQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '34117-2' or value.code = '11492-6' or value.code = '28626-0' or value.code = '34774-0' or value.code = '34115-6' or value.code = '34116-4' or value.code = '34095-0' or value.code = '34096-8' or value.code = '51849-8' or value.code = '47039-3' or value.code = '34763-3' or value.code = '34094-3' or value.code = '34138-8'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0L2TkN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2InformationRecipient" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0L2Tkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0M1LAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2Participant" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0M1LAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0NaZ0N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2InFulfillmentOf" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0NaZ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0OA2wN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOf" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0OA2wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0Q7n4N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2AllergiesSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Q7n4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0RUpcN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2AssessmentSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0RUpcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0RtD8N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2PlanOfTreatmentSection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0RtrAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0SGskN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2AssessmentAndPlanSection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0SGskd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0SgVMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ChiefComplaintSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0SgVMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0S6k4N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ChiefComplaintAndReasonForVisitSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0S6k4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0TWpwN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2GeneralStatusSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0TWpwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0T7RgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2HistoryOfPastIllnessSection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0T7Rgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0UeEEN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2HistoryOfPresentIllnessSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0UeEEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0VFvIN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ImmunizationsSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0VFvId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0VrlAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2InstructionsSection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0VrlAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0WNwgN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2MedicationsSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0WNwgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0WxKIN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2PhysicalExamSection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0WxKId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0XRgcN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ProblemSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0XRgcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0XsXMN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ProceduresSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0XsXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0YGm4N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ReasonForVisitSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0YGm4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0YoyYN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ResultsSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0YoyYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0ZKW0N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ReviewOfSystemsSection" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0ZKW0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0ZtwcN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2SocialHistorySection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Ztwcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0aQjAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2VitalSignsSectionEntriesOptional2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0aRKEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2JGDYN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2FamilyHistorySection2" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2JGDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6aeZAN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2InformationRecipientIntendedRecipient" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6aeZAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.informationRecipient->excluding(null)->reject(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6a4BoN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ParticipantIfParTypeCodeINDThenAEClassCodeIND" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6a4Bod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(p : cda::Participant1 | p.typeCode = vocab::ParticipationType::IND and not ( p.associatedEntity.classCode = vocab::RoleClassAssociative::PRS  or p.associatedEntity.classCode = vocab::RoleClassAssociative::NOK or p.associatedEntity.classCode = vocab::RoleClassAssociative::CAREGIVER or p.associatedEntity.classCode = vocab::RoleClassAssociative::AGNT or p.associatedEntity.classCode = vocab::RoleClassAssociative::GUAR or p.associatedEntity.classCode = vocab::RoleClassAssociative::ECON or p.associatedEntity.isNullFlavorDefined() ) or p.associatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6bu9QN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6bu9Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 8) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 8) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 8))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6bu9Qt6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6bu9Q96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 12) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 12) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 12))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6bvkUN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6bvkUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject(isNullFlavorUndefined() implies ((not value.oclIsUndefined() implies value.size() >= 14) and ((not low.value.oclIsUndefined() and low.isNullFlavorUndefined() implies low.value.size() >= 14) and (not high.value.oclIsUndefined() and high.isNullFlavorUndefined() implies high.value.size() >= 14))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6bwLYN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6bwLYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject((not value.oclIsUndefined() and value.size() > 8 implies value.size() >= 15) and ((not low.value.oclIsUndefined() and low.value.size() > 8 implies low.value.size() >= 15) and (not high.value.oclIsUndefined() and high.value.size() > 8 implies high.value.size() >= 15)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cJ0AN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cJ0Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cKbEN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cKbEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).responsibleParty->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cjcoN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cjcod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cjcot6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ckDsN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ckDsd6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterId" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ckDst6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ckqwN6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ckqwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6clR0N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsibleParty" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6clR0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cl44N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipant" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cl44d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->exists(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cmf8N6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounterLocation" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cmf8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(rim::Participation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6cmf8t6jEee0kIKIEebuqA" name="HistoryAndPhysicalNote2ComponentOfEncompassingEncounter" constrainedElement="_4mLhsCluEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6cnHAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4mY9ECluEeSoCqqrpX8LzQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_0Q8O8N6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional2" bodyCondition="_0Q8O896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0Q8O896jEee0kIKIEebuqA" name="body" constrainedElement="_0Q8O8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Q8O9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0Q8O8d6jEee0kIKIEebuqA" type="_nWAcMAIjEeSVzfoPSatgpg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0Q8O8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0RUpct6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_0RUpdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0RUpdd6jEee0kIKIEebuqA" name="body" constrainedElement="_0RUpct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0RUpdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0RUpc96jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0RUpdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0RtrAd6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_0RtrBN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0RtrBN6jEee0kIKIEebuqA" name="body" constrainedElement="_0RtrAd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0RtrBd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0RtrAt6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0RtrA96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0SHToN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_0SHTo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0SHTo96jEee0kIKIEebuqA" name="body" constrainedElement="_0SHToN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0SHTpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0SHTod6jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0SHTot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0Sg8QN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_0Sg8Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0Sg8Q96jEee0kIKIEebuqA" name="body" constrainedElement="_0Sg8QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Sg8RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0Sg8Qd6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0Sg8Qt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0S6k4t6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_0S7L8d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0S7L8d6jEee0kIKIEebuqA" name="body" constrainedElement="_0S6k4t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0S7L8t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0S6k496jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0S7L8N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0TWpwt6jEee0kIKIEebuqA" name="getGeneralStatusSection" bodyCondition="_0TXQ0N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0TXQ0N6jEee0kIKIEebuqA" name="body" constrainedElement="_0TWpwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0TXQ0d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->any(true).oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0TWpw96jEee0kIKIEebuqA" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0TWpxN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0T74kN6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_0T74k96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0T74k96jEee0kIKIEebuqA" name="body" constrainedElement="_0T74kN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0T74lN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0T74kd6jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0T74kt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0UerIN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_0UerI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0UerI96jEee0kIKIEebuqA" name="body" constrainedElement="_0UerIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0UerJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0UerId6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0UerIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0VFvIt6jEee0kIKIEebuqA" name="getImmunizationsSectionEntriesOptional2" bodyCondition="_0VGWMd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0VGWMd6jEee0kIKIEebuqA" name="body" constrainedElement="_0VFvIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0VGWMt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ImmunizationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0VFvI96jEee0kIKIEebuqA" type="_kdQhIPy3EeO1SvUcmWeLDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0VGWMN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0VsMEN6jEee0kIKIEebuqA" name="getInstructionsSection2" bodyCondition="_0VsME96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0VsME96jEee0kIKIEebuqA" name="body" constrainedElement="_0VsMEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0VsMFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection2))->asSequence()->any(true).oclAsType(consol::InstructionsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0VsMEd6jEee0kIKIEebuqA" type="_k8L2YP1HEeOVx4YMwgfjlA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0VsMEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0WNwgt6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional2" bodyCondition="_0WOXkd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0WOXkd6jEee0kIKIEebuqA" name="body" constrainedElement="_0WNwgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0WOXkt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0WNwg96jEee0kIKIEebuqA" type="_JUvaUAFaEeS0nNJt6oyOyQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0WOXkN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0WxxMN6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_0WxxM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0WxxM96jEee0kIKIEebuqA" name="body" constrainedElement="_0WxxMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0WyYQN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0WxxMd6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0WxxMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0XSHgN6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional2" bodyCondition="_0XSHg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0XSHg96jEee0kIKIEebuqA" name="body" constrainedElement="_0XSHgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0XSHhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0XSHgd6jEee0kIKIEebuqA" type="_ZgLioAFkEeSJ2uHfynwxCw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0XSHgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0XsXMt6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional2" bodyCondition="_0Xs-Qd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0Xs-Qd6jEee0kIKIEebuqA" name="body" constrainedElement="_0XsXMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Xs-Qt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0XsXM96jEee0kIKIEebuqA" type="_80dMoAB0EeSLOb2O6vSPzg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0Xs-QN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0YHN8N6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_0YHN896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0YHN896jEee0kIKIEebuqA" name="body" constrainedElement="_0YHN8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0YHN9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0YHN8d6jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0YHN8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0YpZcN6jEee0kIKIEebuqA" name="getResultsSectionEntriesOptional2" bodyCondition="_0YpZc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0YpZc96jEee0kIKIEebuqA" name="body" constrainedElement="_0YpZcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0YpZdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ResultsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0YpZcd6jEee0kIKIEebuqA" type="_yaJ3QAFAEeSaVZ5WxWd94w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0YpZct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0ZKW0t6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_0ZKW1d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0ZKW1d6jEee0kIKIEebuqA" name="body" constrainedElement="_0ZKW0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0ZKW1t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0ZKW096jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0ZKW1N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0Ztwct6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_0Ztwdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0Ztwdd6jEee0kIKIEebuqA" name="body" constrainedElement="_0Ztwct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0Ztwdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0Ztwc96jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0ZtwdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0aRKEd6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional2" bodyCondition="_0aRKFN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0aRKFN6jEee0kIKIEebuqA" name="body" constrainedElement="_0aRKEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0aRKFd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0aRKEt6jEee0kIKIEebuqA" type="_8LkzYAFTEeSmasYc71ZgMQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0aRKE96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2JGqcN6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_2JGqc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2JGqc96jEee0kIKIEebuqA" name="body" constrainedElement="_2JGqcN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2JGqdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2JGqcd6jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2JGqct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_aH1CYC1fEeSoCqqrpX8LzQ" name="OperativeNote2">
      <ownedComment xmi:id="_wVCEYC1fEeSoCqqrpX8LzQ">
        <body>&lt;p>&#xD;
The Operative Note is a frequently used type of procedure note with specific requirements set forth by regulatory agencies.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Operative Note is created immediately following a surgical or other high-risk procedure. It records the pre- and post-surgical diagnosis, pertinent events of the procedure, as well as the condition of the patient following the procedure. The report should be sufficiently detailed to support the diagnoses, justify the treatment, document the course of the procedure, and provide continuity of care.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_0aSYMN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0aS_QN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.7' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0bGQgN6jEee0kIKIEebuqA" name="OperativeNote2CodeP" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0bGQgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0aZF4N6jEee0kIKIEebuqA" name="OperativeNote2Code" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0aZF4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11504-8' or value.code = '34137-0' or value.code = '28583-3' or value.code = '28624-5' or value.code = '28573-4' or value.code = '34877-1' or value.code = '34874-8' or value.code = '34870-6' or value.code = '34868-0' or value.code = '34818-5'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0fb98N6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOf" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0fb98d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0hOtsN6jEee0kIKIEebuqA" name="OperativeNote2Authorization" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0hOtsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->one(authorization : cda::Authorization | not authorization.oclIsUndefined() and authorization.oclIsKindOf(cda::Authorization))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0iAJwN6jEee0kIKIEebuqA" name="OperativeNote2AnesthesiaSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0iAJwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0idcwN6jEee0kIKIEebuqA" name="OperativeNote2ComplicationsSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0idcwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0i794N6jEee0kIKIEebuqA" name="OperativeNote2PreoperativeDiagnosisSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0i794d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0jcUMN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureEstimatedBloodLossSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0jcUMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0j61UN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureFindingsSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0j61Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0kZWcN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureSpecimensTakenSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0kZWcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0k2pcN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureDescriptionSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0k2pcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0lUjgN6jEee0kIKIEebuqA" name="OperativeNote2PostoperativeDiagnosisSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0lUjgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0lzEoN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureImplantsSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0lzEod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0mRlwN6jEee0kIKIEebuqA" name="OperativeNote2OperativeNoteFluidSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0mRlwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0mx8EN6jEee0kIKIEebuqA" name="OperativeNote2OperativeNoteSurgicalProcedureSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0mx8Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0nP2IN6jEee0kIKIEebuqA" name="OperativeNote2PlanOfTreatmentSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0nP2Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0nwMcN6jEee0kIKIEebuqA" name="OperativeNote2PlannedProcedureSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0nwMcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0oOtkN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureDispositionSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0oOtkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0otOsN6jEee0kIKIEebuqA" name="OperativeNote2ProcedureIndicationsSection2" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0otOsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0pOMEN6jEee0kIKIEebuqA" name="OperativeNote2SurgicalDrainsSection" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0pOMEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6di7IN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6di7Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6eXagN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6eYBkN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.12.443' and (value.code = 'CP' or value.code = 'PP' or value.code = 'RP')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6eYBkd6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6eYBkt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6eYooN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerTypeCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6eYood6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6eZPsN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6eZPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fLS0N6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fLS0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.12.443' and (value.code = 'CP' or value.code = 'PP' or value.code = 'RP')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fL54N6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fL54d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fMg8N6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fMg8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::SPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fMg8t6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fMg896jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fNIAN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fNIAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fNvEN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fNvEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fOWIN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventProcedureCodes" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fOWId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(code.codeSystem = '2.16.840.1.113883.6.104' or code.codeSystem = '2.16.840.1.113883.6.12' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fO9MN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventEffectiveTime" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fO9Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fO9Mt6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fO9M96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fPkQN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformer" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fPkQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fQLUN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEventPerformerAssistants" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fQLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6fQyYN6jEee0kIKIEebuqA" name="OperativeNote2DocumentationOfServiceEvent" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6fQyYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6gHG8N6jEee0kIKIEebuqA" name="OperativeNote2AuthorizationConsentClassCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6gHG8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClass::CONS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6gHuAN6jEee0kIKIEebuqA" name="OperativeNote2AuthorizationConsentMoodCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6gHuAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject(isDefined('moodCode') and moodCode=vocab::ActMood::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6gIVEN6jEee0kIKIEebuqA" name="OperativeNote2AuthorizationConsentStatusCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6gIVEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6gI8IN6jEee0kIKIEebuqA" name="OperativeNote2AuthorizationTypeCode" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6gI8Id6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::AUTH)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6gJjMN6jEee0kIKIEebuqA" name="OperativeNote2AuthorizationConsent" constrainedElement="_aH1CYC1fEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6gJjMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null)->reject(consent->one(consent : cda::Consent | not consent.oclIsUndefined() and consent.oclIsKindOf(cda::Consent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_aH1pcC1fEeSoCqqrpX8LzQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_0iAw0N6jEee0kIKIEebuqA" name="getAnesthesiaSection2" bodyCondition="_0iAw096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0iAw096jEee0kIKIEebuqA" name="body" constrainedElement="_0iAw0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0iAw1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection2))->asSequence()->any(true).oclAsType(consol::AnesthesiaSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0iAw0d6jEee0kIKIEebuqA" type="_aetyEPu_EeOyiMEKhdqMGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0iAw0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0ieD0N6jEee0kIKIEebuqA" name="getComplicationsSection2" bodyCondition="_0ieD096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0ieD096jEee0kIKIEebuqA" name="body" constrainedElement="_0ieD0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0ieD1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection2))->asSequence()->any(true).oclAsType(consol::ComplicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0ieD0d6jEee0kIKIEebuqA" type="_6M-msPvXEeOes-3T-2HryA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0ieD0t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0i794t6jEee0kIKIEebuqA" name="getPreoperativeDiagnosisSection2" bodyCondition="_0i795d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0i795d6jEee0kIKIEebuqA" name="body" constrainedElement="_0i794t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0i795t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::PreoperativeDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0i79496jEee0kIKIEebuqA" type="_JFd3MP5EEeOBnLkJOVC8NQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0i795N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0jcUMt6jEee0kIKIEebuqA" name="getProcedureEstimatedBloodLossSection" bodyCondition="_0jcUNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0jcUNd6jEee0kIKIEebuqA" name="body" constrainedElement="_0jcUMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0jcUNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))->asSequence()->any(true).oclAsType(consol::ProcedureEstimatedBloodLossSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0jcUM96jEee0kIKIEebuqA" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0jcUNN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0j61Ut6jEee0kIKIEebuqA" name="getProcedureFindingsSection2" bodyCondition="_0j7cYN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0j7cYN6jEee0kIKIEebuqA" name="body" constrainedElement="_0j61Ut6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0j7cYd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection2))->asSequence()->any(true).oclAsType(consol::ProcedureFindingsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0j61U96jEee0kIKIEebuqA" type="_lLOykP5FEeO_r7yO9mhwnA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0j61VN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0kZWct6jEee0kIKIEebuqA" name="getProcedureSpecimensTakenSection" bodyCondition="_0kZWdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0kZWdd6jEee0kIKIEebuqA" name="body" constrainedElement="_0kZWct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0kZWdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->any(true).oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0kZWc96jEee0kIKIEebuqA" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0kZWdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0k3QgN6jEee0kIKIEebuqA" name="getProcedureDescriptionSection" bodyCondition="_0k3Qg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0k3Qg96jEee0kIKIEebuqA" name="body" constrainedElement="_0k3QgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0k3QhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0k3Qgd6jEee0kIKIEebuqA" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0k3Qgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0lVKkN6jEee0kIKIEebuqA" name="getPostoperativeDiagnosisSection" bodyCondition="_0lVKk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0lVKk96jEee0kIKIEebuqA" name="body" constrainedElement="_0lVKkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0lVKlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))->asSequence()->any(true).oclAsType(consol::PostoperativeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0lVKkd6jEee0kIKIEebuqA" type="_7UA-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0lVKkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0lzrsN6jEee0kIKIEebuqA" name="getProcedureImplantsSection" bodyCondition="_0lzrs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0lzrs96jEee0kIKIEebuqA" name="body" constrainedElement="_0lzrsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0lzrtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->any(true).oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0lzrsd6jEee0kIKIEebuqA" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0lzrst6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0mRlwt6jEee0kIKIEebuqA" name="getOperativeNoteFluidSection" bodyCondition="_0mRlxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0mRlxd6jEee0kIKIEebuqA" name="body" constrainedElement="_0mRlwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0mRlxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))->asSequence()->any(true).oclAsType(consol::OperativeNoteFluidSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0mRlw96jEee0kIKIEebuqA" type="_vHfXoDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0mRlxN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0myjIN6jEee0kIKIEebuqA" name="getOperativeNoteSurgicalProcedureSection" bodyCondition="_0myjI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0myjI96jEee0kIKIEebuqA" name="body" constrainedElement="_0myjIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0myjJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))->asSequence()->any(true).oclAsType(consol::OperativeNoteSurgicalProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0myjId6jEee0kIKIEebuqA" type="_zel6wDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0myjIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0nQdMN6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_0nQdM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0nQdM96jEee0kIKIEebuqA" name="body" constrainedElement="_0nQdMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0nQdNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0nQdMd6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0nQdMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0nwMct6jEee0kIKIEebuqA" name="getPlannedProcedureSection2" bodyCondition="_0nwMdd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0nwMdd6jEee0kIKIEebuqA" name="body" constrainedElement="_0nwMct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0nwMdt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection2))->asSequence()->any(true).oclAsType(consol::PlannedProcedureSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0nwMc96jEee0kIKIEebuqA" type="_dz0ZwP49EeO_F_2qLv6FWQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0nwMdN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0oPUoN6jEee0kIKIEebuqA" name="getProcedureDispositionSection" bodyCondition="_0oPUo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0oPUo96jEee0kIKIEebuqA" name="body" constrainedElement="_0oPUoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0oPUpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0oPUod6jEee0kIKIEebuqA" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0oPUot6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0otOst6jEee0kIKIEebuqA" name="getProcedureIndicationsSection2" bodyCondition="_0otOtd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0otOtd6jEee0kIKIEebuqA" name="body" constrainedElement="_0otOst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0otOtt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection2))->asSequence()->any(true).oclAsType(consol::ProcedureIndicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0otOs96jEee0kIKIEebuqA" type="_5_O94AByEeSjnfOPJpFg3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0otOtN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0pOzIN6jEee0kIKIEebuqA" name="getSurgicalDrainsSection" bodyCondition="_0pOzI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0pOzI96jEee0kIKIEebuqA" name="body" constrainedElement="_0pOzIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0pOzJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))->asSequence()->any(true).oclAsType(consol::SurgicalDrainsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0pOzId6jEee0kIKIEebuqA" type="_luQh8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0pOzIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_JD8b0C4pEeSoCqqrpX8LzQ" name="ProcedureNote2">
      <ownedComment xmi:id="_R29woC4pEeSoCqqrpX8LzQ">
        <body>&lt;p>&#xD;
A Procedure Note encompasses many types of non-operative procedures including interventional cardiology, gastrointestinal endoscopy, osteopathic manipulation, and many other specialty fields. Procedure Notes are differentiated from Operative Notes because they do not involve incision or excision as the primary act.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The Procedure Note is created immediately following a non-operative procedure. It records the indications for the procedure and, when applicable, postprocedure diagnosis, pertinent events of the procedure, and the patient's tolerance for the procedure. It should be detailed enough to justify the procedure, describe the course of the procedure, and provide continuity of care.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_21Cn4C7XEeSoCqqrpX8LzQ" name="ProcedureNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_21Cn4S7XEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_OlYJMC7bEeSoCqqrpX8LzQ" name="ProcedureNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_OlYJMS7bEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_dOtxIC7bEeSoCqqrpX8LzQ" name="ProcedureNote2DoesNotHaveChiefComplaintWithChiefComplaintOrReasonForVisitSection">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_dOtxIS7bEeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0pQoUN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0pQoUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.6' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0qEgoN6jEee0kIKIEebuqA" name="ProcedureNote2CodeP" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0qEgod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0pbAYN6jEee0kIKIEebuqA" name="ProcedureNote2Code" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0pbAYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '28570-0' or value.code = '11505-5' or value.code = '18744-3' or value.code = '18745-0' or value.code = '18746-8' or value.code = '18751-8' or value.code = '18753-4' or value.code = '18836-7' or value.code = '28577-5' or value.code = '28625-2' or value.code = '29757-2' or value.code = '33721-2' or value.code = '34121-4' or value.code = '34896-1' or value.code = '34899-5' or value.code = '47048-4' or value.code = '48807-2'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0vJ08N6jEee0kIKIEebuqA" name="ProcedureNote2Participant" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0vJ08d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->select(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))->select(typeCode = vocab::ParticipationType::IND)->notEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0wsGAN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOf" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0wsGAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0ytfQN6jEee0kIKIEebuqA" name="ProcedureNote2Authorization" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0ytfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->one(authorization : cda::Authorization | not authorization.oclIsUndefined() and authorization.oclIsKindOf(cda::Authorization))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0zwBEN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOf" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0zwoIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_02LC8N6jEee0kIKIEebuqA" name="ProcedureNote2ComplicationsSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_02LC8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_02nH0N6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureDescriptionSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_02nH0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_03Fo8N6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureIndicationsSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_03Fo8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_03ht0N6jEee0kIKIEebuqA" name="ProcedureNote2PostprocedureDiagnosisSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_03ht0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_04DSQN6jEee0kIKIEebuqA" name="ProcedureNote2AssessmentSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_04DSQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_04fXIN6jEee0kIKIEebuqA" name="ProcedureNote2AssessmentAndPlanSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_04fXId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_04_GYN6jEee0kIKIEebuqA" name="ProcedureNote2PlanOfTreatmentSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_04_GYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_05gDwN6jEee0kIKIEebuqA" name="ProcedureNote2AllergiesSectionEntriesOptional2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_05gDwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_05-k4N6jEee0kIKIEebuqA" name="ProcedureNote2AnesthesiaSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_05-k4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_06gJUN6jEee0kIKIEebuqA" name="ProcedureNote2ChiefComplaintSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_06gJUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_07BGsN6jEee0kIKIEebuqA" name="ProcedureNote2ChiefComplaintAndReasonForVisitSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_07BGsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_07fn0N6jEee0kIKIEebuqA" name="ProcedureNote2FamilyHistorySection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_07fn0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_07860N6jEee0kIKIEebuqA" name="ProcedureNote2HistoryOfPastIllnessSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_079h4N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_08bb8N6jEee0kIKIEebuqA" name="ProcedureNote2HistoryOfPresentIllnessSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_08bb8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_083g0N6jEee0kIKIEebuqA" name="ProcedureNote2MedicalHistorySection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_083g0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_09Va4N6jEee0kIKIEebuqA" name="ProcedureNote2MedicationsSectionEntriesOptional2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_09Va4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_09zU8N6jEee0kIKIEebuqA" name="ProcedureNote2MedicationsAdministeredSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_09zU8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0-RPAN6jEee0kIKIEebuqA" name="ProcedureNote2PhysicalExamSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0-RPAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0-uiAN6jEee0kIKIEebuqA" name="ProcedureNote2PlannedProcedureSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0-uiAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0_O4UN6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureDispositionSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0_O4Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_0_sLUN6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureEstimatedBloodLossSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_0_sLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1AKFYN6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureFindingsSection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1AKFYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1AmKQN6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureImplantsSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1AmxUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1BErYN6jEee0kIKIEebuqA" name="ProcedureNote2ProcedureSpecimensTakenSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1BFScN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1BilcN6jEee0kIKIEebuqA" name="ProcedureNote2ProceduresSectionEntriesOptional2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Bilcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1CBGkN6jEee0kIKIEebuqA" name="ProcedureNote2ReasonForVisitSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1CBGkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1CfAoN6jEee0kIKIEebuqA" name="ProcedureNote2ReviewOfSystemsSection" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1CfAod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1C86sN6jEee0kIKIEebuqA" name="ProcedureNote2SocialHistorySection2" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1C86sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ij-AN6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantAssociatedEntityClassCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ij-Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(classCode=vocab::RoleClassAssociative::PROV)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ij-At6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantAssociatedEntityAssociatedPerson" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ij-A96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND).associatedEntity->excluding(null)->reject(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6iklEN6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantTypeCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6iklEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject(typeCode=vocab::ParticipationType::IND)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ilMIN6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantFunctionCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ilMId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined() and functionCode.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in &#xD;
value.code = 'PCP' and value.codeSystem = '2.16.840.1.113883.5.88'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6ilzMN6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantFunctionCodeP" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6ilzMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (not functionCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6imaQN6jEee0kIKIEebuqA" name="ProcedureNote2ParticipantAssociatedEntity" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6imaQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.participant->excluding(null)->select(typeCode = vocab::ParticipationType::IND)->select(typeCode = vocab::ParticipationType::IND)->reject(associatedEntity->one(associatedEntity : cda::AssociatedEntity | not associatedEntity.oclIsUndefined() and associatedEntity.oclIsKindOf(cda::AssociatedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6jcu0N6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6jcu0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6kScUN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6kScUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6kTDYN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6kTDYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6kTqcN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerTypeCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6kTqcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::PPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6kURgN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6kURgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lGUoN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lGUod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lHiwN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lHiwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF).assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lIJ0N6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lIJ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->reject(typeCode=vocab::x_ServiceEventPerformer::SPRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lJX8N6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lJX8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lJ_AN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lJ_Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lJ_At6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lJ_A96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lKmEN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventProcedureCodes" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lKmEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(code.codeSystem = '2.16.840.1.113883.6.104' or code.codeSystem = '2.16.840.1.113883.6.12' or code.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lLNIN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventEffectiveTime" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lLNId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lL0MN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lL0Md6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lMbQN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformer" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lMbQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lMbQt6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEventPerformerAssistants" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lMbQ96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(performer->select(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))->select(typeCode = vocab::x_ServiceEventPerformer::SPRF)->notEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6lNCUN6jEee0kIKIEebuqA" name="ProcedureNote2DocumentationOfServiceEvent" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6lNCUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6mCIwN6jEee0kIKIEebuqA" name="ProcedureNote2AuthorizationConsentClassCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6mCIwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClass::CONS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6mCv0N6jEee0kIKIEebuqA" name="ProcedureNote2AuthorizationConsentMoodCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6mCv0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject(isDefined('moodCode') and moodCode=vocab::ActMood::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6mDW4N6jEee0kIKIEebuqA" name="ProcedureNote2AuthorizationConsentStatusCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6mDW4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null).consent->excluding(null)->reject((statusCode.oclIsUndefined() or statusCode.isNullFlavorUndefined()) implies (not statusCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6mDW4t6jEee0kIKIEebuqA" name="ProcedureNote2AuthorizationTypeCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6mDW496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null)->reject(isDefined('typeCode') and typeCode=vocab::ActRelationshipType::AUTH)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6mD98N6jEee0kIKIEebuqA" name="ProcedureNote2AuthorizationConsent" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6mD98d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.authorization->excluding(null)->reject(consent->one(consent : cda::Consent | not consent.oclIsUndefined() and consent.oclIsKindOf(cda::Consent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6nQ30N6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipantTypeCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6nQ30d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).encounterParticipant->excluding(null)->reject(typeCode=vocab::x_EncounterParticipant::REF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oCT4N6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oCT4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null).healthCareFacility->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oC68N6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacility" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oC68d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null)->reject(healthCareFacility->one(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oDiAN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterId" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oDiAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oEJEN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterCode" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oEJEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oEwIN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipant" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oEwId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oFXMN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounterLocation" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oFXMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->exists(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6oF-QN6jEee0kIKIEebuqA" name="ProcedureNote2ComponentOfEncompassingEncounter" constrainedElement="_JD8b0C4pEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6oF-Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JD8b0S4pEeSoCqqrpX8LzQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_02LC8t6jEee0kIKIEebuqA" name="getComplicationsSection2" bodyCondition="_02LC9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_02LC9d6jEee0kIKIEebuqA" name="body" constrainedElement="_02LC8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_02LC9t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection2))->asSequence()->any(true).oclAsType(consol::ComplicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_02LC896jEee0kIKIEebuqA" type="_6M-msPvXEeOes-3T-2HryA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_02LC9N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_02nH0t6jEee0kIKIEebuqA" name="getProcedureDescriptionSection" bodyCondition="_02nu4d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_02nu4d6jEee0kIKIEebuqA" name="body" constrainedElement="_02nH0t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_02nu4t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_02nH096jEee0kIKIEebuqA" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_02nu4N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_03Fo8t6jEee0kIKIEebuqA" name="getProcedureIndicationsSection2" bodyCondition="_03GQAt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_03GQAt6jEee0kIKIEebuqA" name="body" constrainedElement="_03Fo8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_03GQA96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection2))->asSequence()->any(true).oclAsType(consol::ProcedureIndicationsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_03GQAN6jEee0kIKIEebuqA" type="_5_O94AByEeSjnfOPJpFg3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_03GQAd6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_03iU4N6jEee0kIKIEebuqA" name="getPostprocedureDiagnosisSection2" bodyCondition="_03iU496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_03iU496jEee0kIKIEebuqA" name="body" constrainedElement="_03iU4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_03iU5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection2))->asSequence()->any(true).oclAsType(consol::PostprocedureDiagnosisSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_03iU4d6jEee0kIKIEebuqA" type="_MLNngP5BEeOmw9RN80Tpig" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_03iU4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_04DSQt6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_04DSRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_04DSRd6jEee0kIKIEebuqA" name="body" constrainedElement="_04DSQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_04DSRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_04DSQ96jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_04DSRN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_04f-MN6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_04f-M96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_04f-M96jEee0kIKIEebuqA" name="body" constrainedElement="_04f-MN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_04f-NN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_04f-Md6jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_04f-Mt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_04_GYt6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_04_tcN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_04_tcN6jEee0kIKIEebuqA" name="body" constrainedElement="_04_GYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_04_tcd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_04_GY96jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_04_GZN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_05gDwt6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional2" bodyCondition="_05gDxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_05gDxd6jEee0kIKIEebuqA" name="body" constrainedElement="_05gDwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_05gDxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_05gDw96jEee0kIKIEebuqA" type="_nWAcMAIjEeSVzfoPSatgpg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_05gDxN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_05_L8N6jEee0kIKIEebuqA" name="getAnesthesiaSection2" bodyCondition="_05_L896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_05_L896jEee0kIKIEebuqA" name="body" constrainedElement="_05_L8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_05_L9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection2))->asSequence()->any(true).oclAsType(consol::AnesthesiaSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_05_L8d6jEee0kIKIEebuqA" type="_aetyEPu_EeOyiMEKhdqMGA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_05_L8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_06h-gN6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_06h-g96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_06h-g96jEee0kIKIEebuqA" name="body" constrainedElement="_06h-gN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_06h-hN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_06h-gd6jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_06h-gt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_07BtwN6jEee0kIKIEebuqA" name="getChiefComplaintAndReasonForVisitSection" bodyCondition="_07Btw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_07Btw96jEee0kIKIEebuqA" name="body" constrainedElement="_07BtwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_07BtxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_07Btwd6jEee0kIKIEebuqA" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_07Btwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_07gO4N6jEee0kIKIEebuqA" name="getFamilyHistorySection2" bodyCondition="_07gO496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_07gO496jEee0kIKIEebuqA" name="body" constrainedElement="_07gO4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_07gO5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection2))->asSequence()->any(true).oclAsType(consol::FamilyHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_07gO4d6jEee0kIKIEebuqA" type="_NGivoIevEeSBauRYePLghA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_07gO4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_079h4d6jEee0kIKIEebuqA" name="getHistoryOfPastIllnessSection2" bodyCondition="_079h5N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_079h5N6jEee0kIKIEebuqA" name="body" constrainedElement="_079h4d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_079h5d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection2))->asSequence()->any(true).oclAsType(consol::HistoryOfPastIllnessSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_079h4t6jEee0kIKIEebuqA" type="_sZlggPyhEeOC19UEcu7MOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_079h496jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_08cDAN6jEee0kIKIEebuqA" name="getHistoryOfPresentIllnessSection" bodyCondition="_08cDA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_08cDA96jEee0kIKIEebuqA" name="body" constrainedElement="_08cDAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_08cDBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->any(true).oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_08cDAd6jEee0kIKIEebuqA" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_08cDAt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_084H4N6jEee0kIKIEebuqA" name="getMedicalHistorySection" bodyCondition="_084H496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_084H496jEee0kIKIEebuqA" name="body" constrainedElement="_084H4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_084H5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))->asSequence()->any(true).oclAsType(consol::MedicalHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_084H4d6jEee0kIKIEebuqA" type="_mEIgwDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_084H4t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_09WB8N6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional2" bodyCondition="_09WB896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_09WB896jEee0kIKIEebuqA" name="body" constrainedElement="_09WB8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_09WB9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_09WB8d6jEee0kIKIEebuqA" type="_JUvaUAFaEeS0nNJt6oyOyQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_09WB8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_09z8AN6jEee0kIKIEebuqA" name="getMedicationsAdministeredSection2" bodyCondition="_09z8A96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_09z8A96jEee0kIKIEebuqA" name="body" constrainedElement="_09z8AN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_09z8BN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection2))->asSequence()->any(true).oclAsType(consol::MedicationsAdministeredSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_09z8Ad6jEee0kIKIEebuqA" type="_F37nMP4jEeOwFalSp0fRiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_09z8At6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0-R2EN6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_0-R2E96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0-R2E96jEee0kIKIEebuqA" name="body" constrainedElement="_0-R2EN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0-R2FN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0-R2Ed6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0-R2Et6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0-vJEN6jEee0kIKIEebuqA" name="getPlannedProcedureSection2" bodyCondition="_0-vJE96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0-vJE96jEee0kIKIEebuqA" name="body" constrainedElement="_0-vJEN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0-vJFN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection2))->asSequence()->any(true).oclAsType(consol::PlannedProcedureSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0-vJEd6jEee0kIKIEebuqA" type="_dz0ZwP49EeO_F_2qLv6FWQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0-vJEt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0_PfYN6jEee0kIKIEebuqA" name="getProcedureDispositionSection" bodyCondition="_0_PfY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0_PfY96jEee0kIKIEebuqA" name="body" constrainedElement="_0_PfYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0_PfZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->any(true).oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0_PfYd6jEee0kIKIEebuqA" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0_PfYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_0_syYN6jEee0kIKIEebuqA" name="getProcedureEstimatedBloodLossSection" bodyCondition="_0_syY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_0_syY96jEee0kIKIEebuqA" name="body" constrainedElement="_0_syYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_0_syZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))->asSequence()->any(true).oclAsType(consol::ProcedureEstimatedBloodLossSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_0_syYd6jEee0kIKIEebuqA" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0_syYt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1AKscN6jEee0kIKIEebuqA" name="getProcedureFindingsSection2" bodyCondition="_1AKsc96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1AKsc96jEee0kIKIEebuqA" name="body" constrainedElement="_1AKscN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1AKsdN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection2))->asSequence()->any(true).oclAsType(consol::ProcedureFindingsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1AKscd6jEee0kIKIEebuqA" type="_lLOykP5FEeO_r7yO9mhwnA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1AKsct6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1AmxUd6jEee0kIKIEebuqA" name="getProcedureImplantsSection" bodyCondition="_1AmxVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1AmxVN6jEee0kIKIEebuqA" name="body" constrainedElement="_1AmxUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1AmxVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->any(true).oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1AmxUt6jEee0kIKIEebuqA" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1AmxU96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1BFScd6jEee0kIKIEebuqA" name="getProcedureSpecimensTakenSection" bodyCondition="_1BFSdN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1BFSdN6jEee0kIKIEebuqA" name="body" constrainedElement="_1BFScd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1BFSdd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->any(true).oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1BFSct6jEee0kIKIEebuqA" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1BFSc96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1BjMgN6jEee0kIKIEebuqA" name="getProceduresSectionEntriesOptional2" bodyCondition="_1BjMg96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1BjMg96jEee0kIKIEebuqA" name="body" constrainedElement="_1BjMgN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1BjMhN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProceduresSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1BjMgd6jEee0kIKIEebuqA" type="_80dMoAB0EeSLOb2O6vSPzg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1BjMgt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1CBGkt6jEee0kIKIEebuqA" name="getReasonForVisitSection" bodyCondition="_1CBGld6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1CBGld6jEee0kIKIEebuqA" name="body" constrainedElement="_1CBGkt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1CBGlt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->any(true).oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1CBGk96jEee0kIKIEebuqA" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1CBGlN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1CfnsN6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_1Cfns96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Cfns96jEee0kIKIEebuqA" name="body" constrainedElement="_1CfnsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1CfntN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Cfnsd6jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Cfnst6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1C9hwN6jEee0kIKIEebuqA" name="getSocialHistorySection2" bodyCondition="_1C9hw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1C9hw96jEee0kIKIEebuqA" name="body" constrainedElement="_1C9hwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1C9hxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection2))->asSequence()->any(true).oclAsType(consol::SocialHistorySection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1C9hwd6jEee0kIKIEebuqA" type="_wLWZMAFHEeSG_MJH-zNFRw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1C9hwt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_qVEVkC-aEeSoCqqrpX8LzQ" name="ProgressNote2">
      <ownedComment xmi:id="_63rMQC-aEeSoCqqrpX8LzQ">
        <body>&lt;p>&#xD;
This template represents a patient's clinical status during a hospitalization, outpatient visit, treatment with a LTPAC provider, or other healthcare encounter.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Taber's medical dictionary defines a Progress Note as &quot;An ongoing record of a patient's illness and treatment. Physicians, nurses, consultants, and therapists record their notes concerning the progress or lack of progress made by the patient between the time of the previous note and the most recent note.&quot;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Mosby's medical dictionary defines a Progress Note as &quot;Notes made by a nurse, physician, social worker, physical therapist, and other health care professionals that describe the patient's condition and the treatment given or planned.&quot;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Progress Note is not a re-evaluation note. A Progress Note is not intended to be a Progress Report for Medicare. Medicare B Section 1833(e) defines the requirements of a Medicare Progress Report.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_bpjAsC-4EeSoCqqrpX8LzQ" name="ProgressNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_bpjAsS-4EeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) and  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pgQ44C-4EeSoCqqrpX8LzQ" name="ProgressNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_pgQ44S-4EeSoCqqrpX8LzQ">
          <language>OCL</language>
          <body>(self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2)) or  self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))) xor self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1C-v4N6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1C-v4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.9' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1DqFUN6jEee0kIKIEebuqA" name="ProgressNote2CodeP" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1DqFUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1DGrsN6jEee0kIKIEebuqA" name="ProgressNote2Code" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1DGrsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '11506-3' or value.code = '18733-6' or value.code = '18762-5' or value.code = '28569-2' or value.code = '28617-9' or value.code = '34900-1' or value.code = '34904-3' or value.code = '18764-1' or value.code = '28623-7' or value.code = '11507-1' or value.code = '11508-9' or value.code = '11509-7' or value.code = '28627-8' or value.code = '11510-5' or value.code = '28656-7' or value.code = '11512-1' or value.code = '34126-3' or value.code = '15507-7' or value.code = '34129-7' or value.code = '34125-5' or value.code = '34130-5' or value.code = '34131-3' or value.code = '34124-8' or value.code = '34127-1' or value.code = '34128-9' or value.code = '34901-9' or value.code = '34132-1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1FUSMN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOf" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1FUSMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1GYCIN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOf" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1GYCId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1ISGoN6jEee0kIKIEebuqA" name="ProgressNote2AssessmentSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ISGod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1IqhIN6jEee0kIKIEebuqA" name="ProgressNote2PlanOfTreatmentSection2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1IrIMN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1JEJwN6jEee0kIKIEebuqA" name="ProgressNote2AssessmentAndPlanSection2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1JEJwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1JdLUN6jEee0kIKIEebuqA" name="ProgressNote2AllergiesSectionEntriesOptional2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1JdLUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1J2z8N6jEee0kIKIEebuqA" name="ProgressNote2ChiefComplaintSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1J2z8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1KS40N6jEee0kIKIEebuqA" name="ProgressNote2InterventionsSection2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1KS40d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1KtIgN6jEee0kIKIEebuqA" name="ProgressNote2InstructionsSection2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1KtIgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1LGKEN6jEee0kIKIEebuqA" name="ProgressNote2MedicationsSectionEntriesOptional2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1LGxIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1LfysN6jEee0kIKIEebuqA" name="ProgressNote2ObjectiveSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Lfysd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1L40QN6jEee0kIKIEebuqA" name="ProgressNote2PhysicalExamSection2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1L40Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1MSc4N6jEee0kIKIEebuqA" name="ProgressNote2ProblemSectionEntriesOptional2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1MSc4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1MsFgN6jEee0kIKIEebuqA" name="ProgressNote2ResultsSectionEntriesOptional2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1MsFgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1NJYgN6jEee0kIKIEebuqA" name="ProgressNote2ReviewOfSystemsSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1NJYgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1NjBIN6jEee0kIKIEebuqA" name="ProgressNote2SubjectiveSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1NjBId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1N934N6jEee0kIKIEebuqA" name="ProgressNote2VitalSignsSectionEntriesOptional2" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1N934d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2LDyQN6jEee0kIKIEebuqA" name="ProgressNote2NutritionSection" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2LEZUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qtNYN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qtNYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qt0cN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qt0cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qubgN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEventTemplateId" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qubgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.3.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qvCkN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEventClassCode" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qvpoN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qvpod6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEventEffectiveTime" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qvpot6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6qwQsN6jEee0kIKIEebuqA" name="ProgressNote2DocumentationOfServiceEvent" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6qwQsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null)->reject(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6rnzYN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6rnzYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).effectiveTime->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((low.oclIsUndefined() or low.isNullFlavorUndefined()) implies (not low.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6sZ2gN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6sZ2gd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null).healthCareFacility->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6sadkN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacility" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6sadkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null).location->excluding(null)->reject(healthCareFacility->one(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6sbEoN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterId" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6sbEod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (( not id->isEmpty()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6sbrsN6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6sbrsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6sbrst6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounterLocation" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6scSwN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6scSwd6jEee0kIKIEebuqA" name="ProgressNote2ComponentOfEncompassingEncounter" constrainedElement="_qVEVkC-aEeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6scSwt6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.componentOf->excluding(null)->reject(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_qVE8oC-aEeSoCqqrpX8LzQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
      <ownedOperation xmi:id="_1ISGot6jEee0kIKIEebuqA" name="getAssessmentSection" bodyCondition="_1ISGpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1ISGpd6jEee0kIKIEebuqA" name="body" constrainedElement="_1ISGot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1ISGpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->any(true).oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1ISGo96jEee0kIKIEebuqA" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ISGpN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1IrIMd6jEee0kIKIEebuqA" name="getPlanOfTreatmentSection2" bodyCondition="_1IrINN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1IrINN6jEee0kIKIEebuqA" name="body" constrainedElement="_1IrIMd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1IrINd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfTreatmentSection2))->asSequence()->any(true).oclAsType(consol::PlanOfTreatmentSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1IrIMt6jEee0kIKIEebuqA" type="_bwml0P4yEeO_Yb9cO8w3bA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1IrIM96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1JEJwt6jEee0kIKIEebuqA" name="getAssessmentAndPlanSection2" bodyCondition="_1JEJxd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1JEJxd6jEee0kIKIEebuqA" name="body" constrainedElement="_1JEJwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1JEJxt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection2))->asSequence()->any(true).oclAsType(consol::AssessmentAndPlanSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1JEJw96jEee0kIKIEebuqA" type="_q_8twPvVEeOvZJBdQKQrqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1JEJxN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1JdLUt6jEee0kIKIEebuqA" name="getAllergiesSectionEntriesOptional2" bodyCondition="_1JdLVd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1JdLVd6jEee0kIKIEebuqA" name="body" constrainedElement="_1JdLUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1JdyYN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::AllergiesSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1JdLU96jEee0kIKIEebuqA" type="_nWAcMAIjEeSVzfoPSatgpg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1JdLVN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1J2z8t6jEee0kIKIEebuqA" name="getChiefComplaintSection" bodyCondition="_1J2z9d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1J2z9d6jEee0kIKIEebuqA" name="body" constrainedElement="_1J2z8t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1J2z9t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->any(true).oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1J2z896jEee0kIKIEebuqA" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1J2z9N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1KS40t6jEee0kIKIEebuqA" name="getInterventionsSection2" bodyCondition="_1KTf4d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1KTf4d6jEee0kIKIEebuqA" name="body" constrainedElement="_1KS40t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1KTf4t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection2))->asSequence()->any(true).oclAsType(consol::InterventionsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1KS4096jEee0kIKIEebuqA" type="_YCS1AP1WEeOW-qBXb0kbTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1KTf4N6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1KtvkN6jEee0kIKIEebuqA" name="getInstructionsSection2" bodyCondition="_1Ktvk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Ktvk96jEee0kIKIEebuqA" name="body" constrainedElement="_1KtvkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1KtvlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection2))->asSequence()->any(true).oclAsType(consol::InstructionsSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Ktvkd6jEee0kIKIEebuqA" type="_k8L2YP1HEeOVx4YMwgfjlA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Ktvkt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1LGxId6jEee0kIKIEebuqA" name="getMedicationsSectionEntriesOptional2" bodyCondition="_1LGxJN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1LGxJN6jEee0kIKIEebuqA" name="body" constrainedElement="_1LGxId6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1LGxJd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::MedicationsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1LGxIt6jEee0kIKIEebuqA" type="_JUvaUAFaEeS0nNJt6oyOyQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1LGxI96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1Lfyst6jEee0kIKIEebuqA" name="getObjectiveSection" bodyCondition="_1Lfytd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1Lfytd6jEee0kIKIEebuqA" name="body" constrainedElement="_1Lfyst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Lfytt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection))->asSequence()->any(true).oclAsType(consol::ObjectiveSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1Lfys96jEee0kIKIEebuqA" type="_rNJpADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1LfytN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1L5bUN6jEee0kIKIEebuqA" name="getPhysicalExamSection2" bodyCondition="_1L5bU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1L5bU96jEee0kIKIEebuqA" name="body" constrainedElement="_1L5bUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1L5bVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection2))->asSequence()->any(true).oclAsType(consol::PhysicalExamSection2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1L5bUd6jEee0kIKIEebuqA" type="_-nZiYP4uEeObaveuCI77uA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1L5bUt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1MTD8N6jEee0kIKIEebuqA" name="getProblemSectionEntriesOptional2" bodyCondition="_1MTD896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1MTD896jEee0kIKIEebuqA" name="body" constrainedElement="_1MTD8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1MTD9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ProblemSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1MTD8d6jEee0kIKIEebuqA" type="_ZgLioAFkEeSJ2uHfynwxCw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1MTD8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1MsFgt6jEee0kIKIEebuqA" name="getResultsSectionEntriesOptional2" bodyCondition="_1MsskN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1MsskN6jEee0kIKIEebuqA" name="body" constrainedElement="_1MsFgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Msskd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::ResultsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1MsFg96jEee0kIKIEebuqA" type="_yaJ3QAFAEeSaVZ5WxWd94w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1MsFhN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1NJYgt6jEee0kIKIEebuqA" name="getReviewOfSystemsSection" bodyCondition="_1NJYhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1NJYhd6jEee0kIKIEebuqA" name="body" constrainedElement="_1NJYgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1NJYht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->any(true).oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1NJYg96jEee0kIKIEebuqA" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1NJYhN6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1NjoMN6jEee0kIKIEebuqA" name="getSubjectiveSection" bodyCondition="_1NjoM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1NjoM96jEee0kIKIEebuqA" name="body" constrainedElement="_1NjoMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1NjoNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))->asSequence()->any(true).oclAsType(consol::SubjectiveSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1NjoMd6jEee0kIKIEebuqA" type="_iy8nYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1NjoMt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_1N-e8N6jEee0kIKIEebuqA" name="getVitalSignsSectionEntriesOptional2" bodyCondition="_1N-e896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1N-e896jEee0kIKIEebuqA" name="body" constrainedElement="_1N-e8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1N-e9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional2))->asSequence()->any(true).oclAsType(consol::VitalSignsSectionEntriesOptional2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1N-e8d6jEee0kIKIEebuqA" type="_8LkzYAFTEeSmasYc71ZgMQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N-e8t6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2LEZUd6jEee0kIKIEebuqA" name="getNutritionSection" bodyCondition="_2LEZVN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2LEZVN6jEee0kIKIEebuqA" name="body" constrainedElement="_2LEZUd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2LEZVd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::NutritionSection))->asSequence()->any(true).oclAsType(consol::NutritionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2LEZUt6jEee0kIKIEebuqA" type="_MlM4IJ2GEeORR8_YW0n_jQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2LEZU96jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_MrNuQC-6EeSoCqqrpX8LzQ" name="UnstructuredDocument2">
      <ownedComment xmi:id="_FCUNwC-7EeSoCqqrpX8LzQ">
        <body>&lt;p>&#xD;
An Unstructured Document (UD) document type can (1) include unstructured content, such as a graphic, directly in a text element with a mediaType attribute, or (2) reference a single document file, such as a word-processing document using a text/reference element.&#xD;
&lt;/p>&#xD;
For guidance on how to handle multiple files, on the selection of media types for this IG, and on the identification of external files, see the examples that follow the constraints below.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
IHE's XDS-SD (Cross-Transaction Specifications and Content Specifications, Scanned Documents Module) profile addresses a similar, more restricted use case, specifically for scanned documents or documents electronically created from existing text sources, and limits content to PDF-A or text. This Unstructured Documents template is applicable not only for scanned documents in non-PDF formats, but also for clinical documents produced through word processing applications, etc.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
For conformance with both specifications, implementers need to ensure that their documents at a minimum conform with the SHALL constraints from either specification.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_1N_GAN6jEee0kIKIEebuqA" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1N_tEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.1.10' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1Op0YN6jEee0kIKIEebuqA" name="UnstructuredDocument2RecordTarget" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Op0Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->exists(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1PndsN6jEee0kIKIEebuqA" name="UnstructuredDocument2Custodian" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Pndsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1Q0-oN6jEee0kIKIEebuqA" name="UnstructuredDocument2Component" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Q0-od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->one(component : cda::Component2 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6tYt8N6jEee0kIKIEebuqA" name="UnstructuredDocument2RecordTargetPatientRoleId" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6tYt8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6tZVAN6jEee0kIKIEebuqA" name="UnstructuredDocument2RecordTargetPatientRole" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6tZVAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null)->reject(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6uNNUN6jEee0kIKIEebuqA" name="UnstructuredDocument2CustodianAssignedCustodianRepresentedCustodianOrganization" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6uNNUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null).assignedCustodian->excluding(null)->reject(representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6uNNUt6jEee0kIKIEebuqA" name="UnstructuredDocument2CustodianAssignedCustodian" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6uN0YN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.custodian->excluding(null)->reject(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vBssN6jEee0kIKIEebuqA" name="UnstructuredDocument2ComponentNonXMLBodyEDMediaType" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vBssd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).nonXMLBody->excluding(null).text->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not mediaType.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vCTwN6jEee0kIKIEebuqA" name="UnstructuredDocument2ComponentNonXMLBodyHasReferenceOrRepresentation" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vCTwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).nonXMLBody->excluding(null)->reject(not text.reference.value.oclIsUndefined() xor ( text.isDefined('representation') and text.representation = datatypes::BinaryDataEncoding::B64 and (not text.mediaType.oclIsUndefined()) ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vC60N6jEee0kIKIEebuqA" name="UnstructuredDocument2ComponentNonXMLBodyMediaTypeFileFormats" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vC60d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).nonXMLBody->excluding(null)->reject(not text.mediaType.oclIsUndefined()  implies (text.mediaType = 'application/msword' or text.mediaType = 'application/pdf' or text.mediaType = 'text/plain' or text.mediaType = 'text/rtf' or text.mediaType = 'text/html' or text.mediaType = 'image/gif' or text.mediaType = 'image/tiff' or text.mediaType = 'image/jpeg' or text.mediaType = 'image/png'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vC60t6jEee0kIKIEebuqA" name="UnstructuredDocument2ComponentNonXMLBodyText" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vC6096jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null).nonXMLBody->excluding(null)->reject((text.oclIsUndefined() or text.isNullFlavorUndefined()) implies (not text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vDh4N6jEee0kIKIEebuqA" name="UnstructuredDocument2ComponentNonXMLBody" constrainedElement="_MrNuQC-6EeSoCqqrpX8LzQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vDh4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->excluding(null)->reject(nonXMLBody->one(nonXMLBody : cda::NonXMLBody | not nonXMLBody.oclIsUndefined() and nonXMLBody.oclIsKindOf(cda::NonXMLBody)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_MrPjcC-6EeSoCqqrpX8LzQ" general="_dduXkJ5OEeOr4eM3k36wAg"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XA96QDhDEeS1WeMhbm6GZw" name="PreconditionForSubstanceAdministration2">
      <ownedComment xmi:id="_ro_uMDhDEeS1WeMhbm6GZw">
        <body>A criterion for administration can be used to record that the medication is to be administered only when the associated criteria are met.</body>
      </ownedComment>
      <ownedRule xmi:id="_1ROnQN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationTemplateId" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1RPOUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.25' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1RSRoN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationCode" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1RSRod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1RXKIN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationCodeP" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1RXKId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1RbbkN6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationText" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1Rbbkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1RfF8N6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationValue" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1RfF8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value.oclIsUndefined() or self.value.isNullFlavorUndefined()) implies (not self.value.oclIsUndefined() and self.value.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.value.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1R7K0N6jEee0kIKIEebuqA" name="PreconditionForSubstanceAdministrationValueP" constrainedElement="_XA96QDhDEeS1WeMhbm6GZw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1R7K0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value.oclIsUndefined() or self.value.isNullFlavorUndefined()) implies (not self.value.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_XA-hUDhDEeS1WeMhbm6GZw" general="_chEhQBUUEeG6PvUxSTZnaw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_YYgjwIC3EeS108flGLVEBA" name="NumberOfPressureUlcersObservation2">
      <ownedComment xmi:id="_awOMkIC4EeS108flGLVEBA">
        <body>This template represents the number of pressure ulcers observed at a particular stage.</body>
      </ownedComment>
      <ownedRule xmi:id="_153UkN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationTemplateId" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_153Ukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.76' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_15_3cN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationCodeP" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_15_3cd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_156X4N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationCode" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_156X4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '2264892003' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_176jAN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationship" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_177KEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->select(entryRelationship : cda::EntryRelationship | not entryRelationship.oclIsUndefined() and entryRelationship.oclIsKindOf(cda::EntryRelationship))->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vKPkN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservation2CDTranslation" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vKPkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() = 1 and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.code = '75277-4' and value.codeSystem = '2.16.840.1.113883.6.1')) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6vK2oN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservation2CDTranslationP" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6vK2od6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (translation->size() =  1) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v85wN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v85wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(classCode=vocab::ActClassObservation::OBS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v9g0N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v9g0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject(moodCode=vocab::x_ActMoodDocumentObservation::EVN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v-H4N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v-H4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v-H4t6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservation2EntryRelationshipObservationCode" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v-H496jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined() and code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = code.oclAsType(datatypes::CD) in &#xD;
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v-u8N6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValueP" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v-u8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (not value->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v_WAN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValue" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v_WAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ).observation->excluding(null)->reject((value->isEmpty() or value->exists(element | element.isNullFlavorUndefined())) implies (value->size() = 1 and value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '421076008' or value.code = '420324007' or value.code = '421927004' or value.code = '420597008' or value.code = '421594008'))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6v_9EN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipTypeCode" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6v_9Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6wAkIN6jEee0kIKIEebuqA" name="NumberOfPressureUlcersObservationEntryRelationshipObservation" constrainedElement="_YYgjwIC3EeS108flGLVEBA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6wAkId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->excluding(null)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->select(typeCode=vocab::x_ActRelationshipEntryRelationship::SUBJ)->reject(observation->one(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(cda::Observation)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_YZLSIIC3EeS108flGLVEBA" general="_7c4ssOZbEeGINOJ_SD9_dA"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_YvV88IV5EeSRBMdZotACQg" name="FamilyHistoryObservation2">
      <ownedComment xmi:id="_Kb53EIV6EeSRBMdZotACQg">
        <body>Family History Observations related to a particular family member are contained within a Family History Organizer. The effectiveTime in the Family History Observation is the biologically or clinically relevant time of the observation. The biologically or clinically relevant time is the time at which the observation holds (is effective) for the family member (the subject of the observation).</body>
      </ownedComment>
      <ownedRule xmi:id="_18vCYN6jEee0kIKIEebuqA" name="FamilyHistoryObservationTemplateId" constrainedElement="_YvV88IV5EeSRBMdZotACQg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_18vCYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.46' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_19P_wN6jEee0kIKIEebuqA" name="FamilyHistoryObservationCodeP" constrainedElement="_YvV88IV5EeSRBMdZotACQg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_19P_wd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_18yswN6jEee0kIKIEebuqA" name="FamilyHistoryObservationCode" constrainedElement="_YvV88IV5EeSRBMdZotACQg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_18yswd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '404684003' or value.code = '409586006' or value.code = '282291009' or value.code = '64572001' or value.code = '248536006' or value.code = '418799008' or value.code = '55607006' or value.code = '373930000'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6wcB8N6jEee0kIKIEebuqA" name="FamilyHistoryObservation2CDTranslation" constrainedElement="_YvV88IV5EeSRBMdZotACQg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6wcB8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (not translation->isEmpty() and translation->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '75326-9' or value.code = '75325-1' or value.code = '75324-4' or value.code = '75323-6' or value.code = '29308-4' or value.code = '75322-8' or value.code = '75275-8' or value.code = '75321-0' or value.code = '75319-4' or value.code = '75318-6' or value.code = '75317-8' or value.code = '75316-0' or value.code = '75315-2' or value.code = '75314-5' or value.code = '75313-7' or value.code = '75312-9'))) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6wcpAN6jEee0kIKIEebuqA" name="FamilyHistoryObservation2CDTranslationP" constrainedElement="_YvV88IV5EeSRBMdZotACQg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6wcpAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.code->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((translation->isEmpty() or translation->exists(element | element.isNullFlavorUndefined())) implies (( not translation->isEmpty()) ) )))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_YvZAQIV5EeSRBMdZotACQg" general="_2IpyIxSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_6whQEIbpEeSxzopshBnQuw" name="FamilyHistoryOrganizer2">
      <ownedComment xmi:id="_2ylZ4Ib0EeSxzopshBnQuw">
        <body>The Family History Organizer associates a set of observations with a family member. For example, the Family History Organizer can group a set of observations about the patient's father.</body>
      </ownedComment>
      <ownedRule xmi:id="_1-kOYN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerTemplateId" constrainedElement="_6whQEIbpEeSxzopshBnQuw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1-kOYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.45' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1-nRsN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizer2Id" constrainedElement="_6whQEIbpEeSxzopshBnQuw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1-nRsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_CvgN6jEee0kIKIEebuqA" name="FamilyHistoryOrganizerFamilyHistoryObservation" constrainedElement="_6whQEIbpEeSxzopshBnQuw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_Cvgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.component->exists(component : cda::Component4 | not component.observation.oclIsUndefined() and component.observation.oclIsKindOf(consol::FamilyHistoryObservation2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_6wieMIbpEeSxzopshBnQuw" general="_2IbIoBSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_1_DWkN6jEee0kIKIEebuqA" name="getConsolFamilyHistoryObservation2s" bodyCondition="_1_DWk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1_DWk96jEee0kIKIEebuqA" name="body" constrainedElement="_1_DWkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_DWlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FamilyHistoryObservation2)).oclAsType(consol::FamilyHistoryObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1_DWkd6jEee0kIKIEebuqA" type="_YvV88IV5EeSRBMdZotACQg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1_DWkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_NGivoIevEeSBauRYePLghA" name="FamilyHistorySection2">
      <ownedComment xmi:id="_q8o1oIevEeSBauRYePLghA">
        <body>This section contains data defining the patient's genetic relatives in terms of possible or relevant health risk factors that have a potential impact on the patient's healthcare risk profile.</body>
      </ownedComment>
      <ownedRule xmi:id="_1_D9oN6jEee0kIKIEebuqA" name="FamilyHistorySectionTemplateId" constrainedElement="_NGivoIevEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_EksN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.15' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_js4N6jEee0kIKIEebuqA" name="FamilyHistorySectionFamilyHistory" constrainedElement="_NGivoIevEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_js4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.nullFlavor &lt;> vocab::NullFlavor::NI implies entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_NGjWsIevEeSBauRYePLghA" general="_2IWQIxSVEeGGzu7fmW9pXw"/>
      <ownedOperation xmi:id="_1_kT8N6jEee0kIKIEebuqA" name="getConsolFamilyHistoryOrganizer2s" bodyCondition="_1_kT896jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_1_kT896jEee0kIKIEebuqA" name="body" constrainedElement="_1_kT8N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_kT9N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2)).oclAsType(consol::FamilyHistoryOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_1_kT8d6jEee0kIKIEebuqA" type="_6whQEIbpEeSxzopshBnQuw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1_kT8t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_zKKIUIe9EeSBauRYePLghA" name="PhysicianReadingStudyPerformer2">
      <ownedComment xmi:id="__iuAcIe9EeSBauRYePLghA">
        <body>This participant is the Physician Reading Study Performer defined in documentationOf/serviceEvent. It is usually different from the attending physician. The reading physician interprets the images and evidence of the study (DICOM Definition).</body>
      </ownedComment>
      <ownedRule xmi:id="_1_k7AN6jEee0kIKIEebuqA" name="PhysicianReadingStudyPerformerTemplateId" constrainedElement="_zKKIUIe9EeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_k7Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.6.2.1' and id.extension = '2014-06-09')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_zKKvYIe9EeSBauRYePLghA" general="_H1UdcEVEEeGAh_iQGJvI5w"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_S0oqIIfLEeSBauRYePLghA" name="CourseOfCareSection">
      <ownedComment xmi:id="_2fYPUIfLEeSBauRYePLghA">
        <body>The Course of Care section describes what happened during the course of an encounter.</body>
      </ownedComment>
      <ownedRule xmi:id="_1_mwMN6jEee0kIKIEebuqA" name="CourseOfCareSectionTemplateId" constrainedElement="_S0oqIIfLEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_mwMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.2.64')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_pzgN6jEee0kIKIEebuqA" name="CourseOfCareSectionCode" constrainedElement="_S0oqIIfLEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_pzgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in &#xD;
value.code = '8648-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_uE8N6jEee0kIKIEebuqA" name="CourseOfCareSectionCodeP" constrainedElement="_S0oqIIfLEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_uE8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_xvUN6jEee0kIKIEebuqA" name="CourseOfCareSectionTitle" constrainedElement="_S0oqIIfLEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_xvUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_1_0yoN6jEee0kIKIEebuqA" name="CourseOfCareSectionText" constrainedElement="_S0oqIIfLEeSBauRYePLghA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1_0yod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_S0pRMIfLEeSBauRYePLghA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_dGARYOLSEeS505YV9ux2XA" name="PlannedInterventionAct">
      <ownedComment xmi:id="_xyggMOLTEeS505YV9ux2XA">
        <body>&lt;p>&#xD;
This template represents a Planned Intervention Act. It is a wrapper for planned intervention-type activities considered to be parts of the same intervention. For example, an activity such as &quot;elevate head of bed&quot; combined with &quot;provide humidified O2 per nasal cannula&quot; may be the interventions planned for a health concern of &quot;respiratory insufficiency&quot; in order to attempt to achieve a goal of &quot;pulse oximetry greater than 92%&quot;. These intervention activities may be newly described or derived from a variety of sources within an EHR.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Interventions are actions taken to increase the likelihood of achieving the patient's or providers' goals. An Intervention Act should contain a reference to a Goal Observation representing the reason for the intervention.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Planned Intervention Acts can be related to each other or to Intervention Acts. (E.g., a Planned Intervention Act with moodCode of INT could be related to a series of Intervention Acts with moodCode of EVN, each having an effectiveTime containing the time of the intervention.)&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
All interventions referenced in a Planned Intervention Act must have moodCodes indicating that that are planned (have not yet occurred).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_2bgpEN6jEee0kIKIEebuqA" name="PlannedInterventionActTemplateId" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2bgpEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.146' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2bkTcN6jEee0kIKIEebuqA" name="PlannedInterventionActClassCode" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2bkTcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2cF34N6jEee0kIKIEebuqA" name="PlannedInterventionActMoodCodeP" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2cF34d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2bpL8N6jEee0kIKIEebuqA" name="PlannedInterventionActMoodCode" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2bpzAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and &#xD;
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in &#xD;
value = vocab::x_DocumentActMood::APT or value = vocab::x_DocumentActMood::ARQ or value = vocab::x_DocumentActMood::INT or value = vocab::x_DocumentActMood::PRMS or value = vocab::x_DocumentActMood::PRP or value = vocab::x_DocumentActMood::RQO</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2cij0N6jEee0kIKIEebuqA" name="PlannedInterventionActId" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2cij0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2cp4kN6jEee0kIKIEebuqA" name="PlannedInterventionActCodeP" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2cp4kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2clnIN6jEee0kIKIEebuqA" name="PlannedInterventionActCode" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2clnId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '362956003' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2cuKAN6jEee0kIKIEebuqA" name="PlannedInterventionActStatusCode" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2cuKAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2cybcN6jEee0kIKIEebuqA" name="PlannedInterventionActStatusCodeP" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2cybcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2c2F0N6jEee0kIKIEebuqA" name="PlannedInterventionActEffectiveTime" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2c2F0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2dV1EN6jEee0kIKIEebuqA" name="PlannedInterventionActAuthorParticipation" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2dV1Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2dvdsN6jEee0kIKIEebuqA" name="PlannedInterventionActAdvanceDirectiveObservation2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2dvdsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AdvanceDirectiveObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2eJGUN6jEee0kIKIEebuqA" name="PlannedInterventionActImmunizationActivity2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2eJGUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2eiu8N6jEee0kIKIEebuqA" name="PlannedInterventionActMedicationActivity2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2eiu8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2fAB8N6jEee0kIKIEebuqA" name="PlannedInterventionActProcedureActivityAct2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2fAB8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::ProcedureActivityAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2fZqkN6jEee0kIKIEebuqA" name="PlannedInterventionActInterventionAct" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2fZqkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::InterventionAct) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2fzTMN6jEee0kIKIEebuqA" name="PlannedInterventionActProcedureActivityObservation2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2fzTMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProcedureActivityObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2gM70N6jEee0kIKIEebuqA" name="PlannedInterventionActProcedureActivityProcedure2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2gM70d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::ProcedureActivityProcedure2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2gnLgN6jEee0kIKIEebuqA" name="PlannedInterventionActEncounterActivity2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2gnLgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(consol::EncounterActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2hANEN6jEee0kIKIEebuqA" name="PlannedInterventionActInstruction2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2hA0IN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::Instruction2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2hZ1sN6jEee0kIKIEebuqA" name="PlannedInterventionActNonMedicinalSupplyActivity2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2hZ1sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2hzeUN6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedAct2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2hzeUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PlannedAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2iNG8N6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedEncounter2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2iNG8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(consol::PlannedEncounter2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2inWoN6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedObservation2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2inWod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PlannedObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2jBmUN6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedProcedure2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2jBmUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.procedure.oclIsUndefined() and entryRelationship.procedure.oclIsKindOf(consol::PlannedProcedure2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2jcdEN6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedMedicationActivity2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2jcdEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2j3T0N6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedSupply2" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2j3T0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.supply.oclIsUndefined() and entryRelationship.supply.oclIsKindOf(consol::PlannedSupply2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2kRjgN6jEee0kIKIEebuqA" name="PlannedInterventionActNutritionRecommendation" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2kRjgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::NutritionRecommendation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2krMIN6jEee0kIKIEebuqA" name="PlannedInterventionActEntryReferenceDocInstance" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2krMId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2lH4EN6jEee0kIKIEebuqA" name="PlannedInterventionActEntryReferenceGoalObs" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2lH4Ed6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2liHwN6jEee0kIKIEebuqA" name="PlannedInterventionActHandoffCommunicationParticipants" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2liHwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::HandoffCommunicationParticipants) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2l8XcN6jEee0kIKIEebuqA" name="PlannedInterventionActPlannedImmunizationActivity" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2l8Xcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::PlannedImmunizationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2mWAEN6jEee0kIKIEebuqA" name="PlannedInterventionActReference" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2mWAEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6w5U8N6jEee0kIKIEebuqA" name="PlannedInterventionActReferenceTypeCode" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6w5U8d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6w58AN6jEee0kIKIEebuqA" name="PlannedInterventionActReferenceExternalDocumentReference" constrainedElement="_dGARYOLSEeS505YV9ux2XA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6w58Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_dGCtoOLSEeS505YV9ux2XA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_2dvdst6jEee0kIKIEebuqA" name="getAdvanceDirectiveObservation2s" bodyCondition="_2dvdtd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2dvdtd6jEee0kIKIEebuqA" name="body" constrainedElement="_2dvdst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2dvdtt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation2)).oclAsType(consol::AdvanceDirectiveObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2dvds96jEee0kIKIEebuqA" type="_GnllUK-9EeO8duI_7f6kZw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2dvdtN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2eJtYN6jEee0kIKIEebuqA" name="getImmunizationActivity2s" bodyCondition="_2eJtY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2eJtY96jEee0kIKIEebuqA" name="body" constrainedElement="_2eJtYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2eJtZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::ImmunizationActivity2)).oclAsType(consol::ImmunizationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2eJtYd6jEee0kIKIEebuqA" type="_zI6vcOE7EeOTq9XEMvvkWw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2eJtYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2ejWAN6jEee0kIKIEebuqA" name="getMedicationActivity2s" bodyCondition="_2ejWA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2ejWA96jEee0kIKIEebuqA" name="body" constrainedElement="_2ejWAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ejWBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity2)).oclAsType(consol::MedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2ejWAd6jEee0kIKIEebuqA" type="_WnSCMOLAEeOc7-TVP7Wi6w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ejWAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2fApAN6jEee0kIKIEebuqA" name="getProcedureActivityAct2s" bodyCondition="_2fApA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2fApA96jEee0kIKIEebuqA" name="body" constrainedElement="_2fApAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2fApBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProcedureActivityAct2)).oclAsType(consol::ProcedureActivityAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2fApAd6jEee0kIKIEebuqA" type="_CFMuYPDbEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2fApAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2faRoN6jEee0kIKIEebuqA" name="getInterventionActs" bodyCondition="_2faRo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2faRo96jEee0kIKIEebuqA" name="body" constrainedElement="_2faRoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2faRpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::InterventionAct)).oclAsType(consol::InterventionAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2faRod6jEee0kIKIEebuqA" type="_XD5vgJA8EeOZX935IVJfOg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2faRot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2fz6QN6jEee0kIKIEebuqA" name="getProcedureActivityObservation2s" bodyCondition="_2fz6Q96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2fz6Q96jEee0kIKIEebuqA" name="body" constrainedElement="_2fz6QN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2fz6RN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProcedureActivityObservation2)).oclAsType(consol::ProcedureActivityObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2fz6Qd6jEee0kIKIEebuqA" type="_QoLWAPDjEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2fz6Qt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2gNi4N6jEee0kIKIEebuqA" name="getProcedureActivityProcedure2s" bodyCondition="_2gNi496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2gNi496jEee0kIKIEebuqA" name="body" constrainedElement="_2gNi4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2gNi5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::ProcedureActivityProcedure2)).oclAsType(consol::ProcedureActivityProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2gNi4d6jEee0kIKIEebuqA" type="_fCVOQPDqEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2gNi4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2gnLgt6jEee0kIKIEebuqA" name="getEncounterActivity2s" bodyCondition="_2gnLhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2gnLhd6jEee0kIKIEebuqA" name="body" constrainedElement="_2gnLgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2gnLht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::EncounterActivity2)).oclAsType(consol::EncounterActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2gnLg96jEee0kIKIEebuqA" type="_RGU34MzDEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2gnLhN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2hA0Id6jEee0kIKIEebuqA" name="getInstruction2s" bodyCondition="_2hA0JN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2hA0JN6jEee0kIKIEebuqA" name="body" constrainedElement="_2hA0Id6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2hA0Jd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instruction2)).oclAsType(consol::Instruction2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2hA0It6jEee0kIKIEebuqA" type="_D62NwOH7EeO04sHNODkHmQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2hA0I96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2hacwN6jEee0kIKIEebuqA" name="getNonMedicinalSupplyActivity2s" bodyCondition="_2hacw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2hacw96jEee0kIKIEebuqA" name="body" constrainedElement="_2hacwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2hacxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::NonMedicinalSupplyActivity2)).oclAsType(consol::NonMedicinalSupplyActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2hacwd6jEee0kIKIEebuqA" type="_k_C20OaCEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2hacwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2hzeUt6jEee0kIKIEebuqA" name="getPlannedAct2s" bodyCondition="_2h0FYt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2h0FYt6jEee0kIKIEebuqA" name="body" constrainedElement="_2hzeUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2h0FY96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlannedAct2)).oclAsType(consol::PlannedAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2h0FYN6jEee0kIKIEebuqA" type="_lLnRMOaYEeOmzetP5oaH3A" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2h0FYd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2iNuAN6jEee0kIKIEebuqA" name="getPlannedEncounter2s" bodyCondition="_2iNuA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2iNuA96jEee0kIKIEebuqA" name="body" constrainedElement="_2iNuAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2iNuBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::PlannedEncounter2)).oclAsType(consol::PlannedEncounter2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2iNuAd6jEee0kIKIEebuqA" type="_bDPFMOdXEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2iNuAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2in9sN6jEee0kIKIEebuqA" name="getPlannedObservation2s" bodyCondition="_2in9s96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2in9s96jEee0kIKIEebuqA" name="body" constrainedElement="_2in9sN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2in9tN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PlannedObservation2)).oclAsType(consol::PlannedObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2in9sd6jEee0kIKIEebuqA" type="_jKZssOdvEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2in9st6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2jCNYN6jEee0kIKIEebuqA" name="getPlannedProcedure2s" bodyCondition="_2jCNY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2jCNY96jEee0kIKIEebuqA" name="body" constrainedElement="_2jCNYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2jCNZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlannedProcedure2)).oclAsType(consol::PlannedProcedure2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2jCNYd6jEee0kIKIEebuqA" type="_cs0YsOeEEeOqBOMhgDlycQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2jCNYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2jdEIN6jEee0kIKIEebuqA" name="getPlannedMedicationActivity2s" bodyCondition="_2jdEI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2jdEI96jEee0kIKIEebuqA" name="body" constrainedElement="_2jdEIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2jdEJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlannedMedicationActivity2)).oclAsType(consol::PlannedMedicationActivity2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2jdEId6jEee0kIKIEebuqA" type="_Yj45YOgREeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2jdEIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2j364N6jEee0kIKIEebuqA" name="getPlannedSupply2s" bodyCondition="_2j36496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2j36496jEee0kIKIEebuqA" name="body" constrainedElement="_2j364N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2j365N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::PlannedSupply2)).oclAsType(consol::PlannedSupply2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2j364d6jEee0kIKIEebuqA" type="_vEd1cOg0EeO-iJTuAv7BKQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2j364t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2kSKkN6jEee0kIKIEebuqA" name="getNutritionRecommendations" bodyCondition="_2kSKk96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2kSKk96jEee0kIKIEebuqA" name="body" constrainedElement="_2kSKkN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2kSKlN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::NutritionRecommendation)).oclAsType(consol::NutritionRecommendation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2kSKkd6jEee0kIKIEebuqA" type="_FhAIMI3FEeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2kSKkt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2krzMN6jEee0kIKIEebuqA" name="getEntryReferenceDocInstances" bodyCondition="_2krzM96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2krzM96jEee0kIKIEebuqA" name="body" constrainedElement="_2krzMN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2krzNN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2krzMd6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2krzMt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2lIfIN6jEee0kIKIEebuqA" name="getEntryReferenceGoalObs" bodyCondition="_2lIfI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2lIfI96jEee0kIKIEebuqA" name="body" constrainedElement="_2lIfIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2lIfJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference))->asSequence()->any(true).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2lIfId6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2lIfIt6jEee0kIKIEebuqA" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2liHwt6jEee0kIKIEebuqA" name="getHandoffCommunicationParticipantss" bodyCondition="_2liu0N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2liu0N6jEee0kIKIEebuqA" name="body" constrainedElement="_2liHwt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2liu0d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HandoffCommunicationParticipants)).oclAsType(consol::HandoffCommunicationParticipants)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2liHw96jEee0kIKIEebuqA" type="_POfwAIz7EeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2liHxN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2l8-gN6jEee0kIKIEebuqA" name="getPlannedImmunizationActivities" bodyCondition="_2l8-g96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2l8-g96jEee0kIKIEebuqA" name="body" constrainedElement="_2l8-gN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2l8-hN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlannedImmunizationActivity)).oclAsType(consol::PlannedImmunizationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2l8-gd6jEee0kIKIEebuqA" type="_KRcPwJXFEeOgXcDbh8Igkw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2l8-gt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_mMk3QON1EeS_XOr-dz_KWA" name="RiskConcernAct">
      <ownedComment xmi:id="_SdCVEON2EeS_XOr-dz_KWA">
        <body>&lt;p>&#xD;
This template represents a risk concern.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
It is a wrapper for a single risk concern which may be derived from a variety of sources within an EHR (such as Problem List, Family History, Social History, Social Worker Note, etc.).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
A Risk Concern Act represents a health concern that is a risk. A risk is a clinical or socioeconomic condition that the patient does not currently have, but the probability of developing that condition rises to the level of concern such that an intervention and/or monitoring is needed.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_2mvosN6jEee0kIKIEebuqA" name="RiskConcernActTemplateId" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2mvosd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.136' and id.extension = '2015-08-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2mysAN6jEee0kIKIEebuqA" name="RiskConcernActClassCode" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2mysAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2m2WYN6jEee0kIKIEebuqA" name="RiskConcernActMoodCode" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2m2WYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2m5ZsN6jEee0kIKIEebuqA" name="RiskConcernActId" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2m5Zsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (( not self.id->isEmpty()) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2nAucN6jEee0kIKIEebuqA" name="RiskConcernActCodeP" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2nAucd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2m9EEN6jEee0kIKIEebuqA" name="RiskConcernActCode" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2m9EEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '281694009' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2nE_4N6jEee0kIKIEebuqA" name="RiskConcernActStatusCode" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2nFm8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2nhr0N6jEee0kIKIEebuqA" name="RiskConcernActStatusCodeP" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2nhr0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2n9JoN6jEee0kIKIEebuqA" name="RiskConcernActEffectiveTime" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2n9Jod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2oeHAN6jEee0kIKIEebuqA" name="RiskConcernActAuthorParticipation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2oeHAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::AuthorParticipation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2o3voN6jEee0kIKIEebuqA" name="RiskConcernActProblemObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2o3vod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2pRYQN6jEee0kIKIEebuqA" name="RiskConcernActAllergyObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2pRYQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AllergyObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2pqZ0N6jEee0kIKIEebuqA" name="RiskConcernActEntryReferenceRelatesTo" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2pqZ0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2qECcN6jEee0kIKIEebuqA" name="RiskConcernActEntryReferenceHasComponent" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2qECcd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2qdrEN6jEee0kIKIEebuqA" name="RiskConcernActAssessmentScaleObservation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2qdrEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::AssessmentScaleObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2q2soN6jEee0kIKIEebuqA" name="RiskConcernActMentalStatusObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2q2sod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::MentalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2rQ8UN6jEee0kIKIEebuqA" name="RiskConcernActSelfCareActivities" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2rQ8Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SelfCareActivities) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2rtoQN6jEee0kIKIEebuqA" name="RiskConcernActMentalStatusObservation2B" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2rtoQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::MentalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2sH38N6jEee0kIKIEebuqA" name="RiskConcernActSmokingStatusMeaningfulUse2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2sH38d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2shgkN6jEee0kIKIEebuqA" name="RiskConcernActEncounterDiagnosis2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2shgkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EncounterDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2s7JMN6jEee0kIKIEebuqA" name="RiskConcernActFamilyHistoryOrganizer2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2s7JMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.organizer.oclIsUndefined() and entryRelationship.organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2tVY4N6jEee0kIKIEebuqA" name="RiskConcernActFunctionalStatusObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2tV_8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::FunctionalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2t0hEN6jEee0kIKIEebuqA" name="RiskConcernActHospitalAdmissionDiagnosis2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2t0hEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2uZI0N6jEee0kIKIEebuqA" name="RiskConcernActMentalStatusObservation2C" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2uZI0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::MentalStatusObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2u2b0N6jEee0kIKIEebuqA" name="RiskConcernActNutritionAssessment" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2u2b0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionAssessment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2vU88N6jEee0kIKIEebuqA" name="RiskConcernActNutritionAssessmentB" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2vU88d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionAssessment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2vy3AN6jEee0kIKIEebuqA" name="RiskConcernActPostprocedureDiagnosis2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2vy3Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PostprocedureDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2wQxEN6jEee0kIKIEebuqA" name="RiskConcernActPregnancyObservation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2wQxEd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PregnancyObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2wv5QN6jEee0kIKIEebuqA" name="RiskConcernActPreoperativeDiagnosis2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2wv5Qd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::PreoperativeDiagnosis2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2xNzUN6jEee0kIKIEebuqA" name="RiskConcernActReactionObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2xNzUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ReactionObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2xqfQN6jEee0kIKIEebuqA" name="RiskConcernActResultObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2xqfQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ResultObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2yHyQN6jEee0kIKIEebuqA" name="RiskConcernActSensoryStatus" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2yHyQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SensoryStatus) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2yovoN6jEee0kIKIEebuqA" name="RiskConcernActSocialHistoryObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2yovod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SocialHistoryObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2zGpsN6jEee0kIKIEebuqA" name="RiskConcernActSubstanceOrDeviceAllergyObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2zGpsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::SubstanceOrDeviceAllergyObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2zkjwN6jEee0kIKIEebuqA" name="RiskConcernActTobaccoUse2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2zkjwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::TobaccoUse2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_20BPsN6jEee0kIKIEebuqA" name="RiskConcernActVitalSignObservation2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_20BPsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::VitalSignObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_20eisN6jEee0kIKIEebuqA" name="RiskConcernActWoundObservation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_20eisd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::LongitudinalCareWoundObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_20-R8N6jEee0kIKIEebuqA" name="RiskConcernActProblemObservation2HasSupport" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_20-5AN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::ProblemObservation2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::SPRT)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_21bk8N6jEee0kIKIEebuqA" name="RiskConcernActCaregiverCharacteristics" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_21cMAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CaregiverCharacteristics) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_216tIN6jEee0kIKIEebuqA" name="RiskConcernActCulturalAndReligiousObservation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_216tId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CulturalAndReligiousObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_22WyAN6jEee0kIKIEebuqA" name="RiskConcernActCharacteristicsOfHomeEnvironment" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_22XZEN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_223vYN6jEee0kIKIEebuqA" name="RiskConcernActNutritionalStatusObservation" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_223vYd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::NutritionalStatusObservation) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_23UbUN6jEee0kIKIEebuqA" name="RiskConcernActResultOrganizer2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_23UbUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.organizer.oclIsUndefined() and entryRelationship.organizer.oclIsKindOf(consol::ResultOrganizer2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_23zjgN6jEee0kIKIEebuqA" name="RiskConcernActPriorityPreferencePatient" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_23zjgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_24RdkN6jEee0kIKIEebuqA" name="RiskConcernActPriorityPreferenceProvider" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_24Rdkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.observation.oclIsUndefined() and entryRelationship.observation.oclIsKindOf(consol::PriorityPreference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_24v-sN6jEee0kIKIEebuqA" name="RiskConcernActProblemConcernAct2" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_24v-sd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::ProblemConcernAct2) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_25MqoN6jEee0kIKIEebuqA" name="RiskConcernActEntryReferenceHealthConcern" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_25Mqod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::EntryReference) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_25tA8N6jEee0kIKIEebuqA" name="RiskConcernActReference" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_25toAN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6xcHgN6jEee0kIKIEebuqA" name="RiskConcernActReferenceTypeCode" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6xcHgd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(typeCode=vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6xcukN6jEee0kIKIEebuqA" name="RiskConcernActReferenceExternalDocumentReference" constrainedElement="_mMk3QON1EeS_XOr-dz_KWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6xcukd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(consol::ExternalDocumentReference)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_mMszEON1EeS_XOr-dz_KWA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_2o3vot6jEee0kIKIEebuqA" name="getProblemObservation2s" bodyCondition="_2o4WsN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2o4WsN6jEee0kIKIEebuqA" name="body" constrainedElement="_2o3vot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2o4Wsd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2o3vo96jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2o3vpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2pRYQt6jEee0kIKIEebuqA" name="getAllergyObservation2s" bodyCondition="_2pRYRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2pRYRd6jEee0kIKIEebuqA" name="body" constrainedElement="_2pRYQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2pRYRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyObservation2)).oclAsType(consol::AllergyObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2pRYQ96jEee0kIKIEebuqA" type="_uVJogLj5EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2pRYRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2prA4N6jEee0kIKIEebuqA" name="getEntryReferenceRelatesTos" bodyCondition="_2prA496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2prA496jEee0kIKIEebuqA" name="body" constrainedElement="_2prA4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2prA5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2prA4d6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2prA4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2qECct6jEee0kIKIEebuqA" name="getEntryReferenceHasComponents" bodyCondition="_2qEpgd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2qEpgd6jEee0kIKIEebuqA" name="body" constrainedElement="_2qECct6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2qEpgt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2qECc96jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qEpgN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2qdrEt6jEee0kIKIEebuqA" name="getAssessmentScaleObservations" bodyCondition="_2qdrFd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2qdrFd6jEee0kIKIEebuqA" name="body" constrainedElement="_2qdrEt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2qdrFt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AssessmentScaleObservation)).oclAsType(consol::AssessmentScaleObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2qdrE96jEee0kIKIEebuqA" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qdrFN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2q3TsN6jEee0kIKIEebuqA" name="getMentalStatusObservation2s" bodyCondition="_2q3Ts96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2q3Ts96jEee0kIKIEebuqA" name="body" constrainedElement="_2q3TsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2q3TtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2q3Tsd6jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2q3Tst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2rQ8Ut6jEee0kIKIEebuqA" name="getSelfCareActivitiess" bodyCondition="_2rQ8Vd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2rQ8Vd6jEee0kIKIEebuqA" name="body" constrainedElement="_2rQ8Ut6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2rQ8Vt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SelfCareActivities)).oclAsType(consol::SelfCareActivities)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2rQ8U96jEee0kIKIEebuqA" type="_nC0xUJmzEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rQ8VN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2ruPUN6jEee0kIKIEebuqA" name="getMentalStatusObservation2Bs" bodyCondition="_2ruPU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2ruPU96jEee0kIKIEebuqA" name="body" constrainedElement="_2ruPUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2ruPVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2ruPUd6jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ruPUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2sH38t6jEee0kIKIEebuqA" name="getSmokingStatusMeaningfulUse2s" bodyCondition="_2sH39d6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2sH39d6jEee0kIKIEebuqA" name="body" constrainedElement="_2sH38t6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2sH39t6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SmokingStatusMeaningfulUse2)).oclAsType(consol::SmokingStatusMeaningfulUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2sH3896jEee0kIKIEebuqA" type="_Hl3ScLk0EeODDJAC5t5vpw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2sH39N6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2siHoN6jEee0kIKIEebuqA" name="getEncounterDiagnosis2s" bodyCondition="_2siHo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2siHo96jEee0kIKIEebuqA" name="body" constrainedElement="_2siHoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2siHpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EncounterDiagnosis2)).oclAsType(consol::EncounterDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2siHod6jEee0kIKIEebuqA" type="_jH6CcMzNEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2siHot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2s7JMt6jEee0kIKIEebuqA" name="getFamilyHistoryOrganizer2s" bodyCondition="_2s7JNd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2s7JNd6jEee0kIKIEebuqA" name="body" constrainedElement="_2s7JMt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2s7JNt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::FamilyHistoryOrganizer2)).oclAsType(consol::FamilyHistoryOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2s7JM96jEee0kIKIEebuqA" type="_6whQEIbpEeSxzopshBnQuw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2s7JNN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2tV_8d6jEee0kIKIEebuqA" name="getFunctionalStatusObservation2s" bodyCondition="_2tV_9N6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2tV_9N6jEee0kIKIEebuqA" name="body" constrainedElement="_2tV_8d6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2tV_9d6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FunctionalStatusObservation2)).oclAsType(consol::FunctionalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2tV_8t6jEee0kIKIEebuqA" type="_3WqogMzSEeO93sHu8pHB2g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2tV_896jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2t1IIN6jEee0kIKIEebuqA" name="getHospitalAdmissionDiagnosis2s" bodyCondition="_2t1II96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2t1II96jEee0kIKIEebuqA" name="body" constrainedElement="_2t1IIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2t1IJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalAdmissionDiagnosis2)).oclAsType(consol::HospitalAdmissionDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2t1IId6jEee0kIKIEebuqA" type="_GM6icOEIEeOmBMTtnrPqww" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2t1IIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2uZv4N6jEee0kIKIEebuqA" name="getMentalStatusObservation2Cs" bodyCondition="_2uZv496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2uZv496jEee0kIKIEebuqA" name="body" constrainedElement="_2uZv4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2uZv5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::MentalStatusObservation2)).oclAsType(consol::MentalStatusObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2uZv4d6jEee0kIKIEebuqA" type="_ze150PitEeOXlK95I8tUew" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2uZv4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2u3C4N6jEee0kIKIEebuqA" name="getNutritionAssessments" bodyCondition="_2u3C496jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2u3C496jEee0kIKIEebuqA" name="body" constrainedElement="_2u3C4N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2u3C5N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionAssessment)).oclAsType(consol::NutritionAssessment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2u3C4d6jEee0kIKIEebuqA" type="_NP5zMI05EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2u3C4t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2vVkAN6jEee0kIKIEebuqA" name="getNutritionAssessmentBs" bodyCondition="_2vVkA96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2vVkA96jEee0kIKIEebuqA" name="body" constrainedElement="_2vVkAN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2vVkBN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionAssessment)).oclAsType(consol::NutritionAssessment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2vVkAd6jEee0kIKIEebuqA" type="_NP5zMI05EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2vVkAt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2vy3At6jEee0kIKIEebuqA" name="getPostprocedureDiagnosis2s" bodyCondition="_2vy3Bd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2vy3Bd6jEee0kIKIEebuqA" name="body" constrainedElement="_2vy3At6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2vzeEN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PostprocedureDiagnosis2)).oclAsType(consol::PostprocedureDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2vy3A96jEee0kIKIEebuqA" type="__SgUwOwuEeOqa975IP2wug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2vy3BN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2wRYIN6jEee0kIKIEebuqA" name="getPregnancyObservations" bodyCondition="_2wRYI96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2wRYI96jEee0kIKIEebuqA" name="body" constrainedElement="_2wRYIN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2wRYJN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PregnancyObservation)).oclAsType(consol::PregnancyObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2wRYId6jEee0kIKIEebuqA" type="_2N6soBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2wRYIt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2wwgUN6jEee0kIKIEebuqA" name="getPreoperativeDiagnosis2s" bodyCondition="_2wwgU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2wwgU96jEee0kIKIEebuqA" name="body" constrainedElement="_2wwgUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2wwgVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PreoperativeDiagnosis2)).oclAsType(consol::PreoperativeDiagnosis2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2wwgUd6jEee0kIKIEebuqA" type="_5l3g0OzYEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2wwgUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2xNzUt6jEee0kIKIEebuqA" name="getReactionObservation2s" bodyCondition="_2xOaYt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2xOaYt6jEee0kIKIEebuqA" name="body" constrainedElement="_2xNzUt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2xOaY96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation2)).oclAsType(consol::ReactionObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2xOaYN6jEee0kIKIEebuqA" type="_U3yosPDxEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2xOaYd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2xrGUN6jEee0kIKIEebuqA" name="getResultObservation2s" bodyCondition="_2xrGU96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2xrGU96jEee0kIKIEebuqA" name="body" constrainedElement="_2xrGUN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2xrGVN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ResultObservation2)).oclAsType(consol::ResultObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2xrGUd6jEee0kIKIEebuqA" type="_H85E0PF7EeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2xrGUt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2yHyQt6jEee0kIKIEebuqA" name="getSensoryStatuss" bodyCondition="_2yHyRd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2yHyRd6jEee0kIKIEebuqA" name="body" constrainedElement="_2yHyQt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2yHyRt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SensoryStatus)).oclAsType(consol::SensoryStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2yHyQ96jEee0kIKIEebuqA" type="_kyeGAJm4EeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2yHyRN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2yovot6jEee0kIKIEebuqA" name="getSocialHistoryObservation2s" bodyCondition="_2yovpd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2yovpd6jEee0kIKIEebuqA" name="body" constrainedElement="_2yovot6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2yovpt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SocialHistoryObservation2)).oclAsType(consol::SocialHistoryObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2yovo96jEee0kIKIEebuqA" type="_b_iGIPJfEeO2NaSiicarcg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2yovpN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2zGpst6jEee0kIKIEebuqA" name="getSubstanceOrDeviceAllergyObservation2s" bodyCondition="_2zHQwN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2zHQwN6jEee0kIKIEebuqA" name="body" constrainedElement="_2zGpst6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2zHQwd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SubstanceOrDeviceAllergyObservation2)).oclAsType(consol::SubstanceOrDeviceAllergyObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2zGps96jEee0kIKIEebuqA" type="_K3M6IPKJEeOn7bMsPcStOw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2zGptN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_2zlK0N6jEee0kIKIEebuqA" name="getTobaccoUse2s" bodyCondition="_2zlK096jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_2zlK096jEee0kIKIEebuqA" name="body" constrainedElement="_2zlK0N6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_2zlK1N6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::TobaccoUse2)).oclAsType(consol::TobaccoUse2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_2zlK0d6jEee0kIKIEebuqA" type="_qHUXwPMxEeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2zlK0t6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_20B2wN6jEee0kIKIEebuqA" name="getVitalSignObservation2s" bodyCondition="_20B2w96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_20B2w96jEee0kIKIEebuqA" name="body" constrainedElement="_20B2wN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_20B2xN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::VitalSignObservation2)).oclAsType(consol::VitalSignObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_20B2wd6jEee0kIKIEebuqA" type="__zeTcPM3EeOUvapeh9bVvQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_20B2wt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_20fJwN6jEee0kIKIEebuqA" name="getWoundObservations" bodyCondition="_20fJw96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_20fJw96jEee0kIKIEebuqA" name="body" constrainedElement="_20fJwN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_20fJxN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::LongitudinalCareWoundObservation)).oclAsType(consol::LongitudinalCareWoundObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_20fJwd6jEee0kIKIEebuqA" type="_09uFMJp_EeOK6dzbL4VoTA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_20fJwt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_20-5Ad6jEee0kIKIEebuqA" name="getProblemObservation2HasSupports" bodyCondition="_20-5BN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_20-5BN6jEee0kIKIEebuqA" name="body" constrainedElement="_20-5Ad6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_20-5Bd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation2)).oclAsType(consol::ProblemObservation2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_20-5At6jEee0kIKIEebuqA" type="_prDAkPDCEeOKPKE9au0oug" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_20-5A96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_21cMAd6jEee0kIKIEebuqA" name="getCaregiverCharacteristicss" bodyCondition="_21cMBN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_21cMBN6jEee0kIKIEebuqA" name="body" constrainedElement="_21cMAd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_21cMBd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CaregiverCharacteristics)).oclAsType(consol::CaregiverCharacteristics)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_21cMAt6jEee0kIKIEebuqA" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_21cMA96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_216tIt6jEee0kIKIEebuqA" name="getCulturalAndReligiousObservations" bodyCondition="_217UMt6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_217UMt6jEee0kIKIEebuqA" name="body" constrainedElement="_216tIt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_217UM96jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CulturalAndReligiousObservation)).oclAsType(consol::CulturalAndReligiousObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_217UMN6jEee0kIKIEebuqA" type="_H2EzIIqZEeOoMZgUoTghIg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_217UMd6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_22XZEd6jEee0kIKIEebuqA" name="getCharacteristicsOfHomeEnvironments" bodyCondition="_22XZFN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_22XZFN6jEee0kIKIEebuqA" name="body" constrainedElement="_22XZEd6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_22XZFd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::CharacteristicsOfHomeEnvironment)).oclAsType(consol::CharacteristicsOfHomeEnvironment)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_22XZEt6jEee0kIKIEebuqA" type="_O-O-IInUEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22XZE96jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_223vYt6jEee0kIKIEebuqA" name="getNutritionalStatusObservations" bodyCondition="_224WcN6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_224WcN6jEee0kIKIEebuqA" name="body" constrainedElement="_223vYt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_224Wcd6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::NutritionalStatusObservation)).oclAsType(consol::NutritionalStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_223vY96jEee0kIKIEebuqA" type="_T1dcwI37EeOB0eBUISUB4Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_223vZN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_23VCYN6jEee0kIKIEebuqA" name="getResultOrganizer2s" bodyCondition="_23VCY96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_23VCY96jEee0kIKIEebuqA" name="body" constrainedElement="_23VCYN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_23VCZN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getOrganizers()->select(organizer : cda::Organizer | not organizer.oclIsUndefined() and organizer.oclIsKindOf(consol::ResultOrganizer2)).oclAsType(consol::ResultOrganizer2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_23VCYd6jEee0kIKIEebuqA" type="_gU40UPGEEeOmsLWmq5fnqQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23VCYt6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_23zjgt6jEee0kIKIEebuqA" name="getPriorityPreferencePatients" bodyCondition="_23zjhd6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_23zjhd6jEee0kIKIEebuqA" name="body" constrainedElement="_23zjgt6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_23zjht6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_23zjg96jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23zjhN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_24SEoN6jEee0kIKIEebuqA" name="getPriorityPreferenceProviders" bodyCondition="_24SEo96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_24SEo96jEee0kIKIEebuqA" name="body" constrainedElement="_24SEoN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_24SEpN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PriorityPreference)).oclAsType(consol::PriorityPreference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_24SEod6jEee0kIKIEebuqA" type="_ncafYJmaEeOLJeQez13EkQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_24SEot6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_24v-st6jEee0kIKIEebuqA" name="getProblemConcernAct2s" bodyCondition="_24v-td6jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_24v-td6jEee0kIKIEebuqA" name="body" constrainedElement="_24v-st6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_24v-tt6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::ProblemConcernAct2)).oclAsType(consol::ProblemConcernAct2)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_24v-s96jEee0kIKIEebuqA" type="_y5C8IOzbEeOnE-G4kptBiw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_24v-tN6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_25NRsN6jEee0kIKIEebuqA" name="getEntryReferenceHealthConcerns" bodyCondition="_25NRs96jEee0kIKIEebuqA" isQuery="true">
        <ownedRule xmi:id="_25NRs96jEee0kIKIEebuqA" name="body" constrainedElement="_25NRsN6jEee0kIKIEebuqA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_25NRtN6jEee0kIKIEebuqA">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::EntryReference)).oclAsType(consol::EntryReference)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_25NRsd6jEee0kIKIEebuqA" type="_u_keoIkOEeOJGtGyq_dBbA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_25NRst6jEee0kIKIEebuqA" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_kowjcDr-EeWD4MX6K2c_gA" name="MedicationFreeTextSig">
      <ownedComment xmi:id="_vpLugDr_EeWD4MX6K2c_gA">
        <body>&lt;p>&#xD;
The template is available to explicitly identify the free text Sig within each medication.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
An example free text sig: Thyroxin 150 ug, take one tab by mouth every morning&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_odzJEDsDEeWD4MX6K2c_gA" name="MedicationFreeTextSigTextReferenceValue">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_odzJETsDEeWD4MX6K2c_gA">
          <language>OCL</language>
          <body>not self.text.reference.value.oclIsUndefined() implies not self.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3LulEN6jEee0kIKIEebuqA" name="MedicationFreeTextSigTemplateId" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3LvMIN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.147')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3L0rsN6jEee0kIKIEebuqA" name="MedicationFreeTextSigClassCode" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3L0rsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3L6LQN6jEee0kIKIEebuqA" name="MedicationFreeTextSigMoodCode" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3L6LQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and &#xD;
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in &#xD;
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3MokAN6jEee0kIKIEebuqA" name="MedicationFreeTextSigCode" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3MokAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '76662-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Mwf0N6jEee0kIKIEebuqA" name="MedicationFreeTextSigCodeP" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Mwf0d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3M30kN6jEee0kIKIEebuqA" name="MedicationFreeTextSigText" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3M30kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3N1d4N6jEee0kIKIEebuqA" name="MedicationFreeTextSigConsumable" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3N1d4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6xhAAN6jEee0kIKIEebuqA" name="MedicationFreeTextSigEDTELValue" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6xhAAd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.text->excluding(null)->select(isNullFlavorUndefined()).reference->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (not value.oclIsUndefined() )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6xhAAt6jEee0kIKIEebuqA" name="MedicationFreeTextSigEDReference" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6xhAA96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.text->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies ((reference.oclIsUndefined() or reference.isNullFlavorUndefined()) implies (not reference.oclIsUndefined()) )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6yq2kN6jEee0kIKIEebuqA" name="MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrugNullFlavor" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6yq2kd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null).manufacturedProduct->excluding(null).manufacturedLabeledDrug->excluding(null)->reject(isDefined('nullFlavor'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6yrdoN6jEee0kIKIEebuqA" name="MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrug" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6yrdod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null).manufacturedProduct->excluding(null)->reject(manufacturedLabeledDrug->one(manufacturedLabeledDrug : cda::LabeledDrug | not manufacturedLabeledDrug.oclIsUndefined() and manufacturedLabeledDrug.oclIsKindOf(cda::LabeledDrug)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_6yrdot6jEee0kIKIEebuqA" name="MedicationFreeTextSigConsumableManufacturedProduct" constrainedElement="_kowjcDr-EeWD4MX6K2c_gA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_6yrdo96jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.consumable->excluding(null)->reject(manufacturedProduct->one(manufacturedProduct : cda::ManufacturedProduct | not manufacturedProduct.oclIsUndefined() and manufacturedProduct.oclIsKindOf(cda::ManufacturedProduct)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_kowjcTr-EeWD4MX6K2c_gA">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_8fGTcD-qEeaJttsCYk-pKw" name="BirthSexObservation">
      <ownedComment xmi:id="_fh8yMD-rEeaJttsCYk-pKw">
        <body>&lt;p>This observation represents the sex of the patient at birth. It is the sex that is entered on the person's birth certificate at time of birth.&lt;/p>&#xD;
&lt;p>This observation is not appropriate for recording patient gender (administrativeGender).&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_3PlKUN6jEee0kIKIEebuqA" name="BirthSexObservationTemplateId" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3PlKUd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.200' and id.extension = '2016-06-01')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3PpbwN6jEee0kIKIEebuqA" name="BirthSexObservationClassCode" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Ppbwd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3Pu7UN6jEee0kIKIEebuqA" name="BirthSexObservationMoodCode" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3Pu7Ud6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3P7voN6jEee0kIKIEebuqA" name="BirthSexObservationCodeP" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3P7vod6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3P0a4N6jEee0kIKIEebuqA" name="BirthSexObservationCode" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3P0a4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '76689-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3QAoIN6jEee0kIKIEebuqA" name="BirthSexObservationStatusCode" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3QAoId6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3QGHsN6jEee0kIKIEebuqA" name="BirthSexObservationStatusCodeP" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3QGHsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3QM1YN6jEee0kIKIEebuqA" name="BirthSexObservationValue" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3QM1Yd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.1' and (value.code = 'F' or value.code = 'M')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3QyEMN6jEee0kIKIEebuqA" name="BirthSexObservationValueP" constrainedElement="_8fGTcD-qEeaJttsCYk-pKw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3QyEMd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_8fHhkD-qEeaJttsCYk-pKw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_LspMELDzEeafNo3UpQoAYw" name="CriticalityObservation">
      <ownedComment xmi:id="_muQYQLDzEeafNo3UpQoAYw">
        <body>&lt;p>This observation represents the gravity of the potential risk for future life-threatening adverse reactions when exposed to a substance known to cause an adverse reaction in that individual. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality.&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_3R9I4N6jEee0kIKIEebuqA" name="CriticalityObservationTemplateId" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3R9v8N6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.22.4.145')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SAzQN6jEee0kIKIEebuqA" name="CriticalityObservationClassCode" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SBaUN6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SFEsN6jEee0kIKIEebuqA" name="CriticalityObservationMoodCode" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SFEsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SR5AN6jEee0kIKIEebuqA" name="CriticalityObservationCodeP" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SR5Ad6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SKkQN6jEee0kIKIEebuqA" name="CriticalityObservationCode" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SKkQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in &#xD;
value.code = '82606-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SXYkN6jEee0kIKIEebuqA" name="CriticalityObservationStatusCode" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SXYkd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in &#xD;
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SeGQN6jEee0kIKIEebuqA" name="CriticalityObservationStatusCodeP" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SeGQd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3SkM4N6jEee0kIKIEebuqA" name="CriticalityObservationValue" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3SkM4d6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;
let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;
value.codeSystem = '2.16.840.1.113883.5.1063' and (value.code = 'CRITL' or value.code = 'CRITH' or value.code = 'CRITU')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_3TJbsN6jEee0kIKIEebuqA" name="CriticalityObservationValueP" constrainedElement="_LspMELDzEeafNo3UpQoAYw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_3TJbsd6jEee0kIKIEebuqA">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() =  1 and self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_LsroULDzEeafNo3UpQoAYw">
        <general xmi:type="uml:Class" href="pathmap://CDA_MODEL/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <profileApplication xmi:id="_2B97UBSVEeGGzu7fmW9pXw">
      <eAnnotations xmi:id="_2B97URSVEeGGzu7fmW9pXw" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.openhealthtools.org/mdht/schemas/cda/4#/"/>
      </eAnnotations>
      <appliedProfile href="pathmap://CDA_PROFILES/CDA.profile.uml#_cxOJEIEVEd6H8o-hO3-B4Q"/>
    </profileApplication>
    <profileApplication xmi:id="_n792UN6jEee0kIKIEebuqA">
      <eAnnotations xmi:id="_n8OVAN6jEee0kIKIEebuqA" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
    </profileApplication>
  </uml:Package>
  <CDA:AssociationValidation xmi:id="_2EY9MhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-168</ruleId>
  </CDA:AssociationValidation>
  <CDA:EntryRelationship xmi:id="_2ElKchSVEeGGzu7fmW9pXw" severity="INFO" typeCode="REFR"/>
  <CDA:EntryRelationship xmi:id="_2ElxghSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ"/>
  <CDA:EntryRelationship xmi:id="_2EwwoRSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-160</ruleId>
  </CDA:EntryRelationship>
  <CDA:EntryRelationship xmi:id="_2E_aIBSVEeGGzu7fmW9pXw" severity="INFO" typeCode="REFR"/>
  <CDA:EntryRelationship xmi:id="_2FGH1RSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-160</ruleId>
  </CDA:EntryRelationship>
  <CDA:EntryRelationship xmi:id="_2FgXgBSVEeGGzu7fmW9pXw" severity="INFO" typeCode="REFR"/>
  <CDA:EntryRelationship xmi:id="_2Fg-kBSVEeGGzu7fmW9pXw" severity="INFO" typeCode="REFR"/>
  <CDA:EntryRelationship xmi:id="_2Fr9shSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ"/>
  <CDA:EntryRelationship xmi:id="_2GsqUhSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-338</ruleId>
    <ruleId>CONF-339</ruleId>
  </CDA:EntryRelationship>
  <CDA:AssociationValidation xmi:id="_2G1NMhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-350</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2G43kxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-368</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2HU8dRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-351</ruleId>
  </CDA:AssociationValidation>
  <CDA:EntryRelationship xmi:id="_2HbqIhSVEeGGzu7fmW9pXw" message="An entry relationship may be present to provide the fulfillment instructions. When present, this entry relationship shall contain a Medication Fulfillment Instructions entry." severity="INFO" typeCode="SUBJ"/>
  <CDA:ConstraintValidation xmi:id="_2IezABSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2Ik5oxSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:AssociationValidation xmi:id="_2Iwf0hSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-207</ruleId>
  </CDA:AssociationValidation>
  <CDA:ConstraintValidation xmi:id="_2I9UIxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-215</ruleId>
  </CDA:ConstraintValidation>
  <CDA:AssociationValidation xmi:id="_2JeRghSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-246</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2Je4lBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-249</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2KIY1RSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:AssociationValidation xmi:id="_2KzuQhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-93</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2K8RIhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-98</ruleId>
  </CDA:AssociationValidation>
  <CDA:ActRelationship xmi:id="_2K84MBSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2LBwsxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-102</ruleId>
    <ruleId>CONF-103</ruleId>
  </CDA:AssociationValidation>
  <CDA:ActRelationship xmi:id="_2LCXwBSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2LXu8xSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2LfqwxSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:EntryRelationship xmi:id="_2LgR0hSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ"/>
  <CDA:AssociationValidation xmi:id="_2MABERSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-298</ruleId>
  </CDA:AssociationValidation>
  <CDA:EntryRelationship xmi:id="_2MIj9xSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-338</ruleId>
    <ruleId>CONF-339</ruleId>
  </CDA:EntryRelationship>
  <CDA:AssociationValidation xmi:id="_2MJLBRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-350</ruleId>
  </CDA:AssociationValidation>
  <CDA:EntryRelationship xmi:id="_2MJyFRSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-330</ruleId>
    <ruleId>CONF-333</ruleId>
  </CDA:EntryRelationship>
  <CDA:AssociationValidation xmi:id="_2MKZJRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-313</ruleId>
  </CDA:AssociationValidation>
  <CDA:EntryRelationship xmi:id="_2MLANRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-348</ruleId>
    <ruleId>CONF-349</ruleId>
  </CDA:EntryRelationship>
  <CDA:AssociationValidation xmi:id="_2MLnRRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-368</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2MXNcBSVEeGGzu7fmW9pXw" message="This section SHALL include entries from the Insurance Provider module when this information is known.">
    <ruleId>C83-[CT-101-2]</ruleId>
  </CDA:AssociationValidation>
  <CDA:PropertyValidation xmi:id="_2M3jxRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-57</ruleId>
  </CDA:PropertyValidation>
  <CDA:AssociationValidation xmi:id="_2NJ3sRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-298</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2NP-UxSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:AssociationValidation xmi:id="_2NP-VhSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:AssociationValidation xmi:id="_2NP-WRSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:AssociationValidation xmi:id="_2NP-XBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:AssociationValidation xmi:id="_2OG57RSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2OfUZhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-426</ruleId>
  </CDA:ConstraintValidation>
  <CDA:AssociationValidation xmi:id="_2OrhpxSVEeGGzu7fmW9pXw">
    <ruleId>6.3.4.21.8</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_2OrhsBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-399</ruleId>
  </CDA:AssociationValidation>
  <CDA:ConstraintValidation xmi:id="_2O91mxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-406</ruleId>
  </CDA:ConstraintValidation>
  <CDA:EntryRelationship xmi:id="_2SC-yRSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ">
    <ruleId>CONF-224</ruleId>
  </CDA:EntryRelationship>
  <CDA:AssociationValidation xmi:id="_sGVWMBUlEeGvPruliC3crg" severity="WARNING"/>
  <CDA:PropertyValidation xmi:id="_vAJFABVeEeGQCvUGzi1kDQ" severity="INFO"/>
  <CDA:EntryRelationship xmi:id="_hDPtEBrUEeGo461UQq-B1g" severity="INFO" typeCode="REFR">
    <base_Association href="../../../models/org.openhealthtools.mdht.uml.cda.consol2.model/model/.controlled/consol-immunizations.uml#_eLHCUhrUEeGo461UQq-B1g"/>
  </CDA:EntryRelationship>
  <CDA:CDATemplate xmi:id="_qzhEUBuEEeGnMahsPjlwOw" templateId="11111"/>
  <CDA:PropertyValidation xmi:id="_r4qugBuEEeGnMahsPjlwOw"/>
  <CDA:AssociationValidation xmi:id="_4Kb30BrkEeGJ_KU17uNyeA">
    <ruleId>CONF-458</ruleId>
  </CDA:AssociationValidation>
  <CDA:CodegenSupport xmi:id="_6C87UBwmEeG_RY8fzJjtMw" basePackage="org.openhealthtools.mdht.uml.cda" nsPrefix="consol" nsURI="http://www.openhealthtools.org/mdht/uml/cda/consol" packageName="consol" prefix="Consol" base_Namespace="_2B30sBSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_4Kb30BrkEeGJ_KU17uNyeA">
    <ruleId>CONF-458</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_AFd2wB7tEeGaOZtrEokzNQ" severity="INFO">
    <ruleId>CONF-9139</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_RRrrIB7tEeGaOZtrEokzNQ" severity="WARNING">
    <ruleId>CONF-7150</ruleId>
  </CDA:AssociationValidation>
  <CDA:CDATemplate xmi:id="_yJUwEBkaEeGs5a462vYX5Q" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.33"/>
  <CDA:CodeSystemConstraint xmi:id="_2U6FcBSVEeGGzu7fmW9pXw" code="42344-2" displayName="Discharge Diet">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
  </CDA:CodeSystemConstraint>
  <CDA:CDATemplate xmi:id="_41cG4BnXEeGs5a462vYX5Q" templateId="2.16.840.1.113883.10.20.22.2.24"/>
  <CDA:CodeSystemConstraint xmi:id="_2Poj4RSVEeGGzu7fmW9pXw" code="11535-2" displayName="HOSPITAL DISCHARGE DX">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
  </CDA:CodeSystemConstraint>
  <CDA:AssociationValidation xmi:id="_2PidWxSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_5nMEgCwNEeGKLc4ckmfDag" severity="WARNING">
    <ruleId>CONF:8802</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="__GSxhSwNEeGKLc4ckmfDag">
    <ruleId>CONF:8802</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_USFDsCwXEeGKLc4ckmfDag">
    <ruleId>CONF:8726</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_JJ5jcCwZEeGKLc4ckmfDag" severity="INFO">
    <ruleId>CONF:8725</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_5nMEgCwNEeGKLc4ckmfDag" severity="WARNING">
    <ruleId>CONF:8802</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="__GSxhSwNEeGKLc4ckmfDag">
    <ruleId>CONF:8802</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_USFDsCwXEeGKLc4ckmfDag">
    <ruleId>CONF:8726</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_JJ5jcCwZEeGKLc4ckmfDag" severity="INFO">
    <ruleId>CONF:8725</ruleId>
  </CDA:AssociationValidation>
  <CDA:AssociationValidation xmi:id="_dO2aID-OEeGvOdejHZ7dYg">
    <ruleId>CONF:8508</ruleId>
    <base_Association href="../../../models/org.openhealthtools.mdht.uml.cda.consol2.model/model/.controlled/consol-documents.uml#_azyF4D-OEeGvOdejHZ7dYg"/>
  </CDA:AssociationValidation>
  <CDA:CDATemplate xmi:id="_AoIhAOZFEeGINOJ_SD9_dA" base_Class="_6kIXMOZEEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.29">
    <ruleId>CONF:7559</ruleId>
    <ruleId>CONF:10508</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_K8t5wOZGEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_Fu374OZGEeGINOJ_SD9_dA">
    <ruleId>CONF:15580</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_RQou4OZGEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_HEttcOZGEeGINOJ_SD9_dA">
    <ruleId>CONF:15581</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_WNhfoOZGEeGINOJ_SD9_dA" base_Constraint="_H4Cn0OZGEeGINOJ_SD9_dA">
    <ruleId>CONF:15582</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_Glis0OcEEeGINOJ_SD9_dA" base_Class="_9rQowOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.70">
    <ruleId>CONF:14387</ruleId>
    <ruleId>CONF:14388</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_XS7QIucEEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_XS7QIOcEEeGINOJ_SD9_dA">
    <ruleId>CONF:14392</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Y3WQQucEEeGINOJ_SD9_dA" base_Constraint="_Y3WQQOcEEeGINOJ_SD9_dA">
    <ruleId>CONF:15585</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ZuPcAucEEeGINOJ_SD9_dA" base_Constraint="_ZuPcAOcEEeGINOJ_SD9_dA">
    <ruleId>CONF:15586</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BD7o8ucFEeGINOJ_SD9_dA" severity="INFO" base_Constraint="_BD7o8OcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14397</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Bn1KwOcGEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_1uHKwOcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14799</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_E0i-YOcGEeGINOJ_SD9_dA" base_Constraint="_5vyQcOcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14800</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_HTu9oOcGEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_7RhwAOcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14801</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_K_GcIOcGEeGINOJ_SD9_dA" base_Constraint="_9MavYOcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14802</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_M1FtYOcGEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_-ACksOcFEeGINOJ_SD9_dA">
    <ruleId>CONF:14803</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_alEUkPKwEeGFUPBL8qS7yQ" base_Class="_TkyvwPKwEeGFUPBL8qS7yQ" templateId="2.16.840.1.113883.10.20.6.2.3">
    <ruleId>CONF:9189</ruleId>
    <ruleId>CONF:10535</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2DNSDxSVEeGGzu7fmW9pXw" base_Class="_2DNRcBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.1">
    <ruleId>CONF:5252, CONF:10036</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2UnxxhSVEeGGzu7fmW9pXw" base_Class="_2UnxkRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.8">
    <ruleId>CONF:8375, CONF:10043</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2IKC4BSVEeGGzu7fmW9pXw" base_Class="_2IJb0BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.2">
    <ruleId>CONF:8450, CONF:10038</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2TeiKRSVEeGGzu7fmW9pXw" base_Class="_2TeiIRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.10">
    <ruleId>CONF:7710</ruleId>
    <ruleId>CONF:10054</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2UVdyxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdzhSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_epztEDssEeGvzMYhXuqAEA" base_Class="_R-vIoDssEeGvzMYhXuqAEA" templateId="2.16.840.1.113883.10.20.22.1.4">
    <ruleId>CONF:8375</ruleId>
    <ruleId>CONF:10040</ruleId>
  </CDA:CDATemplate>
  <CDA:ClassValidation xmi:id="_B2d0cD1kEeG3tde5scYNWA" base_Class="_-Qa60D1jEeG3tde5scYNWA">
    <ruleId>CONF:8283</ruleId>
  </CDA:ClassValidation>
  <CDA:CDATemplate xmi:id="_DJxPYD1kEeG3tde5scYNWA" base_Class="_-Qa60D1jEeG3tde5scYNWA" templateId="2.16.840.1.113883.10.20.22.1.3">
    <ruleId>CONF:9968</ruleId>
    <ruleId>CONF:10045</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_cOVMsD3rEeGYzOhiGkMbTA" base_Constraint="_OMdNYD3rEeGYzOhiGkMbTA">
    <ruleId>CONF:9986</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5kEXoD3rEeGYzOhiGkMbTA" base_Constraint="_sAyY0D3rEeGYzOhiGkMbTA"/>
  <CDA:ClassValidation xmi:id="_5i-GcD4iEeGhnL_c4sBHGg" base_Class="_xe9MsD4iEeGhnL_c4sBHGg">
    <ruleId>CONF:8483</ruleId>
    <ruleId>CONF:10048</ruleId>
  </CDA:ClassValidation>
  <CDA:CDATemplate xmi:id="_7C3L4D4iEeGhnL_c4sBHGg" base_Class="_xe9MsD4iEeGhnL_c4sBHGg" templateId="2.16.840.1.113883.10.20.22.1.7">
    <ruleId>CONF:8486</ruleId>
    <ruleId>CONF:10048</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_W-JIwD7YEeGvOdejHZ7dYg" base_Class="_LuYEsD7YEeGvOdejHZ7dYg" templateId="2.16.840.1.113883.10.20.22.1.6">
    <ruleId>CONF:8496</ruleId>
    <ruleId>CONF:10050</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_m8tBwD7ZEeGvOdejHZ7dYg"/>
  <CDA:ConstraintValidation xmi:id="_QFc28D-6EeGtTIIxHid14Q" base_Constraint="_NBpHsD-6EeGtTIIxHid14Q">
    <ruleId>CONF:9643</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Qex88D-6EeGtTIIxHid14Q" base_Constraint="_Ot-tsD-6EeGtTIIxHid14Q">
    <ruleId>CONF:10064</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_coZxcD_LEeGXieeKs7NJjA" base_Class="_UBzvED_LEeGXieeKs7NJjA" templateId="2.16.840.1.113883.10.20.22.1.9">
    <ruleId>CONF:9483</ruleId>
    <ruleId>CONF:10051</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_m2WxMD_hEeGysvimLgYv4A" base_Constraint="_iu5zoD_hEeGysvimLgYv4A">
    <ruleId>CONF:8704</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nto-gD_hEeGysvimLgYv4A" base_Constraint="_lKUtMD_hEeGysvimLgYv4A">
    <ruleId>CONF:10069</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_gWBOEEUuEeGdQ4KWAmnbhw" base_Class="_XwBooEUuEeGdQ4KWAmnbhw" templateId="2.16.840.1.113883.10.20.22.1.5">
    <ruleId>CONF:8404</ruleId>
    <ruleId>CONF:10042</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_HAihoEUwEeGdQ4KWAmnbhw" severity="WARNING" base_Constraint="__CBy8EUvEeGdQ4KWAmnbhw">
    <ruleId>CONF:8409</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_GXwi8ErZEeGJpZWiuxRVIw" severity="WARNING" base_Constraint="_CldWAErZEeGJpZWiuxRVIw">
    <ruleId>CONF:9409</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_9LMQQErZEeGJpZWiuxRVIw" base_Constraint="_5AKaQErZEeGJpZWiuxRVIw">
    <ruleId>CONF:9413</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nhJFwGjBEeGNoZ3kEkcY2A" base_Constraint="_6fCIkGjAEeGNoZ3kEkcY2A">
    <ruleId>CONF:9642</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_vMmDoGjDEeGNoZ3kEkcY2A" base_Constraint="_96mQgGjAEeGNoZ3kEkcY2A">
    <ruleId>CONF:10057</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_DEqS4GjHEeGNoZ3kEkcY2A" base_Constraint="_8h6-oGjGEeGNoZ3kEkcY2A">
    <ruleId>CONF:9501</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_DbxyYGjHEeGNoZ3kEkcY2A" base_Constraint="_90KpoGjGEeGNoZ3kEkcY2A">
    <ruleId>CONF:10028</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_EJAEwGjHEeGNoZ3kEkcY2A" base_Constraint="_AUOyoGjHEeGNoZ3kEkcY2A">
    <ruleId>CONF:10055</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5k4JQGjHEeGNoZ3kEkcY2A" base_Constraint="_43rsEGjHEeGNoZ3kEkcY2A">
    <ruleId>CONF:10055</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_LnhPUGjIEeGNoZ3kEkcY2A" base_Constraint="_KkMxIGjIEeGNoZ3kEkcY2A">
    <ruleId>CONF:10065</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_sR3YYMa8EeGp28IjMvW3Ag" base_Constraint="_jXOYoMa8EeGp28IjMvW3Ag">
    <ruleId>CONF:5250, R2.1=CONF:1198-5250</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_uWPq8Ma8EeGp28IjMvW3Ag" base_Constraint="_meGqAMa8EeGp28IjMvW3Ag">
    <ruleId>CONF:5251, R2.1=CONF:1198-5251</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VcpMwMa_EeGp28IjMvW3Ag" base_Constraint="_QNCUUMa_EeGp28IjMvW3Ag">
    <ruleId>CONF:6380, R2.1=CONF:1198-6380</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_V4fbQMa_EeGp28IjMvW3Ag" base_Constraint="_SYLWMMa_EeGp28IjMvW3Ag">
    <ruleId>CONF:6387, R2.1=CONF:1198-6387</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tg1F4PKuEeGFUPBL8qS7yQ" base_Constraint="_ZNLmgPKuEeGFUPBL8qS7yQ">
    <ruleId>CONF:9504</ruleId>
    <ruleId>R2.1=CONF:1198-9504</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_oT3JYPK8EeGFUPBL8qS7yQ" base_Constraint="_fHsUwPK8EeGFUPBL8qS7yQ">
    <ruleId>CONF:9937</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConformsTo xmi:id="_5usfIHyqEeOMoc1VIZQnRQ" base_Generalization="_XwdtgEUuEeGdQ4KWAmnbhw"/>
  <CDA:ConformsTo xmi:id="_OtsooHyrEeOMoc1VIZQnRQ" base_Generalization="_-QelMD1jEeG3tde5scYNWA"/>
  <CDA:ConformsTo xmi:id="_R_H9IHyrEeOMoc1VIZQnRQ" base_Generalization="_xfHkwD4iEeGhnL_c4sBHGg"/>
  <CDA:ConformsTo xmi:id="_T4eEYHyrEeOMoc1VIZQnRQ" base_Generalization="_Luag8D7YEeGvOdejHZ7dYg"/>
  <CDA:ConformsTo xmi:id="_V0tuoHyrEeOMoc1VIZQnRQ" base_Generalization="_UCQbAD_LEeGXieeKs7NJjA"/>
  <CDA:ConformsTo xmi:id="_XylwkHyrEeOMoc1VIZQnRQ" base_Generalization="_2T9DPxSVEeGGzu7fmW9pXw"/>
  <CDA:ConformsTo xmi:id="_HtrosJAWEeOBqfnqAvqk7Q" base_Generalization="_R_oggDssEeGvzMYhXuqAEA"/>
  <CDA:ConformsTo xmi:id="_JGLFoJAWEeOBqfnqAvqk7Q" base_Generalization="_2PQJchSVEeGGzu7fmW9pXw"/>
  <CDA:ConformsTo xmi:id="_LfhioJAWEeOBqfnqAvqk7Q" base_Generalization="_2U6FfBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_vsuMsJ5QEeOr4eM3k36wAg" base_Class="_dduXkJ5OEeOr4eM3k36wAg" templateId="2.16.840.1.113883.10.20.22.1.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-5252, CONF:1198-10036, CONF:1198-32503</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_KDKU8J5REeOr4eM3k36wAg" base_Generalization="_ddxa4J5OEeOr4eM3k36wAg"/>
  <CDA:ConformsTo xmi:id="_qS_r8J5xEeOr4eM3k36wAg" base_Generalization="_2jWfwZ5wEeOr4eM3k36wAg"/>
  <CDA:CDATemplate xmi:id="_yJ1FUJ5xEeOr4eM3k36wAg" base_Class="_2jWfwJ5wEeOr4eM3k36wAg" templateId="2.16.840.1.113883.10.20.22.1.15" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28741</ruleId>
    <ruleId>CONF:1198-28742</ruleId>
    <ruleId>CONF:1198-32877</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_vrtb0J8bEeOr4eM3k36wAg" base_Constraint="_qk9kcJ8bEeOr4eM3k36wAg">
    <ruleId>CONF:1198-31044</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_4OnRIKAEEeOQs7VC4HptuQ" base_Class="_itRPkKAEEeOQs7VC4HptuQ" templateId="2.16.840.1.113883.10.20.22.1.14" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28947</ruleId>
    <ruleId>CONF:1198-28948</ruleId>
    <ruleId>CONF:1198-32911</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_PJLvcKAFEeOQs7VC4HptuQ" base_Generalization="_itUS4KAEEeOQs7VC4HptuQ"/>
  <CDA:ConstraintValidation xmi:id="_uJVIkKAXEeOQs7VC4HptuQ" base_Constraint="_Y-s94KAXEeOQs7VC4HptuQ">
    <ruleId>CONF:1198-29102</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_9znQIKAXEeOQs7VC4HptuQ" base_Constraint="_8wCTQKAXEeOQs7VC4HptuQ">
    <ruleId>CONF:1198-29103</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_xyV3kKDQEeOPqKnBFQcY_A">
    <ruleId>CONF:1098-28241</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_3KN7MKDQEeOPqKnBFQcY_A" base_Class="_mgnrsKDQEeOPqKnBFQcY_A" templateId="2.16.840.1.113883.10.20.22.1.13" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28239, CONF:1198-28240, CONF:1198-32907</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_AakFMKDREeOPqKnBFQcY_A" base_Generalization="_mgoSwKDQEeOPqKnBFQcY_A"/>
  <CDA:ConstraintValidation xmi:id="_ifohUKWYEeOPqKnBFQcY_A" base_Constraint="_O78fQKWYEeOPqKnBFQcY_A">
    <ruleId>CONF:1198-31582</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_NoqdAKWZEeOPqKnBFQcY_A" base_Constraint="_NBehMKWZEeOPqKnBFQcY_A">
    <ruleId>CONF:1198-31583</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_wTVxcKi8EeOTwZftO6CV5g" base_Class="_OA1xkKi8EeOTwZftO6CV5g" templateId="2.16.840.1.113883.10.20.29.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28458</ruleId>
    <ruleId>CONF:1198-28459</ruleId>
    <ruleId>CONF:1198-32917</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="__XcCwKi8EeOTwZftO6CV5g" base_Generalization="_OA2_sKi8EeOTwZftO6CV5g"/>
  <CDA:PropertyValidation xmi:id="_35r2gKlmEeO4L-NdFOGFPw">
    <ruleId>CONF:1098-28479</ruleId>
  </CDA:PropertyValidation>
  <CDA:PropertyValidation xmi:id="_4P2vQKlwEeO4L-NdFOGFPw">
    <ruleId>CONF:1098-28688</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_acTmUCFmEeSt4IEYu7xgbw" base_Class="_PkP3oCFmEeSt4IEYu7xgbw" templateId="2.16.840.1.113883.10.20.22.1.4" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8375, CONF:1198-10040, CONF:1198-32502</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_m0g5ICFmEeSt4IEYu7xgbw" base_Generalization="_PkS68CFmEeSt4IEYu7xgbw"/>
  <CDA:ConstraintValidation xmi:id="_OvlKkiGUEeSt4IEYu7xgbw" severity="INFO" base_Constraint="_OvlKkCGUEeSt4IEYu7xgbw">
    <ruleId>CONF:1198-28938</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_QEknkCGUEeSt4IEYu7xgbw" base_Constraint="_QEkAgCGUEeSt4IEYu7xgbw">
    <ruleId>CONF:1198-28939</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Q1tJkCGUEeSt4IEYu7xgbw" base_Constraint="_Q1sigCGUEeSt4IEYu7xgbw">
    <ruleId>CONF:1198-28940</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_qGSfMCGjEeSt4IEYu7xgbw" base_Class="_lPMNYCGjEeSt4IEYu7xgbw" templateId="2.16.840.1.113883.10.20.22.1.2" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8450, CONF:1198-10038, CONF:1198-32516</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_tIed0CGjEeSt4IEYu7xgbw" base_Generalization="_lPMNYSGjEeSt4IEYu7xgbw"/>
  <CDA:CDATemplate xmi:id="_8pFr8CJnEeSBLYc2hU6GfA" base_Class="_4JRRsCJnEeSBLYc2hU6GfA" templateId="2.16.840.1.113883.10.20.22.1.5" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8404, CONF:1198-10042, CONF:1198-32515</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_odKIsCJoEeSBLYc2hU6GfA" base_Generalization="_4JRRsSJnEeSBLYc2hU6GfA"/>
  <CDA:CDATemplate xmi:id="_JYLpECP6EeS4d9o7u1_H3A" base_Class="_89EzQCP5EeS4d9o7u1_H3A" templateId="2.16.840.1.113883.10.20.22.1.8" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8463, CONF:1198-10044, CONF:1198-32517</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_dqd2gCP6EeS4d9o7u1_H3A" base_Generalization="_89FaUCP5EeS4d9o7u1_H3A"/>
  <CDA:ConstraintValidation xmi:id="_Spxs0CSVEeS4d9o7u1_H3A" base_Constraint="_SpwesCSVEeS4d9o7u1_H3A">
    <ruleId>CONF:1198-30569</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_LsLiMClvEeSoCqqrpX8LzQ" base_Class="_4mLhsCluEeSoCqqrpX8LzQ" templateId="2.16.840.1.113883.10.20.22.1.3" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8283, CONF:1198-10046, CONF:1198-32518</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_i-2XcClvEeSoCqqrpX8LzQ" base_Generalization="_4mY9ECluEeSoCqqrpX8LzQ"/>
  <CDA:ConstraintValidation xmi:id="_pfsBcCyUEeSoCqqrpX8LzQ" base_Constraint="_pfraYCyUEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30613</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Ye_OoCyWEeSoCqqrpX8LzQ" base_Constraint="_Ye-nkCyWEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30614</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_gkzCsCyXEeSoCqqrpX8LzQ" base_Constraint="_gkx0kCyXEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30615</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_sU_d0CyYEeSoCqqrpX8LzQ" base_Constraint="_sU-2wCyYEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30616</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_jaxNYC1fEeSoCqqrpX8LzQ" base_Class="_aH1CYC1fEeSoCqqrpX8LzQ" templateId="2.16.840.1.113883.10.20.22.1.7" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8483, CONF:1198-10048, CONF:1198-32519</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_w825YC1fEeSoCqqrpX8LzQ" base_Generalization="_aH1pcC1fEeSoCqqrpX8LzQ"/>
  <CDA:CDATemplate xmi:id="_ONtyAC4pEeSoCqqrpX8LzQ" base_Class="_JD8b0C4pEeSoCqqrpX8LzQ" templateId="2.16.840.1.113883.10.20.22.1.6" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8496, CONF:1198-10050, CONF:1198-32520</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_4H4G0C4pEeSoCqqrpX8LzQ" base_Generalization="_JD8b0S4pEeSoCqqrpX8LzQ"/>
  <CDA:ConstraintValidation xmi:id="_21FEIC7XEeSoCqqrpX8LzQ" base_Constraint="_21Cn4C7XEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30412</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_OlZ-YC7bEeSoCqqrpX8LzQ" base_Constraint="_OlYJMC7bEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30414</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_dPemIC7bEeSoCqqrpX8LzQ" base_Constraint="_dOtxIC7bEeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30415</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_vc8OUC-aEeSoCqqrpX8LzQ" base_Class="_qVEVkC-aEeSoCqqrpX8LzQ" templateId="2.16.840.1.113883.10.20.22.1.9" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7588, CONF:1198-10052, CONF:1198-32521</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Fyde0C-bEeSoCqqrpX8LzQ" base_Generalization="_qVE8oC-aEeSoCqqrpX8LzQ"/>
  <CDA:ConstraintValidation xmi:id="_bplc8C-4EeSoCqqrpX8LzQ" base_Constraint="_bpjAsC-4EeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30657</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_pgSuEC-4EeSoCqqrpX8LzQ" base_Constraint="_pgQ44C-4EeSoCqqrpX8LzQ">
    <ruleId>CONF:1198-30658</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_SxqvIC-6EeSoCqqrpX8LzQ" base_Class="_MrNuQC-6EeSoCqqrpX8LzQ" templateId="2.16.840.1.113883.10.20.22.1.10" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7710, CONF:1198-10054, CONF:1198-32522</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_u1fw0C-7EeSoCqqrpX8LzQ" base_Generalization="_MrPjcC-6EeSoCqqrpX8LzQ"/>
  <CDA:ConstraintValidation xmi:id="_N-CYkju6EeWD4MX6K2c_gA" base_Constraint="_N-CYkDu6EeWD4MX6K2c_gA">
    <ruleId>CONF:1198-9501</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2LMv0BSVEeGGzu7fmW9pXw" base_Class="_2LMIwBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.6.1">
    <ruleId>CONF:7527</ruleId>
    <ruleId>CONF:10379</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_45wiEBkaEeGs5a462vYX5Q" base_Class="_bGzYgBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.6">
    <ruleId>CONF:7800, CONF:10378</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_96YgEBnaEeGs5a462vYX5Q" base_Class="_2EaLUBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.7">
    <ruleId>CONF:7381</ruleId>
    <ruleId>CONF:10488</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2F280hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2F3j4hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EdOoRSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2Ed1sBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EecwBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EfD0BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Efq4BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:7402</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Efq4RSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7403</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EgR8BSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7404</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Eg5ABSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7405</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EhgEBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7406</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EhgERSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7407</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EiHIBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7419</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EiuMBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EjVQBSVEeGGzu7fmW9pXw" base_Constraint="_2EaLbxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:9964</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EjVQRSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2EoNwhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:7422</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_09uuIBnaEeGs5a462vYX5Q" base_Class="_2EAisBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.30">
    <ruleId>CONF:7471, CONF:10489</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2F7OQhSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7509</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F71UBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7915</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F-RkhSVEeGGzu7fmW9pXw" base_Constraint="_2F-RkBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:10085</ruleId>
    <ruleId>R2.1=CONF:1198-10085</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F-4oxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2F_fsBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2F_ftRSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2GAGwhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EBw0BSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2ECX4BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EC-8RSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EDmABSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EENEBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EE0IBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EE0IRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EFbMBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EGCQBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2EGpUBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EIegBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EJFkBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EJsoBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EKTsBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:CDATemplate xmi:id="_cAAIcBneEeGs5a462vYX5Q" base_Class="_2FGu4hSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.8">
    <ruleId>CONF:7347</ruleId>
    <ruleId>CONF:10525</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2FJyMBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_kdmRwBncEeGs5a462vYX5Q" base_Class="_2E_aIRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.9">
    <ruleId>CONF:7323</ruleId>
    <ruleId>CONF:10523</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2FvBAxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2FvoEhSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="__eoqQBwNEeGlALrr33gUJg" severity="WARNING">
    <ruleId>CONF:7805</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_52DvABnaEeGs5a462vYX5Q" base_Class="_2FRuAhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.28">
    <ruleId>CONF:7317</ruleId>
    <ruleId>CONF:10490</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2FUxUBSVEeGGzu7fmW9pXw"/>
  <CDA:TextValue xmi:id="_2FS8IBSVEeGGzu7fmW9pXw"/>
  <CDA:TextValue xmi:id="_iecvoCCOEeGq2sn1dgvG_g"/>
  <CDA:ConstraintValidation xmi:id="_0KsogCFKEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_ouJssCFKEeG9m6LRl9ardQ">
    <ruleId>CONF:7422</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mSUG8CFLEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_cf38gCFLEeG9m6LRl9ardQ">
    <ruleId>CONF:15949</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xUgzoCFMEeG9m6LRl9ardQ" base_Constraint="_nV_8ECFMEeG9m6LRl9ardQ">
    <ruleId>CONF:15951</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_UHQ8sCFUEeG9m6LRl9ardQ" base_Constraint="_8gb1UCFTEeG9m6LRl9ardQ">
    <ruleId>CONF:7446</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mLLYoCFVEeG9m6LRl9ardQ" base_Constraint="_VBabUCFVEeG9m6LRl9ardQ">
    <ruleId>CONF:7449</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kAPmECKdEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_gBlYICKdEeG9m6LRl9ardQ">
    <ruleId>CONF:15917</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5EW5ECKdEeG9m6LRl9ardQ" base_Constraint="_0eDcUCKdEeG9m6LRl9ardQ">
    <ruleId>CONF:15919</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_DpWFUCKfEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_3qPPACKeEeG9m6LRl9ardQ">
    <ruleId>CONF:7334</ruleId>
    <ruleId>R2.0=CONF:1098-7334</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ICYiICKfEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_1SPc4CKeEeG9m6LRl9ardQ">
    <ruleId>CONF:7333</ruleId>
    <ruleId>R2.0=CONF:1098-7333</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_R4ulECKzEeG9m6LRl9ardQ" severity="WARNING">
    <ruleId>CONF:9117</ruleId>
    <ruleId>CONF:9118</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_xKFLUCK3EeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_sBN0ECK3EeG9m6LRl9ardQ">
    <ruleId>CONF:15928</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_3ucQMCK3EeG9m6LRl9ardQ" base_Constraint="_0IXhYCK3EeG9m6LRl9ardQ">
    <ruleId>CONF:15930</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_gBGW4CWFEeGWfpmyutaqOA" base_Constraint="_L5MNcCWFEeGWfpmyutaqOA">
    <ruleId>CONF:7504</ruleId>
    <ruleId>R2.1=CONF:1198-7504</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_rgdFYCWhEeGWfpmyutaqOA">
    <ruleId>CONF:7421</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_lGdg0CXKEeGWfpmyutaqOA">
    <ruleId>CONF:10083</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_7ZihUCXKEeGWfpmyutaqOA">
    <ruleId>CONF:10084</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_oGz9UCXTEeGWfpmyutaqOA" severity="WARNING">
    <ruleId>CONF:7424</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BI13YCXUEeGWfpmyutaqOA" severity="WARNING">
    <ruleId>CONF:7425</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XNKqMCXUEeGWfpmyutaqOA">
    <ruleId>CONF:7426</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BSGroCXVEeGWfpmyutaqOA" severity="INFO">
    <ruleId>CONF:7431</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_r9M7ECYKEeGWfpmyutaqOA" base_Constraint="_jm2UICYKEeGWfpmyutaqOA">
    <ruleId>CONF:10375</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_LPerMCYLEeGWfpmyutaqOA" base_Constraint="_IvIIQBrcEeGo461UQq-B1g">
    <ruleId>CONF:7343</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_eqOzsCYLEeGWfpmyutaqOA"/>
  <CDA:ConstraintValidation xmi:id="_QuussCYMEeGWfpmyutaqOA" base_Constraint="_P3TE0BrcEeGo461UQq-B1g">
    <ruleId>CONF:7344</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kTFLMCYOEeGWfpmyutaqOA" severity="WARNING">
    <ruleId>CONF:9118</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="__uvHMCnAEeGHDN_aHIiN8Q" severity="WARNING">
    <ruleId>CONF:9117</ruleId>
    <ruleId>CONF:9118</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_fXgRIOJPEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_bTC9MOJPEeG3cO7ebC3QuA">
    <ruleId>CONF:15950</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_q_Ja8OJVEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_l-kdAOJVEeG3cO7ebC3QuA">
    <ruleId>CONF:15918</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_0mkLsOJWEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_wNrf4OJWEeG3cO7ebC3QuA">
    <ruleId>CONF:15929</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_ePScoLNxEeOtlapy2HWYww" base_Class="_uCiIYLNwEeOtlapy2HWYww" templateId="2.16.840.1.113883.10.20.22.4.30" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7471, CONF:1198-10489, CONF:1198-32543</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_ptgzcLNxEeOtlapy2HWYww" base_Generalization="_uCivcLNwEeOtlapy2HWYww"/>
  <CDA:CodeSystemConstraint xmi:id="_I2tmcLN6EeOtlapy2HWYww" code="CONC" displayName="Concern">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_wOhRcE6REeC5ttwajeXVXg"/>
    <ruleId>CONF:19158</ruleId>
    <ruleId>CONF:32154</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:PropertyValidation xmi:id="_PVWd0LN6EeOtlapy2HWYww">
    <ruleId>CONF:7477</ruleId>
  </CDA:PropertyValidation>
  <CDA:PropertyValidation xmi:id="_aMz6I7N7EeOtlapy2HWYww">
    <ruleId>CONF:1198-7498</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_HX1C0Lj6EeODDJAC5t5vpw" base_Class="_uVJogLj5EeODDJAC5t5vpw" templateId="2.16.840.1.113883.10.20.22.4.7" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7381</ruleId>
    <ruleId>CONF:1098-10488</ruleId>
    <ruleId>CONF:1098-32526</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_2XNlALj6EeODDJAC5t5vpw" base_Generalization="_uVNS4Lj5EeODDJAC5t5vpw"/>
  <CDA:CDATemplate xmi:id="_mgoZ8NF8EeOHUokOVP95oQ" base_Class="_mgny4NF8EeOHUokOVP95oQ" templateId="2.16.840.1.113883.10.20.24.3.90">
    <ruleId>CONF:16305</ruleId>
    <ruleId>CONF:16306</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_mgoZ8dF8EeOHUokOVP95oQ" base_Constraint="_mgny4tF8EeOHUokOVP95oQ">
    <ruleId>CONF:16334</ruleId>
    <ruleId>R2.0=CONF:1098-16334</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mgoZ8tF8EeOHUokOVP95oQ" base_Constraint="_mgny5NF8EeOHUokOVP95oQ">
    <ruleId>CONF:16338</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mgoZ89F8EeOHUokOVP95oQ" base_Constraint="_mgny5tF8EeOHUokOVP95oQ">
    <ruleId>CONF:16343</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_XSaRAPDxEeOKPKE9au0oug" base_Class="_U3yosPDxEeOKPKE9au0oug" templateId="2.16.840.1.113883.10.20.22.4.9" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7323</ruleId>
    <ruleId>CONF:1098-10523</ruleId>
    <ruleId>CONF:1098-32504</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_snq-YPDxEeOKPKE9au0oug" base_Generalization="_U3yosfDxEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_W4OqcvF1EeOmsLWmq5fnqQ" base_Constraint="_W4OqcPF1EeOmsLWmq5fnqQ">
    <ruleId>CONF:1098-7343</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_KcqFIvF2EeOmsLWmq5fnqQ" base_Constraint="_KcqFIPF2EeOmsLWmq5fnqQ">
    <ruleId>CONF:1098-7344</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_E9Cs0PJdEeO2NaSiicarcg" base_Class="_B0oKYPJdEeO2NaSiicarcg" templateId="2.16.840.1.113883.10.20.22.4.8" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7347</ruleId>
    <ruleId>CONF:1098-10525</ruleId>
    <ruleId>CONF:1098-32577</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_b1UFEPJdEeO2NaSiicarcg" base_Generalization="_B0p_kPJdEeO2NaSiicarcg"/>
  <CDA:CDATemplate xmi:id="_Ok8XMPKJEeOn7bMsPcStOw" base_Class="_K3M6IPKJEeOn7bMsPcStOw" templateId="2.16.840.1.113883.10.20.24.3.90" templateVersion="2014-06-09">
    <ruleId>CONF:1098-16305</ruleId>
    <ruleId>CONF:1098-16306</ruleId>
    <ruleId>CONF:1098-32527</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_RubQoPKJEeOn7bMsPcStOw" base_Generalization="_K3PWYPKJEeOn7bMsPcStOw"/>
  <CDA:ConstraintValidation xmi:id="_KLMTAvMpEeOrR8IF-aqVyQ" base_Constraint="_KLMTAPMpEeOrR8IF-aqVyQ">
    <ruleId>CONF:1098-16338</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MNuWAvMqEeOrR8IF-aqVyQ" severity="WARNING" base_Constraint="_MNuWAPMqEeOrR8IF-aqVyQ">
    <ruleId>CONF:1098-16343</ruleId>
    <ruleId>DSTU:710</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YbNUcvfpEeO297ryy8ptVg" base_Constraint="_YbNUcPfpEeO297ryy8ptVg">
    <ruleId>CONF:1098-7449</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_uBVvYvfpEeO297ryy8ptVg" severity="WARNING" base_Constraint="_uBVvYPfpEeO297ryy8ptVg">
    <ruleId>CONF:1098-9964</ruleId>
    <ruleId>DSTU:710</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_4dkCIPijEeOXlK95I8tUew" base_Constraint="_4djbEPijEeOXlK95I8tUew">
    <ruleId>CONF:1098-10375</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_TUYTYPrwEeO3D4OxHxUkag">
    <ruleId>CONF:7403</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_uK0X4AIjEeSVzfoPSatgpg" base_Class="_nWAcMAIjEeSVzfoPSatgpg" templateId="2.16.840.1.113883.10.20.22.2.6" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7800</ruleId>
    <ruleId>CONF:1198-10378</ruleId>
    <ruleId>CONF:1198-32544</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Bp4_sAIkEeSVzfoPSatgpg" base_Generalization="_nWC4cAIjEeSVzfoPSatgpg"/>
  <CDA:CDATemplate xmi:id="_LXPHYAInEeSr1aKUYorURA" base_Class="_EONPMAInEeSr1aKUYorURA" templateId="2.16.840.1.113883.10.20.22.2.6.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7527, CONF:1198-10379, CONF:1198-32545</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Z2m7AAInEeSr1aKUYorURA" base_Generalization="_EOQSgAInEeSr1aKUYorURA"/>
  <CDA:ConstraintValidation xmi:id="_nOs34BaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_v-bpYPDyEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_nukDsBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_GkKNYMzfEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_oFEfMBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_JDYB0MzfEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_ocfgsBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_K2vc4MzfEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_RBWPcBaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_OMO6kLkVEeODDJAC5t5vpw"/>
  <CDA:ConstraintValidation xmi:id="_RoUv4BaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_okdgoLkXEeODDJAC5t5vpw"/>
  <CDA:ConstraintValidation xmi:id="_SLSTABaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_E9i2ELkYEeODDJAC5t5vpw"/>
  <CDA:ConstraintValidation xmi:id="_Sng8ABaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_dwX2gLkYEeODDJAC5t5vpw"/>
  <CDA:ConstraintValidation xmi:id="_TG5msBaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_6bV7wKwAEeS-mulaI3YUlw"/>
  <CDA:ConstraintValidation xmi:id="_k9eKMBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_Q6hswM26EeSEZ8MJJ3ZzLg"/>
  <CDA:ConstraintValidation xmi:id="_ligw8BaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_SS-tcM26EeSEZ8MJJ3ZzLg"/>
  <CDA:ConstraintValidation xmi:id="_mFgwUBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_Tnvg8M26EeSEZ8MJJ3ZzLg"/>
  <CDA:CDATemplate xmi:id="_ikcqQLDzEeafNo3UpQoAYw" base_Class="_LspMELDzEeafNo3UpQoAYw" templateId="2.16.840.1.113883.10.20.22.4.145">
    <ruleId>CONF:1198-32918</ruleId>
    <ruleId>CONF:1198-32923</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2V7a0LsyEead0dyhUBLajQ" severity="WARNING" base_Constraint="_0cksgLsyEead0dyhUBLajQ">
    <ruleId>CONF:1098-32912</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_jNAFULs2Eead0dyhUBLajQ" severity="WARNING" base_Constraint="_gFQ4ULs2Eead0dyhUBLajQ">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:710</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2LSPZhSVEeGGzu7fmW9pXw" base_Class="_2LSPYBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.5.1" assigningAuthorityName="HITSP C83">
    <ruleId>CONF:9179</ruleId>
  </CDA:CDATemplate>
  <CDA:CodeSystemConstraint xmi:id="_2LTdgRSVEeGGzu7fmW9pXw" code="11450-4" displayName="Problem List">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
    <ruleId>CONF:9180</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:PropertyValidation xmi:id="_2LUroRSVEeGGzu7fmW9pXw">
    <ruleId>CONF:9181</ruleId>
  </CDA:PropertyValidation>
  <CDA:PropertyValidation xmi:id="_2LVSsxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:9182</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_2H7ZYBSVEeGGzu7fmW9pXw" base_Class="_2H6yUBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.3">
    <ruleId>CONF:16772, CONF:16773, CONF:1198-32509</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2IFxcBSVEeGGzu7fmW9pXw" base_Constraint="_2IFKYxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:9032</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IFxdBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IGYghSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IG_lBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IHmohSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Ezz8BSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2ExXshSVEeGGzu7fmW9pXw">
    <ruleId>CONF:9271</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_p4UDcBnbEeGs5a462vYX5Q" base_Class="_2ExXsBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.5">
    <ruleId>CONF:16756</ruleId>
    <ruleId>CONF:16757</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_8A93ABVeEeGQCvUGzi1kDQ" base_Class="_naxrkBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.5">
    <ruleId>CONF:7877</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_YpxugBUzEeGbmN_W114JUw" base_Class="_SjN_8BUzEeGbmN_W114JUw" templateId="2.16.840.1.113883.10.20.22.4.6">
    <ruleId>CONF:7359</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_GYVXcBUzEeGbmN_W114JUw" base_Class="_5Ha7ABUyEeGbmN_W114JUw" templateId="2.16.840.1.113883.10.20.22.4.4">
    <ruleId>CONF:14926, CONF:14927</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2EqqDxSVEeGGzu7fmW9pXw" base_Class="_2EqqABSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.31">
    <ruleId>CONF:7899</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_0SNWsCBCEeG938evaWkvcA" base_Constraint="_sPoAUCBCEeG938evaWkvcA">
    <ruleId>CONF:7618</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_c_rxwCBKEeG938evaWkvcA" base_Constraint="_5_4wYCAwEeGetMjKLkqR8g">
    <ruleId>CONF:15603</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_rfOvECBLEeG938evaWkvcA" severity="INFO" base_Constraint="_6nx20CAwEeGetMjKLkqR8g">
    <ruleId>CONF:15604</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_x4R70CBLEeG938evaWkvcA" severity="WARNING" base_Constraint="_vaH7gCBEEeG938evaWkvcA">
    <ruleId>CONF:15587</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YyWRMCf2EeGO5_JBy9h6BA" severity="WARNING" base_Constraint="_SxxO0Cf2EeGO5_JBy9h6BA">
    <ruleId>CONF:9033</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_gTeq4Cf3EeGO5_JBy9h6BA" base_Constraint="_TFQWECf3EeGO5_JBy9h6BA">
    <ruleId>CONF:15589</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_v1JB8Cf3EeGO5_JBy9h6BA" severity="INFO" base_Constraint="_jlZuoCf3EeGO5_JBy9h6BA">
    <ruleId>CONF:10141</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-OqsQCf3EeGO5_JBy9h6BA" base_Constraint="_1fQFECf3EeGO5_JBy9h6BA">
    <ruleId>CONF:9069, R2.1=CONF:9069</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_SheeICf4EeGO5_JBy9h6BA" base_Constraint="_QEznYCf4EeGO5_JBy9h6BA">
    <ruleId>CONF:9272</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Q1jF0Cp_EeGiFpKeZIy4Pg" severity="WARNING" base_Constraint="_NGUbACp_EeGiFpKeZIy4Pg">
    <ruleId>CONF:15593</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VCsbsCp_EeGiFpKeZIy4Pg" base_Constraint="_S6G-kCp_EeGiFpKeZIy4Pg">
    <ruleId>CONF:15595</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XZazsOJkEeG3cO7ebC3QuA" base_Constraint="_IO0RwOJkEeG3cO7ebC3QuA">
    <ruleId>CONF:15588</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_rJa-AOJlEeG3cO7ebC3QuA" severity="INFO" base_Constraint="_nck40OJlEeG3cO7ebC3QuA">
    <ruleId>CONF:16749, R2.1=CONF:1198-16749</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_w9zXcOJlEeG3cO7ebC3QuA" severity="INFO" base_Constraint="_uQVroOJlEeG3cO7ebC3QuA">
    <ruleId>CONF:16750, R2.1=CONF:1198-16750</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_FhpnQOJsEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_1RiOwOJrEeG3cO7ebC3QuA">
    <ruleId>CONF:15530</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_6vhsAOJsEeG3cO7ebC3QuA" base_Constraint="_z76qMOJsEeG3cO7ebC3QuA">
    <ruleId>CONF:15594</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_IERgMJmMEeOeSLwbllPCyw" base_Class="_GXlxYJmLEeOeSLwbllPCyw" templateId="2.16.840.1.113883.10.20.22.4.113">
    <ruleId>CONF:1098-29037</ruleId>
    <ruleId>CONF:1098-29038</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_hPn20JpnEeOK6dzbL4VoTA" base_Class="_D6Lm0JpnEeOK6dzbL4VoTA" templateId="2.16.840.1.113883.10.20.22.4.134">
    <ruleId>CONF:1098-29940</ruleId>
    <ruleId>CONF:1098-29941</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_9A8D0Jp2EeOK6dzbL4VoTA" severity="INFO">
    <ruleId>CONF:31541</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_dzjJkJ19EeORR8_YW0n_jQ" base_Class="_2umuYJ18EeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.58" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28804</ruleId>
    <ruleId>CONF:1198-28805</ruleId>
    <ruleId>CONF:1198-32862</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_JanU4OEFEeOmBMTtnrPqww" base_Generalization="_DMwEcOEFEeOmBMTtnrPqww"/>
  <CDA:CDATemplate xmi:id="_QRxZ8OEFEeOmBMTtnrPqww" base_Class="_DMvdYOEFEeOmBMTtnrPqww" templateId="2.16.840.1.113883.10.20.22.4.5" templateVersion="2014-06-09">
    <ruleId>CONF:1098-16756</ruleId>
    <ruleId>CONF:1098-16757</ruleId>
    <ruleId>CONF:1098-32558</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_1-Y8cOzbEeOnE-G4kptBiw" base_Class="_y5C8IOzbEeOnE-G4kptBiw" templateId="2.16.840.1.113883.10.20.22.4.3" templateVersion="2015-08-01">
    <ruleId>CONF:1198-16772</ruleId>
    <ruleId>CONF:1198-16773</ruleId>
    <ruleId>CONF:1198-32509</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_QaoKsOzcEeOnE-G4kptBiw" base_Generalization="_y5C8IezbEeOnE-G4kptBiw"/>
  <CDA:ConstraintValidation xmi:id="_cNUOQuzfEeOnE-G4kptBiw" base_Constraint="_cNUOQOzfEeOnE-G4kptBiw">
    <ruleId>CONF:1198-9032</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_cnoLsuzfEeOnE-G4kptBiw" severity="INFO" base_Constraint="_cnoLsOzfEeOnE-G4kptBiw">
    <ruleId>CONF:1198-9033</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_tIFIIPDCEeOKPKE9au0oug" base_Class="_prDAkPDCEeOKPKE9au0oug" templateId="2.16.840.1.113883.10.20.22.4.4" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14926, CONF:1198-14927, CONF:1198-32508</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_zgiCgPDDEeOKPKE9au0oug" base_Generalization="_prGD4PDCEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_8_sPI_DEEeOKPKE9au0oug" base_Constraint="_8_sPIPDEEeOKPKE9au0oug">
    <ruleId>CONF:1198-15603</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_9fzSk_DEEeOKPKE9au0oug" severity="INFO" base_Constraint="_9fzSkPDEEeOKPKE9au0oug">
    <ruleId>CONF:1198-15604</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_fcIjsAFkEeSJ2uHfynwxCw" base_Class="_ZgLioAFkEeSJ2uHfynwxCw" templateId="2.16.840.1.113883.10.20.22.2.5" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7877, CONF:1198-10440, CONF:1198-32511</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_EitYQAFmEeSJ2uHfynwxCw" base_Generalization="_ZgPNAAFkEeSJ2uHfynwxCw"/>
  <CDA:CDATemplate xmi:id="_z4rXsALVEeSyydFGYJajGA" base_Class="_IXrA4ALVEeSyydFGYJajGA" templateId="2.16.840.1.113883.10.20.22.2.5.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-9179, CONF:1198-10441, CONF:1198-32510</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="__-n10ALVEeSyydFGYJajGA" base_Generalization="_IXs2EALVEeSyydFGYJajGA"/>
  <CDA:ConstraintValidation xmi:id="_Ij468BaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_SPweoMm6EeSr1c1X9ACWbg"/>
  <CDA:ConstraintValidation xmi:id="_JGhG4BaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_YW_ioMm6EeSr1c1X9ACWbg"/>
  <CDA:ConstraintValidation xmi:id="_JkQy0BaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_ZYmJkMm6EeSr1c1X9ACWbg"/>
  <CDA:ConstraintValidation xmi:id="_KEhnQBaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_eMSAwPDOEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_KwbD8BaVEeWPafwaDwpzXw" severity="INFO" base_Constraint="_3n3DQPDOEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_ZOxR8BaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_RGF6oMEkEeSjB6vMjDsL5Q"/>
  <CDA:ConstraintValidation xmi:id="_ZsFgEBaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_UJBgIMEkEeSjB6vMjDsL5Q"/>
  <CDA:ConstraintValidation xmi:id="_cDQLwBaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_YgU3kMEkEeSjB6vMjDsL5Q"/>
  <CDA:CDATemplate xmi:id="_r3b7QBkaEeGs5a462vYX5Q" base_Class="_2Rwq0BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.9" assigningAuthorityName="HL7">
    <ruleId>CONF:7705</ruleId>
    <ruleId>CONF:10381</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_JcLykBkbEeGs5a462vYX5Q" base_Class="_2PWQCBSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1">
    <ruleId>CONF:7832</ruleId>
    <ruleId>CONF:10453</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_JkL0wBnbEeGs5a462vYX5Q" base_Class="_2FhloBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.64">
    <ruleId>CONF:9427</ruleId>
    <ruleId>CONF:10491</ruleId>
  </CDA:CDATemplate>
  <CDA:CodeSystemConstraint xmi:id="_2FnFMxSVEeGGzu7fmW9pXw" code="completed">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_e8ZEoCWvEd-iTYfpNb4PkQ"/>
    <ruleId>CONF-6.3.4.6.8</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:CDATemplate xmi:id="_2KK1EBSVEeGGzu7fmW9pXw" base_Class="_2KKOBhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.14" assigningAuthorityName="HL7">
    <ruleId>CONF:10389</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2KN4YhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-123</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KOfcBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-127</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KOfdBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-128</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KPGghSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-129</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KPtkxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-130</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KQUoxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-131</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KQ7sxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-132</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KRiwBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-133</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KRiwxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-134</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KSJ0hSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-135</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KSw4hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-136</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KTX8hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-137</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_g8kmkBnSEeGs5a462vYX5Q" base_Class="_2PQJcxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.20" assigningAuthorityName="HL7">
    <ruleId>CONF:10390</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2PWQBBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:CDATemplate xmi:id="_n3vB4BnSEeGs5a462vYX5Q" base_Class="_2PcWsRSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.4">
    <ruleId>CONF:10458</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_uFmSUBnSEeGs5a462vYX5Q" base_Class="_2PidQhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.43">
    <ruleId>CONF:9930, CONF:10391</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_4MwQEBUSEeG6PvUxSTZnaw" base_Class="_sHrUoBUSEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.19">
    <ruleId>CONF:7482</ruleId>
    <ruleId>CONF:10502</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_3iHhABnbEeGs5a462vYX5Q" base_Class="_2G8h9RSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.20">
    <ruleId>CONF:7393</ruleId>
    <ruleId>CONF:10503</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_LeTcQBnUEeGs5a462vYX5Q" base_Class="_2PWQFxSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.1">
    <ruleId>CONF:10468</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2LiuEBSVEeGGzu7fmW9pXw" base_Class="_2LiHABSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.32" assigningAuthorityName="HL7">
    <ruleId>CONF:7635</ruleId>
    <ruleId>CONF:10524</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2LjVIRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-474</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Lj8MBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-475</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LpbwBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-476</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LqC0BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-477</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Lqp4BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-478</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LrQ8BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-479</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_2LjVIBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-473</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_XbW-ABueEeGnMahsPjlwOw" severity="WARNING" base_Constraint="_VsoLUBueEeGnMahsPjlwOw">
    <ruleId>CONF:15577</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-oUiEB-WEeGtfPlBCjHWkw" base_Constraint="_8FmGoB-WEeGtfPlBCjHWkw">
    <ruleId>CONF:15579</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_y16OgB-XEeGtfPlBCjHWkw" severity="INFO" base_Constraint="_MtdoIB7kEeGEaLkc3UAsAg">
    <ruleId>CONF:15990</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_bC3lMB-ZEeGtfPlBCjHWkw" severity="INFO" base_Constraint="_U1PlUB-ZEeGtfPlBCjHWkw">
    <ruleId>CONF:7762</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ei-O4B-ZEeGtfPlBCjHWkw" base_Constraint="_W3fw8B-ZEeGtfPlBCjHWkw">
    <ruleId>CONF:7763</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_h8UJQB-ZEeGtfPlBCjHWkw" severity="INFO" base_Constraint="_X2UwsB-ZEeGtfPlBCjHWkw">
    <ruleId>CONF:16037</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_1EZaMCsaEeGHF88-qhhUMA" base_Class="_oI7CQCsaEeGHF88-qhhUMA" templateId="2.16.840.1.113883.10.20.22.2.13">
    <ruleId>CONF:7840</ruleId>
    <ruleId>CONF:10383</ruleId>
  </CDA:CDATemplate>
  <CDA:ClassValidation xmi:id="_SCS3cCscEeGHF88-qhhUMA" base_Class="_Nm64UCscEeGHF88-qhhUMA">
    <ruleId>CONF:7836</ruleId>
    <ruleId>CONF:10448</ruleId>
  </CDA:ClassValidation>
  <CDA:CDATemplate xmi:id="_Xl_wkCscEeGHF88-qhhUMA" base_Class="_Nm64UCscEeGHF88-qhhUMA" templateId="2.16.840.1.113883.10.20.22.2.12"/>
  <CDA:CDATemplate xmi:id="_xv0kcDV1EeGaW4kr-GbV8Q" base_Class="_eKFbUDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.42">
    <ruleId>CONF:9915</ruleId>
    <ruleId>CONF:10393</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_19h7ADV1EeGaW4kr-GbV8Q" base_Class="_hqzJADVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.21.2.3">
    <ruleId>CONF:8680</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_7ssdQDV1EeGaW4kr-GbV8Q" base_Class="_mEIgwDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.39">
    <ruleId>CONF:8160</ruleId>
    <ruleId>CONF:10403</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_-ZsPADV1EeGaW4kr-GbV8Q" base_Class="_rNJpADVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.21.2.1">
    <ruleId>CONF:7869</ruleId>
    <ruleId>CONF:10462</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_lrrAoDV2EeGaW4kr-GbV8Q" base_Class="_iy8nYDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.21.2.2">
    <ruleId>CONF:7873</ruleId>
    <ruleId>CONF:10470</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_aByU4DszEeGvzMYhXuqAEA" base_Class="_W8pI4DszEeGvzMYhXuqAEA" templateId="2.16.840.1.113883.10.20.22.2.8">
    <ruleId>CONF:7711</ruleId>
    <ruleId>CONF:10382</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="__hRrIEFHEeGorO80f-Cppg" base_Class="_5K6mAEFHEeGorO80f-Cppg" templateId="2.16.840.1.113883.10.20.22.4.34">
    <ruleId>CONF:16747, CONF:16748</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_WS1aoFjyEeGRqYkwoeymcA" base_Class="_4qKukEE1EeGdmoWy_aLP0Q" templateId="2.16.840.1.113883.10.20.22.2.45">
    <ruleId>CONF:10112</ruleId>
    <ruleId>CONF:10402</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_9hDO0OMkEeGfv4R-kzpM0g" severity="WARNING" base_Constraint="_1sHS4OMkEeGfv4R-kzpM0g">
    <ruleId>CONF:15578</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_qO6HIOZCEeGINOJ_SD9_dA" base_Constraint="_kCuRsOZCEeGINOJ_SD9_dA">
    <ruleId>CONF:15967</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tBb5IOZCEeGINOJ_SD9_dA" base_Constraint="_mmOwQOZCEeGINOJ_SD9_dA">
    <ruleId>CONF:15968</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xXWJcOZCEeGINOJ_SD9_dA" base_Constraint="_npxQ4OZCEeGINOJ_SD9_dA">
    <ruleId>CONF:15969</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_GoiwwOb0EeGINOJ_SD9_dA" base_Class="_zBlUUOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.66">
    <ruleId>CONF:14361</ruleId>
    <ruleId>CONF:14362</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_flYBwOb0EeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_flXasOb0EeGINOJ_SD9_dA">
    <ruleId>CONF:14747</ruleId>
    <ruleId>CONF:14748</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_L9KTwObuEeGINOJ_SD9_dA" base_Class="_viRU0OZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.67">
    <ruleId>CONF:13889</ruleId>
    <ruleId>CONF:13890</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_j2XAsubyEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_j2XAsObyEeGINOJ_SD9_dA">
    <ruleId>CONF:13927</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_krU50ObyEeGINOJ_SD9_dA" base_Constraint="_krLI0ObyEeGINOJ_SD9_dA">
    <ruleId>CONF:13928</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_pRJ1cubyEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_pRJ1cObyEeGINOJ_SD9_dA">
    <ruleId>CONF:14234</ruleId>
    <ruleId>R2.0=CONF:1098-14234</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_4ZerAOboEeGINOJ_SD9_dA" base_Class="_rVl5AOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.68">
    <ruleId>CONF:14312</ruleId>
    <ruleId>CONF:14313</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_4AP2MubpEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_4AP2MObpEeGINOJ_SD9_dA">
    <ruleId>CONF:15552</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_42ZbEubpEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_42ZbEObpEeGINOJ_SD9_dA">
    <ruleId>CONF:15553</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iBSEgubpEeGINOJ_SD9_dA" base_Constraint="_iBSEgObpEeGINOJ_SD9_dA">
    <ruleId>CONF:15554</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_i8gWo-bpEeGINOJ_SD9_dA" base_Constraint="_i8gWoObpEeGINOJ_SD9_dA">
    <ruleId>CONF:14288</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_j7l1E-bpEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_j7l1EObpEeGINOJ_SD9_dA">
    <ruleId>CONF:14289</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_q-X7UubpEeGINOJ_SD9_dA" severity="INFO" base_Constraint="_q-X7UObpEeGINOJ_SD9_dA">
    <ruleId>CONF:14292</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_if39EPKyEeGFUPBL8qS7yQ" base_Class="_XIE-YPKyEeGFUPBL8qS7yQ" templateId="2.16.840.1.113883.10.20.6.2.4">
    <ruleId>CONF:9194</ruleId>
    <ruleId>CONF:10536</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_OcVjUIkWEeOJGtGyq_dBbA" base_Class="_u_keoIkOEeOJGtGyq_dBbA" templateId="2.16.840.1.113883.10.20.22.4.122">
    <ruleId>CONF:1098-31487</ruleId>
    <ruleId>CONF:1098-31488</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_GTZIUI0eEeOB0eBUISUB4Q" base_Class="_RbbCII0dEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.135">
    <ruleId>CONF:1098-31022</ruleId>
    <ruleId>CONF:1098-31023</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_wNdFgJBKEeOZX935IVJfOg" base_Class="_QcUL8JBGEeOZX935IVJfOg" templateId="2.16.840.1.113883.10.20.22.4.115">
    <ruleId>CONF:1098-32748</ruleId>
    <ruleId>CONF:1098-32750</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ORkBsJm0EeOLJeQez13EkQ" base_Class="_nC0xUJmzEeOLJeQez13EkQ" templateId="2.16.840.1.113883.10.20.22.4.128">
    <ruleId>CONF:1098-28190</ruleId>
    <ruleId>CONF:1098-28457</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_tzRJIJpdEeOK6dzbL4VoTA" base_Class="_KTrEAJpdEeOK6dzbL4VoTA" templateId="2.16.840.1.113883.10.20.22.4.118">
    <ruleId>CONF:1098-31502</ruleId>
    <ruleId>CONF:1098-31503</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_Na0LoKrmEeOxqJAXCMXUYg" base_Class="_7jqj4KrlEeOxqJAXCMXUYg" templateId="2.16.840.1.113883.10.20.22.4.119">
    <ruleId>CONF:1098-32017</ruleId>
    <ruleId>CONF:1098-32018</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_BcRmkMzTEeO93sHu8pHB2g" base_Class="_3WqogMzSEeO93sHu8pHB2g" templateId="2.16.840.1.113883.10.20.22.4.67" templateVersion="2014-06-09">
    <ruleId>CONF:1098-13889</ruleId>
    <ruleId>CONF:1098-13890</ruleId>
    <ruleId>CONF:1098-32568</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_QrmQcMzTEeO93sHu8pHB2g" base_Generalization="_3WqogczSEeO93sHu8pHB2g"/>
  <CDA:PropertyValidation xmi:id="_3YPq88zUEeO93sHu8pHB2g">
    <ruleId>CONF:13930</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_4XOfoOD0EeOmBMTtnrPqww" base_Class="_yU2tgOD0EeOmBMTtnrPqww" templateId="2.16.840.1.113883.10.20.22.4.66" templateVersion="2014-06-09">
    <ruleId>CONF:1098-14361</ruleId>
    <ruleId>CONF:1098-14362</ruleId>
    <ruleId>CONF:1098-32569</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_GPOxQOD1EeOmBMTtnrPqww" base_Generalization="_yVKPgOD0EeOmBMTtnrPqww"/>
  <CDA:ConstraintValidation xmi:id="_2w6TAOD9EeOmBMTtnrPqww" severity="WARNING" base_Constraint="_s7VVAOD9EeOmBMTtnrPqww">
    <ruleId>CONF:1098-31417</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_O0QywOEIEeOmBMTtnrPqww" base_Class="_GM6icOEIEeOmBMTtnrPqww" templateId="2.16.840.1.113883.10.20.22.4.34" templateVersion="2015-08-01">
    <ruleId>CONF:1198-16747</ruleId>
    <ruleId>CONF:1198-16748</ruleId>
    <ruleId>CONF:1198-32535</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_aOvSAOEIEeOmBMTtnrPqww" base_Generalization="_GM6iceEIEeOmBMTtnrPqww"/>
  <CDA:CodeSystemConstraint xmi:id="_JV7sYOEJEeOmBMTtnrPqww" code="11535-2" displayName="Hospital discharge diagnosis">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
    <ruleId>CONF:19148</ruleId>
    <ruleId>CONF:32163</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:PropertyValidation xmi:id="_NGDIAOEJEeOmBMTtnrPqww">
    <ruleId>CONF:19147</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_VcCuQOHoEeO04sHNODkHmQ" base_Class="_PrEOIOHoEeO04sHNODkHmQ" templateId="2.16.840.1.113883.10.20.22.4.19" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7482</ruleId>
    <ruleId>CONF:1098-10502</ruleId>
    <ruleId>CONF:1098-32570</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_rCn1IOHoEeO04sHNODkHmQ" base_Generalization="_PrE1MOHoEeO04sHNODkHmQ"/>
  <CDA:CDATemplate xmi:id="_sESL0OH7EeO04sHNODkHmQ" base_Class="_D62NwOH7EeO04sHNODkHmQ" templateId="2.16.840.1.113883.10.20.22.4.20" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7393</ruleId>
    <ruleId>CONF:1098-10503</ruleId>
    <ruleId>CONF:1098-32598</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_-rcUMOH7EeO04sHNODkHmQ" base_Generalization="_D62NweH7EeO04sHNODkHmQ"/>
  <CDA:CDATemplate xmi:id="_u01UoPvVEeOvZJBdQKQrqQ" base_Class="_q_8twPvVEeOvZJBdQKQrqQ" templateId="2.16.840.1.113883.10.20.22.2.9" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7705</ruleId>
    <ruleId>CONF:1098-10381</ruleId>
    <ruleId>CONF:1098-32583</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="__ToCUPvVEeOvZJBdQKQrqQ" base_Generalization="_q__KAPvVEeOvZJBdQKQrqQ"/>
  <CDA:CDATemplate xmi:id="___nqwPyHEeOozpLKXSm5NA" base_Class="_8rMFkPyHEeOozpLKXSm5NA" templateId="2.16.840.1.113883.10.20.22.2.14" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7920</ruleId>
    <ruleId>CONF:1098-10389</ruleId>
    <ruleId>CONF:1098-32567</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="__ZwdQPyKEeOozpLKXSm5NA" base_Generalization="_8rQXAPyHEeOozpLKXSm5NA"/>
  <CDA:CDATemplate xmi:id="_xSfwMPyhEeOC19UEcu7MOw" base_Class="_sZlggPyhEeOC19UEcu7MOw" templateId="2.16.840.1.113883.10.20.22.2.20" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7828, CONF:1198-10390, CONF:1198-32536</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_EBY4QPyiEeOC19UEcu7MOw" base_Generalization="_sZn8wPyhEeOC19UEcu7MOw"/>
  <CDA:CDATemplate xmi:id="_h9zhUPylEeOc0tW1-DpN-Q" base_Class="_ctJgAPylEeOc0tW1-DpN-Q" templateId="2.16.840.1.113883.10.20.22.2.43" templateVersion="2015-08-01">
    <ruleId>CONF:1198-9930, CONF:1198-10391, CONF:1198-32563</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_w8AmAPylEeOc0tW1-DpN-Q" base_Generalization="_ctL8QPylEeOc0tW1-DpN-Q"/>
  <CDA:CDATemplate xmi:id="_ql7GEP1HEeOVx4YMwgfjlA" base_Class="_k8L2YP1HEeOVx4YMwgfjlA" templateId="2.16.840.1.113883.10.20.22.2.45" templateVersion="2014-06-09">
    <ruleId>CONF:1098-10112</ruleId>
    <ruleId>CONF:1098-31384</ruleId>
    <ruleId>CONF:1098-32599</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_7CoJEP1HEeOVx4YMwgfjlA" base_Generalization="_k8O5sP1HEeOVx4YMwgfjlA"/>
  <CDA:CDATemplate xmi:id="_dPAxgP1WEeOW-qBXb0kbTA" base_Class="_YCS1AP1WEeOW-qBXb0kbTA" templateId="2.16.840.1.113883.10.20.21.2.3" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8680, CONF:1198-10461, CONF:1198-32559</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_q-eLIP1WEeOW-qBXb0kbTA" base_Generalization="_YCVRQP1WEeOW-qBXb0kbTA"/>
  <CDA:CDATemplate xmi:id="_j0EfEAB5EeS20Pddu0dxVw" base_Class="_Ya0H0AB5EeS20Pddu0dxVw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.1" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7844</ruleId>
    <ruleId>CONF:1098-10468</ruleId>
    <ruleId>CONF:1098-32571</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_ukWKwAB5EeS20Pddu0dxVw" base_Generalization="_Ya3LIAB5EeS20Pddu0dxVw"/>
  <CDA:ConstraintValidation xmi:id="_1sdhUP5_EeSoDZvueq4eYw" base_Constraint="_0b9iwP5_EeSoDZvueq4eYw">
    <ruleId>CONF:1098-32380</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_CMjS8A7VEeWbLdDULBrUww" severity="INFO" base_Constraint="_2gS-oM7qEeO6qNoyVDglCA"/>
  <CDA:ConstraintValidation xmi:id="_Cl3x4A7VEeWbLdDULBrUww" severity="INFO" base_Constraint="_fU5ZkM7rEeO6qNoyVDglCA"/>
  <CDA:ConstraintValidation xmi:id="_1XiI4BaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_5ehhMOHsEeO04sHNODkHmQ"/>
  <CDA:ConstraintValidation xmi:id="_16zOABaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_53PjMOHsEeO04sHNODkHmQ"/>
  <CDA:ConstraintValidation xmi:id="_2b6-EBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_6PRosOHsEeO04sHNODkHmQ"/>
  <CDA:CDATemplate xmi:id="_2NIphhSVEeGGzu7fmW9pXw" base_Class="_2NIpgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.1.1">
    <ruleId>CONF:7568</ruleId>
    <ruleId>CONF:10433</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NJ3wBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2NJ3xBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:CDATemplate xmi:id="_-vKWgBnbEeGs5a462vYX5Q" base_Class="_2GHbgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.16">
    <ruleId>CONF:7499</ruleId>
    <ruleId>CONF:10504</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2HulEBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HvMIhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HvzMxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HwaQhSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2HxBUBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HxBUxSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2HxoYhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HyPcxSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2GdZwBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_HlZ-cBncEeGs5a462vYX5Q" base_Class="_DpoGkBUUEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.18">
    <ruleId>CONF:7453</ruleId>
    <ruleId>CONF:10505</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_LKvGYBncEeGs5a462vYX5Q" base_Class="_2T9DQBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.23">
    <ruleId>CONF:7409</ruleId>
    <ruleId>CONF:10506</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2Poj_xSVEeGGzu7fmW9pXw" base_Class="_2Poj_BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.38">
    <ruleId>CONF:8152</ruleId>
    <ruleId>CONF:10405</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_nvOcIBVeEeGQCvUGzi1kDQ" base_Class="_iAoXEBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.1">
    <ruleId>CONF:7791</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2KEucxSVEeGGzu7fmW9pXw" base_Class="_2KEucBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.23">
    <ruleId>CONF:7944.CONF:10404</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2HIvYRSVEeGGzu7fmW9pXw" base_Class="_2HIvMBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.50">
    <ruleId>CONF:8747</ruleId>
    <ruleId>CONF:10509</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2G3CYBSVEeGGzu7fmW9pXw" base_Class="_2G2bUxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.37">
    <ruleId>CONF:7901</ruleId>
    <ruleId>CONF:10522</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_gOTA8BUUEeG6PvUxSTZnaw" base_Class="_chEhQBUUEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.25">
    <ruleId>CONF:7372</ruleId>
    <ruleId>CONF:10517</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_a3-5ABUTEeG6PvUxSTZnaw" base_Class="_VBXq8BUTEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.24">
    <ruleId>CONF:7495</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_IYW3oBnXEeGs5a462vYX5Q" base_Class="_2Poj5BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.44">
    <ruleId>CONF:10098</ruleId>
    <ruleId>CONF:10392</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_HhcpcBq2EeGo461UQq-B1g" base_Constraint="_G1AaMBq2EeGo461UQq-B1g">
    <ruleId>CONF:7493</ruleId>
    <ruleId>CONF:10086</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Sw0r8Bq2EeGo461UQq-B1g"/>
  <CDA:ConstraintValidation xmi:id="_W3bU8Bq2EeGo461UQq-B1g" severity="INFO" base_Constraint="_WgMgsBq2EeGo461UQq-B1g">
    <ruleId>CONF:7494</ruleId>
    <ruleId>CONF:10087</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_uFl-gBrTEeGo461UQq-B1g" base_Class="_j3aTQBrTEeGo461UQq-B1g" templateId="2.16.840.1.113883.10.20.22.4.17">
    <ruleId>CONF:7429</ruleId>
    <ruleId>CONF:10507</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_reiTMB7lEeGEaLkc3UAsAg" base_Constraint="_iZPioB7lEeGEaLkc3UAsAg">
    <ruleId>CONF:7445</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VmSo8B-zEeGKirKJsFylGA" severity="WARNING" base_Constraint="_K_ZiwB-zEeGKirKJsFylGA">
    <ruleId>CONF:7529</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_RCX1QEFGEeGorO80f-Cppg" base_Class="_LNP08EFGEeGorO80f-Cppg" templateId="2.16.840.1.113883.10.20.22.4.36">
    <ruleId>CONF:16758</ruleId>
    <ruleId>CONF:16759</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_rnBu8EFiEeG2TLeVPbv7pg" severity="WARNING" base_Constraint="_nSTKYEFiEeG2TLeVPbv7pg">
    <ruleId>CONF:15977</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_w4S0QEFiEeG2TLeVPbv7pg" base_Constraint="_ukkeIEFiEeG2TLeVPbv7pg">
    <ruleId>CONF:15979</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tP3_QEFmEeG2TLeVPbv7pg" base_Constraint="_6ODpwEFiEeG2TLeVPbv7pg">
    <ruleId>CONF:7512</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_t6RnIEFmEeG2TLeVPbv7pg" base_Constraint="_4CqJMEFiEeG2TLeVPbv7pg">
    <ruleId>CONF:7511</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Wrf3gEIjEeG4bZAl2IGXmQ" base_Constraint="_5BnBgEIiEeG4bZAl2IGXmQ">
    <ruleId>CONF:7508</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_bBg1gEIjEeG4bZAl2IGXmQ" severity="WARNING" base_Constraint="_0bGJYEIiEeG4bZAl2IGXmQ">
    <ruleId>CONF:7513</ruleId>
    <ruleId>CONF:9105</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_do-nAEIjEeG4bZAl2IGXmQ" base_Constraint="_Ldxa0EIjEeG4bZAl2IGXmQ">
    <ruleId>CONF:9106</ruleId>
    <ruleId>R2.0=CONF:1098-9106</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s5m7oEInEeG4bZAl2IGXmQ" severity="WARNING" base_Constraint="_cWfuoEInEeG4bZAl2IGXmQ">
    <ruleId>CONF:7526</ruleId>
    <ruleId>R2.0=CONF:1098-7526</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_W-JCgEIqEeG4bZAl2IGXmQ" base_Constraint="_1smJUEIpEeG4bZAl2IGXmQ">
    <ruleId>CONF:7524</ruleId>
    <ruleId>R2.0=CONF:1098-7524</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XhPvkEIqEeG4bZAl2IGXmQ" base_Constraint="_L0emcEIqEeG4bZAl2IGXmQ">
    <ruleId>CONF:7542</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Dl9JoEa7EeG7gbamepbPeA" severity="WARNING" base_Constraint="_uejSEEa6EeG7gbamepbPeA">
    <ruleId>CONF:16867</ruleId>
    <ruleId>R2.0=CONF:1098-16867</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_moUDsEa8EeG75M7WNoZ4Xg" base_Constraint="_fELj4Ea8EeG75M7WNoZ4Xg">
    <ruleId>CONF:8754</ruleId>
    <ruleId>R2.0=CONF:1098-8754</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_reXCEOL7EeGfv4R-kzpM0g" severity="WARNING" base_Constraint="_ovaIgOL7EeGfv4R-kzpM0g">
    <ruleId>CONF:15978</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_zaRJ4OMVEeGfv4R-kzpM0g" base_Constraint="_vah94OMVEeGfv4R-kzpM0g">
    <ruleId>CONF:15144</ruleId>
    <ruleId>R2.0=CONF:1098-15144</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_M6f7sDsiEeKK96MV1iYPgQ" base_Constraint="_M6fUoDsiEeKK96MV1iYPgQ">
    <ruleId>CONF:15607</ruleId>
    <ruleId>CONF:15608</ruleId>
    <ruleId>CONF:9333</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tJOF8DsiEeKK96MV1iYPgQ" base_Constraint="_tJNe4DsiEeKK96MV1iYPgQ">
    <ruleId>CONF:16870</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-UVZMAXoEeOc4J5a9hlM-Q" base_Constraint="_0EuxoAXoEeOc4J5a9hlM-Q">
    <ruleId>CONF:7525</ruleId>
    <ruleId>R2.0=CONF:1098-7525</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_NDs3IIqwEeOoMZgUoTghIg" base_Class="_MbKs8IqvEeOoMZgUoTghIg" templateId="2.16.840.1.113883.10.20.22.4.123">
    <ruleId>CONF:1098-28657</ruleId>
    <ruleId>CONF:1098-28658</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_hNuQEK-1EeO8duI_7f6kZw" base_Class="_ZQpEwK-1EeO8duI_7f6kZw" templateId="2.16.840.1.113883.10.20.22.4.36" templateVersion="2014-06-09">
    <ruleId>CONF:1098-16758</ruleId>
    <ruleId>CONF:1098-16759</ruleId>
    <ruleId>CONF:1098-32524</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_yc9jQK-1EeO8duI_7f6kZw" base_Generalization="_ZQxAkK-1EeO8duI_7f6kZw"/>
  <CDA:ConstraintValidation xmi:id="_OTQ4wL59EeO8lb9TgnhnOQ" base_Constraint="_MI3dwL59EeO8lb9TgnhnOQ">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>R2.0=CONF:1098-32775</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_iMX2AOLAEeOc7-TVP7Wi6w" base_Class="_WnSCMOLAEeOc7-TVP7Wi6w" templateId="2.16.840.1.113883.10.20.22.4.16" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7499</ruleId>
    <ruleId>CONF:1098-10504</ruleId>
    <ruleId>CONF:1098-32498</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_86348OLAEeOc7-TVP7Wi6w" base_Generalization="_WnVFgOLAEeOc7-TVP7Wi6w"/>
  <CDA:ConstraintValidation xmi:id="_dSgcsuLDEeOc7-TVP7Wi6w" base_Constraint="_dSgcsOLDEeOc7-TVP7Wi6w">
    <ruleId>CONF:1098-7542</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_S4xW0uLFEeOc7-TVP7Wi6w" severity="WARNING" base_Constraint="_S4xW0OLFEeOc7-TVP7Wi6w">
    <ruleId>CONF:1098-30800</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_dHUjkOLHEeOc7-TVP7Wi6w" base_Constraint="_NeWDkOLHEeOc7-TVP7Wi6w">
    <ruleId>CONF:1098-31517</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XNP8YOLIEeOc7-TVP7Wi6w" severity="INFO" base_Constraint="_J94YEOLIEeOc7-TVP7Wi6w">
    <ruleId>CONF:1098-31518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_8MFQIOW8EeOkFcFJ9uzEEw" severity="INFO" base_Constraint="_8MCz4OW8EeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-32777</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_0pCDgOW-EeOkFcFJ9uzEEw" severity="WARNING" base_Constraint="_0pBccOW-EeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-7513</ruleId>
    <ruleId>CONF:1098-28499</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_GsKcUuXAEeOkFcFJ9uzEEw" message="" base_Constraint="_GsKcUOXAEeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-7508</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_vPdTwOXfEeOkFcFJ9uzEEw" base_Class="_qH-ckOXfEeOkFcFJ9uzEEw" templateId="2.16.840.1.113883.10.20.22.4.18" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7453</ruleId>
    <ruleId>CONF:1098-10505</ruleId>
    <ruleId>CONF:1098-32580</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_11pvMOXgEeOkFcFJ9uzEEw" base_Generalization="_qH_DoOXfEeOkFcFJ9uzEEw"/>
  <CDA:ConstraintValidation xmi:id="_AUfTUOXmEeOkFcFJ9uzEEw" severity="INFO" base_Constraint="_oloRUOXlEeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-7459</ruleId>
    <ruleId>CONF:1098-15607</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_KGkRYOXmEeOkFcFJ9uzEEw" severity="INFO" base_Constraint="_joXtIOXlEeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-9331</ruleId>
    <ruleId>CONF:1098-31696</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VWi7YuXnEeOkFcFJ9uzEEw" base_Constraint="_VWi7YOXnEeOkFcFJ9uzEEw">
    <ruleId>CONF:1098-9333</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConformsTo xmi:id="_MhZi0OXrEeOkFcFJ9uzEEw" base_Generalization="_H0AmoOXrEeOkFcFJ9uzEEw"/>
  <CDA:CDATemplate xmi:id="_NVU6IOXrEeOkFcFJ9uzEEw" base_Class="_Hz__kOXrEeOkFcFJ9uzEEw" templateId="2.16.840.1.113883.10.20.22.4.23" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7409</ruleId>
    <ruleId>CONF:1098-10506</ruleId>
    <ruleId>CONF:1098-32579</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_MPdmYOZ8EeOmzetP5oaH3A" base_Class="_InVpIOZ8EeOmzetP5oaH3A" templateId="2.16.840.1.113883.10.20.22.4.17" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7429</ruleId>
    <ruleId>CONF:1098-10507</ruleId>
    <ruleId>CONF:1098-32578</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_YbSDAOZ8EeOmzetP5oaH3A" base_Generalization="_InVpIeZ8EeOmzetP5oaH3A"/>
  <CDA:ConstraintValidation xmi:id="_sPjCQuZ9EeOmzetP5oaH3A" base_Constraint="_sPjCQOZ9EeOmzetP5oaH3A">
    <ruleId>CONF:1098-16870</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_acHK8OZ_EeOmzetP5oaH3A" severity="INFO" base_Constraint="_acGj4OZ_EeOmzetP5oaH3A">
    <ruleId>CONF:1098-7439</ruleId>
    <ruleId>CONF:1098-16093</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_brcr4uZ_EeOmzetP5oaH3A" severity="INFO" base_Constraint="_brcr4OZ_EeOmzetP5oaH3A">
    <ruleId>CONF:1098-9334</ruleId>
    <ruleId>CONF:1098-31695</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_PA4BQOaAEeOmzetP5oaH3A" base_Constraint="_PA3aMOaAEeOmzetP5oaH3A">
    <ruleId>CONF:1098-7445</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_nMp94OaCEeOmzetP5oaH3A" base_Class="_k_C20OaCEeOmzetP5oaH3A" templateId="2.16.840.1.113883.10.20.22.4.50" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8747</ruleId>
    <ruleId>CONF:1098-10509</ruleId>
    <ruleId>CONF:1098-32514</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_OdUg4OaDEeOmzetP5oaH3A" base_Generalization="_k_C20eaCEeOmzetP5oaH3A"/>
  <CDA:ConstraintValidation xmi:id="_RC5KEOaFEeOmzetP5oaH3A" base_Constraint="_1qtQ8OaEEeOmzetP5oaH3A">
    <ruleId>CONF:1098-30279</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_dxv-UPyqEeOlg_Cnc5bODw" base_Class="_ZLY3MPyqEeOlg_Cnc5bODw" templateId="2.16.840.1.113883.10.20.22.2.44" templateVersion="2015-08-01">
    <ruleId>CONF:1198-10098, CONF:1198-10392, CONF:1198-32560</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_ydsB4PyqEeOlg_Cnc5bODw" base_Generalization="_ZLbTcPyqEeOlg_Cnc5bODw"/>
  <CDA:CDATemplate xmi:id="_-QVEEP1bEeO5Hq-yrsJSmg" base_Class="_5OKxwP1bEeO5Hq-yrsJSmg" templateId="2.16.840.1.113883.10.20.22.2.23" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7944.CONF:1098-10404</ruleId>
    <ruleId>CONF:1098-32523</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_NUwskP1cEeO5Hq-yrsJSmg" base_Generalization="_5OOcIP1bEeO5Hq-yrsJSmg"/>
  <CDA:CDATemplate xmi:id="_XzcKgP4jEeOwFalSp0fRiw" base_Class="_F37nMP4jEeOwFalSp0fRiw" templateId="2.16.840.1.113883.10.20.22.2.38" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8152</ruleId>
    <ruleId>CONF:1098-10405</ruleId>
    <ruleId>CONF:1098-32525</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_elEPUP4jEeOwFalSp0fRiw" base_Generalization="_F3_RkP4jEeOwFalSp0fRiw"/>
  <CDA:CDATemplate xmi:id="_N00TQAFaEeS0nNJt6oyOyQ" base_Class="_JUvaUAFaEeS0nNJt6oyOyQ" templateId="2.16.840.1.113883.10.20.22.2.1" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7791</ruleId>
    <ruleId>CONF:1098-10432</ruleId>
    <ruleId>CONF:1098-32500</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_eOKgQAFaEeS0nNJt6oyOyQ" base_Generalization="_JUxPgAFaEeS0nNJt6oyOyQ"/>
  <CDA:CDATemplate xmi:id="_V7Gi8ALQEeS0YMHMf4rRtQ" base_Class="_P2mp4ALQEeS0YMHMf4rRtQ" templateId="2.16.840.1.113883.10.20.22.2.1.1" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7568</ruleId>
    <ruleId>CONF:1098-10433</ruleId>
    <ruleId>CONF:1098-32499</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_e1H3oALQEeS0YMHMf4rRtQ" base_Generalization="_P2ofEALQEeS0YMHMf4rRtQ"/>
  <CDA:CDATemplate xmi:id="_jmRN4DhDEeS1WeMhbm6GZw" base_Class="_XA96QDhDEeS1WeMhbm6GZw" templateId="2.16.840.1.113883.10.20.22.4.25" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7372</ruleId>
    <ruleId>CONF:1098-10517</ruleId>
    <ruleId>CONF:1098-32603</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_7OGa0DhDEeS1WeMhbm6GZw" base_Generalization="_XA-hUDhDEeS1WeMhbm6GZw"/>
  <CDA:ConstraintValidation xmi:id="_SVIhssLGEeSqg-Exmsy2kg" severity="WARNING" base_Constraint="_SVIhsMLGEeSqg-Exmsy2kg">
    <ruleId>CONF:1098-32776</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_D8G0YMLLEeSqg-Exmsy2kg" base_Constraint="_D8GNUMLLEeSqg-Exmsy2kg">
    <ruleId>CONF:1098-32890</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_RxCyoBXHEeWCiY8iFDNBKA" severity="INFO" base_Constraint="_GHMuAAFfEeS0nNJt6oyOyQ"/>
  <CDA:ConstraintValidation xmi:id="_MvE-cBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_HmDJkMNaEeSRNKqIviDQAg"/>
  <CDA:ConstraintValidation xmi:id="_NyKMEBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_JAnDEMNaEeSRNKqIviDQAg"/>
  <CDA:ConstraintValidation xmi:id="_OgZLEBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_LCiekMNaEeSRNKqIviDQAg"/>
  <CDA:CDATemplate xmi:id="_NonzMDr_EeWD4MX6K2c_gA" base_Class="_kowjcDr-EeWD4MX6K2c_gA" templateId="2.16.840.1.113883.10.20.22.4.147">
    <ruleId>CONF:1198-32753</ruleId>
    <ruleId>CONF:1198-32772</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_odzwIDsDEeWD4MX6K2c_gA" base_Constraint="_odzJEDsDEeWD4MX6K2c_gA">
    <ruleId>CONF:1198-32774</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2SC-shSVEeGGzu7fmW9pXw" base_Class="_2SC-sBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.47" assigningAuthorityName="HL7">
    <ruleId>CONF:8623</ruleId>
    <ruleId>CONF:10495</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2SJFYxSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SJFahSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SJFbRSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SPL_xSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_hWyHQBnbEeGs5a462vYX5Q" base_Class="_2IpyIxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.46" assigningAuthorityName="HL7">
    <ruleId>CONF:10496</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2IyVAhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Iy8EBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IzjIhSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2I0KMxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2I0xQhSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2I1YUBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2I4bpxSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_kKyf8BnbEeGs5a462vYX5Q" base_Class="_2IbIoBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.45" assigningAuthorityName="HL7">
    <ruleId>CONF:10497</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2I634xSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2I_wZBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2JAXcxSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2JA-gxSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2JBlkxSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2JCMohSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2JCzshSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IcWwBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IeL8BSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IezARSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IgBIBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IhPQBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2Ih2UBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2Ih2URSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IidYBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IjEcBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IjrgBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IkSkBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:PropertyValidation xmi:id="_2Imu0xSVEeGGzu7fmW9pXw"/>
  <CDA:CodeSystemConstraint xmi:id="_2Imu1BSVEeGGzu7fmW9pXw">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_ywdZ4Gg7Ed-ilOLYnIx0jA"/>
  </CDA:CodeSystemConstraint>
  <CDA:CDATemplate xmi:id="_2IWQLRSVEeGGzu7fmW9pXw" base_Class="_2IWQIxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.15" assigningAuthorityName="HL7">
    <ruleId>CONF:10388</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2HqIYCHiEeGFLIX-2_sWzA" base_Constraint="_web2ECHiEeGFLIX-2_sWzA">
    <ruleId>CONF:8677, R2.1=CONF:1198-8677</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_e0um0IV5EeSRBMdZotACQg" base_Class="_YvV88IV5EeSRBMdZotACQg" templateId="2.16.840.1.113883.10.20.22.4.46" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8599, CONF:1198-10496, CONF:1198-32605</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_chN2oIV6EeSRBMdZotACQg" base_Generalization="_YvZAQIV5EeSRBMdZotACQg"/>
  <CDA:CDATemplate xmi:id="_V0HNsIb0EeSxzopshBnQuw" base_Class="_6whQEIbpEeSxzopshBnQuw" templateId="2.16.840.1.113883.10.20.22.4.45" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8604, CONF:1198-10497, CONF:1198-32606</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_XeUbwIevEeSBauRYePLghA" base_Class="_NGivoIevEeSBauRYePLghA" templateId="2.16.840.1.113883.10.20.22.2.15" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7932, CONF:1198-10388, CONF:1198-32607</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_ruNcgIevEeSBauRYePLghA" base_Generalization="_NGjWsIevEeSBauRYePLghA"/>
  <CDA:CDATemplate xmi:id="_2JKvhhSVEeGGzu7fmW9pXw" base_Class="_2JKvgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.17">
    <ruleId>CONF:7936, CONF:10449</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2JOZ6xSVEeGGzu7fmW9pXw" base_Class="_2JOZ4BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.38">
    <ruleId>CONF:8550</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2JgtwhSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2JhU0hSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2Jh74hSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2Jii8BSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:TextValue xmi:id="_2JRdMBSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2JQ2IBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:CDATemplate xmi:id="_aXMCcBncEeGs5a462vYX5Q" base_Class="_2N6soBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.15.3.8">
    <ruleId>CONF:16768</ruleId>
    <ruleId>CONF:16868</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_2N6swxSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2N6suBSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2N6sthSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2N6stxSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2N6suRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_oW16cBtsEeGT89b80j3MTg" severity="WARNING" base_Constraint="_L9YKgBtsEeGT89b80j3MTg">
    <ruleId>CONF:8893, R2.1=CONF:1198-19221</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BbV5sBttEeGT89b80j3MTg" severity="WARNING" base_Constraint="_4G8WIBtsEeGT89b80j3MTg">
    <ruleId>CONF:8894, R2.1=CONF:1198-19222</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_DA2mUBtqEeGT89b80j3MTg" base_Class="_vBswQBtpEeGT89b80j3MTg" templateId="2.16.840.1.113883.10.20.15.3.1">
    <ruleId>CONF:16762</ruleId>
    <ruleId>CONF:16763</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_p6vxUDyWEeGOm9opnDhYAQ" base_Constraint="_O-ANcBttEeGT89b80j3MTg">
    <ruleId>CONF:8895, R2.1=CONF:1198-19224</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_moWLAOWQEeGKmvzED_He2w" base_Class="_gIH_QOWQEeGKmvzED_He2w" templateId="2.16.840.1.113883.10.20.22.4.85">
    <ruleId>CONF:16566</ruleId>
    <ruleId>CONF:16567</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_jrvIkOWTEeGKmvzED_He2w" base_Constraint="_gBRpAOWTEeGKmvzED_He2w">
    <ruleId>CONF:16565</ruleId>
    <ruleId>R2.0=CONF:1098-16565</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_93hgAOWTEeGKmvzED_He2w" base_Class="_RYJj0OWQEeGKmvzED_He2w" templateId="2.16.840.1.113883.10.20.22.4.78">
    <ruleId>CONF:14815</ruleId>
    <ruleId>CONF:14816</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_WDcQ0InVEeOJGtGyq_dBbA" base_Class="_O-O-IInUEeOJGtGyq_dBbA" templateId="2.16.840.1.113883.10.20.22.4.109">
    <ruleId>CONF:1098-27892</ruleId>
    <ruleId>CONF:1098-27893</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_zT3d4IqZEeOoMZgUoTghIg" base_Class="_H2EzIIqZEeOoMZgUoTghIg" templateId="2.16.840.1.113883.10.20.22.4.111">
    <ruleId>CONF:1098-27926</ruleId>
    <ruleId>CONF:1098-27927</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_zZuC4I05EeOB0eBUISUB4Q" base_Class="_NP5zMI05EeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.138">
    <ruleId>CONF:1098-30326</ruleId>
    <ruleId>CONF:1098-30327</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2DpkYI37EeOB0eBUISUB4Q" base_Class="_T1dcwI37EeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.124">
    <ruleId>CONF:1098-29843</ruleId>
    <ruleId>CONF:1098-29844</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_hAyLgJ2GEeORR8_YW0n_jQ" base_Class="_MlM4IJ2GEeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.57">
    <ruleId>CONF:1098-30477</ruleId>
    <ruleId>CONF:1098-30478</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_Nj2T0Lk0EeODDJAC5t5vpw" base_Class="_Hl3ScLk0EeODDJAC5t5vpw" templateId="2.16.840.1.113883.10.20.22.4.78" templateVersion="2014-06-09">
    <ruleId>CONF:1098-14815</ruleId>
    <ruleId>CONF:1098-14816</ruleId>
    <ruleId>CONF:1098-32573</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_b9FDMLk0EeODDJAC5t5vpw" base_Generalization="_Hl5HoLk0EeODDJAC5t5vpw"/>
  <CDA:PropertyValidation xmi:id="_l98r87nIEeOgPNzo_e4B9A">
    <ruleId>CONF:1098-31928</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_xXkasPJfEeO2NaSiicarcg" base_Class="_b_iGIPJfEeO2NaSiicarcg" templateId="2.16.840.1.113883.10.20.22.4.38" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8550, CONF:1198-10526, CONF:1198-32495</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_GAuQAPJgEeO2NaSiicarcg" base_Generalization="_b_iGIfJfEeO2NaSiicarcg"/>
  <CDA:CDATemplate xmi:id="_uZOR0PMxEeOUvapeh9bVvQ" base_Class="_qHUXwPMxEeOUvapeh9bVvQ" templateId="2.16.840.1.113883.10.20.22.4.85" templateVersion="2014-06-09">
    <ruleId>CONF:1098-16566</ruleId>
    <ruleId>CONF:1098-16567</ruleId>
    <ruleId>CONF:1098-32589</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_7MV_APMxEeOUvapeh9bVvQ" base_Generalization="_qHW0APMxEeOUvapeh9bVvQ"/>
  <CDA:CDATemplate xmi:id="_1kXFQAFHEeSG_MJH-zNFRw" base_Class="_wLWZMAFHEeSG_MJH-zNFRw" templateId="2.16.840.1.113883.10.20.22.2.17" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7936, CONF:1198-10449, CONF:1198-32494</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_9aG5gAFHEeSG_MJH-zNFRw" base_Generalization="_wLZcgAFHEeSG_MJH-zNFRw"/>
  <CDA:ConstraintValidation xmi:id="_k0VncM3IEeSEZ8MJJ3ZzLg" severity="WARNING" base_Constraint="_eB5qUM3IEeSEZ8MJJ3ZzLg">
    <ruleId>CONF:1198-19222</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_WMjvUM80EeSJsu9BbhWxmQ"/>
  <CDA:CodeSystemConstraint xmi:id="_WMmLkM80EeSJsu9BbhWxmQ" code="completed" displayName="Completed">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_e8ZEoCWvEd-iTYfpNb4PkQ"/>
    <ruleId>CONF:16561</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:ConstraintValidation xmi:id="_mHAlcPpYEeSE4ZSXS7BkuA" base_Constraint="_lZRVsPpYEeSE4ZSXS7BkuA">
    <ruleId>CONF:1098-32487</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xOIwUP6JEeSoDZvueq4eYw" severity="WARNING" base_Constraint="_mBQoMP6JEeSoDZvueq4eYw">
    <ruleId>CONF:1098-32433</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_PAytAD-rEeaJttsCYk-pKw" base_Class="_8fGTcD-qEeaJttsCYk-pKw" templateId="2.16.840.1.113883.10.20.22.4.200" templateVersion="2016-06-01">
    <ruleId>CONF:3250-18232</ruleId>
    <ruleId>CONF:3250-18233</ruleId>
    <ruleId>CONF:3250-32949</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2KC5QBSVEeGGzu7fmW9pXw" base_Class="_2JxzgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.1">
    <ruleId>CONF:7126, CONF:9134</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2J_O4hSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2J_O4BSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7164</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J_18BSVEeGGzu7fmW9pXw">
    <ruleId>CONF:400</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J_19BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:401</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KAdAhSVEeGGzu7fmW9pXw">
    <ruleId>CONF:402</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KBEExSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF:403</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KBrIxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF:404</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KCSMhSVEeGGzu7fmW9pXw">
    <ruleId>CONF:406</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_2JzosRSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7128</ruleId>
  </CDA:PropertyValidation>
  <CDA:AssociationValidation xmi:id="_2J020BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:399</ruleId>
  </CDA:AssociationValidation>
  <CDA:ConstraintValidation xmi:id="_2J69chSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2J69cBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:7166</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J7kgxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:415</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J8LkxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:417</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J8LlhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:419</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J8yohSVEeGGzu7fmW9pXw">
    <ruleId>CONF:420</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J9ZshSVEeGGzu7fmW9pXw">
    <ruleId>CONF:421</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_TIHhwBneEeGs5a462vYX5Q" base_Class="_2J1d4BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.2">
    <ruleId>CONF:9138</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2JtiEBSVEeGGzu7fmW9pXw" base_Class="_2Js7AxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.3.1" assigningAuthorityName="">
    <ruleId>CONF:7108</ruleId>
    <ruleId>CONF:9137</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2Jv-URSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:392</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CodeSystemConstraint xmi:id="_2JuJIBSVEeGGzu7fmW9pXw" code="30954-2" displayName="Relevant diagnostic tests and/or laboratory data">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
    <ruleId>CONF:389</ruleId>
    <ruleId>CONF:390</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:TextValue xmi:id="_2JvXQBSVEeGGzu7fmW9pXw">
    <ruleId>CONF:391</ruleId>
  </CDA:TextValue>
  <CDA:AssociationValidation xmi:id="_2JwlYxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF:388</ruleId>
  </CDA:AssociationValidation>
  <CDA:CDATemplate xmi:id="_OydAEBVfEeGQCvUGzi1kDQ" base_Class="_xGqiEBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.3">
    <ruleId>CONF:7116, CONF:9136</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_76siUBtxEeG4C_iCHrZZ9w" severity="WARNING" base_Constraint="_1dxCgBtuEeG4C_iCHrZZ9w">
    <ruleId>CONF:7165</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_eaFnUBt1EeG4C_iCHrZZ9w" severity="WARNING">
    <ruleId>CONF:9108</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s1du8Bt5EeG4C_iCHrZZ9w" severity="WARNING">
    <ruleId>CONF:9109</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_B0fw0Bt-EeG4C_iCHrZZ9w" severity="INFO">
    <ruleId>CONF:7149</ruleId>
  </CDA:PropertyValidation>
  <CDA:CodeSystemConstraint xmi:id="_1-sa4B7HEeGaOZtrEokzNQ"/>
  <CDA:ConstraintValidation xmi:id="_1-YHcB7rEeGaOZtrEokzNQ" severity="WARNING" base_Constraint="_tjUmsB7rEeGaOZtrEokzNQ">
    <ruleId>CONF:15924</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_4nrIIB7vEeGDhvvzMMgVgQ" base_Constraint="_jXJw0B7vEeGDhvvzMMgVgQ">
    <ruleId>CONF:7152</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VKBKYB-4EeGZsIzHpWxp_Q" severity="INFO" base_Constraint="_OYDHUB-4EeGZsIzHpWxp_Q">
    <ruleId>CONF:7149</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_yL4hMDsOEeGVevaNZNc6DA" base_Constraint="_sq16gDsOEeGVevaNZNc6DA">
    <ruleId>CONF:15926</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YUIekOJbEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_VTuBkOJbEeG3cO7ebC3QuA">
    <ruleId>CONF:15925</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_OdUE4PF7EeOmsLWmq5fnqQ" base_Class="_H85E0PF7EeOmsLWmq5fnqQ" templateId="2.16.840.1.113883.10.20.22.4.2" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7136, CONF:1198-9138, CONF:1198-32575</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_dbBaUPF7EeOmsLWmq5fnqQ" base_Generalization="_H85E0fF7EeOmsLWmq5fnqQ"/>
  <CDA:CDATemplate xmi:id="_jSlUgPGEEeOmsLWmq5fnqQ" base_Class="_gU40UPGEEeOmsLWmq5fnqQ" templateId="2.16.840.1.113883.10.20.22.4.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7126, CONF:1198-9134, CONF:1198-32588</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_4LYIUPGEEeOmsLWmq5fnqQ" base_Generalization="_gU40UfGEEeOmsLWmq5fnqQ"/>
  <CDA:ConstraintValidation xmi:id="_6J_mgPJHEeOA6ZIOnFjrYQ" severity="WARNING" base_Constraint="_6J9xUPJHEeOA6ZIOnFjrYQ">
    <ruleId>CONF:1198-19218, CONF:1198-19219</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2-WbMAFAEeSaVZ5WxWd94w" base_Class="_yaJ3QAFAEeSaVZ5WxWd94w" templateId="2.16.840.1.113883.10.20.22.2.3" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7116, CONF:1198-9136, CONF:1198-32591</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_9nLJUAFAEeSaVZ5WxWd94w" base_Generalization="_yaM6kAFAEeSaVZ5WxWd94w"/>
  <CDA:CDATemplate xmi:id="_e0ccAALtEeSueJWOLw5iaQ" base_Class="_bAAhEALtEeSueJWOLw5iaQ" templateId="2.16.840.1.113883.10.20.22.2.3.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7108, CONF:1198-9137, CONF:1198-32592</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_sCLBkALtEeSueJWOLw5iaQ" base_Generalization="_bAC9UALtEeSueJWOLw5iaQ"/>
  <CDA:ConstraintValidation xmi:id="_lm2fYBaLEeWCiY8iFDNBKA" severity="INFO" base_Constraint="_IXgb0PJNEeOA6ZIOnFjrYQ"/>
  <CDA:ConstraintValidation xmi:id="_TpVv8BaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_PX_vAPF8EeOmsLWmq5fnqQ"/>
  <CDA:ConstraintValidation xmi:id="_UKZ1oBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_7FLrMPF9EeOmsLWmq5fnqQ"/>
  <CDA:ConstraintValidation xmi:id="_UlLGEBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_lFBDcMzmEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_VFN4EBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_tDNpEMzmEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_VnxykBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_pSGH4MzmEeSLqosJ4F90vA"/>
  <CDA:ConstraintValidation xmi:id="_WLVLkBaWEeWPafwaDwpzXw" severity="INFO" base_Constraint="_fNQT4M2sEeSEZ8MJJ3ZzLg"/>
  <CDA:CDATemplate xmi:id="_u5G5QBnaEeGs5a462vYX5Q" base_Class="_2KlEwBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.48">
    <ruleId>CONF:8655, CONF:10485</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2LEM8hSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2LE0AhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KnhARSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KoIEBSVEeGGzu7fmW9pXw" base_Constraint="_2KlExRSVEeGGzu7fmW9pXw">
    <ruleId>CONF:8657, CONF:8658</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KovIBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KovIRSVEeGGzu7fmW9pXw" base_Constraint="_2KlEyhSVEeGGzu7fmW9pXw">
    <ruleId>CONF:8659, CONF:8660</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KpWMBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Kp9QBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Kp9QRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KqkUBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KrLYBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KrLYRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KrycBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KsZgBSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2Kvc0xSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2KwD5xSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2Kwq8xSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_2KgzVhSVEeGGzu7fmW9pXw" base_Class="_2KgzUBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.21.1">
    <ruleId>CONF:8643</ruleId>
    <ruleId>CONF:10377</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_VLe-sBVfEeGQCvUGzi1kDQ" base_Class="_1RZdIBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.21">
    <ruleId>CONF:7928, CONF:10376</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_v_vnwIlGEeOJGtGyq_dBbA" base_Class="_Z8VQYIlFEeOJGtGyq_dBbA" templateId="2.16.840.1.113883.10.20.22.4.108" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28412</ruleId>
    <ruleId>CONF:1198-28413</ruleId>
    <ruleId>CONF:1198-32876</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_LsOj4K-9EeO8duI_7f6kZw" base_Class="_GnllUK-9EeO8duI_7f6kZw" templateId="2.16.840.1.113883.10.20.22.4.48" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8655, CONF:1198-10485, CONF:1198-32496</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_YFwFUK-9EeO8duI_7f6kZw" base_Generalization="_GnmMYK-9EeO8duI_7f6kZw"/>
  <CDA:CDATemplate xmi:id="_oceOsAFXEeSLIY0bHb-fFQ" base_Class="_jsKhYAFXEeSLIY0bHb-fFQ" templateId="2.16.840.1.113883.10.20.22.2.21" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7928, CONF:1198-10376, CONF:1198-15340</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_6rSIgAFXEeSLIY0bHb-fFQ" base_Generalization="_jsNksAFXEeSLIY0bHb-fFQ"/>
  <CDA:CDATemplate xmi:id="_tbHJUAIPEeS-F85KYVlDyA" base_Class="_ZFbCkAIPEeS-F85KYVlDyA" templateId="2.16.840.1.113883.10.20.22.2.21.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-30227, CONF:1198-30228, CONF:1198-32512</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_1e-SEAIPEeS-F85KYVlDyA" base_Generalization="_ZFc3wAIPEeS-F85KYVlDyA"/>
  <CDA:ConstraintValidation xmi:id="_RoXMQKJOEeSOc57SOMra_g" base_Constraint="_qbVzIKJNEeSOc57SOMra_g">
    <ruleId>CONF:1198-32881</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MRFAUKvXEeS-mulaI3YUlw" base_Constraint="_FPudcKvXEeS-mulaI3YUlw">
    <ruleId>CONF:1198-32449</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Df2HYBaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_B2cNcKvXEeS-mulaI3YUlw"/>
  <CDA:CDATemplate xmi:id="_2LXH4BSVEeGGzu7fmW9pXw" base_Class="_2LWg0BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.22.1">
    <ruleId>CONF:10387</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2L6hhBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-457</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CodeSystemConstraint xmi:id="_2LYWARSVEeGGzu7fmW9pXw" code="46240-8" displayName="History of encounters">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
    <ruleId>CONF-454</ruleId>
    <ruleId>CONF-455</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:PropertyValidation xmi:id="_2LZkIRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-456</ruleId>
  </CDA:PropertyValidation>
  <CDA:PropertyValidation xmi:id="_2LaLMBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-453</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_aJLnwBVfEeGQCvUGzi1kDQ" base_Class="_4yj2wBVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.22" assigningAuthorityName="HL7">
    <ruleId>CONF:10386</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2LayXhSVEeGGzu7fmW9pXw" base_Class="_2LayQBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.49" assigningAuthorityName="HL7">
    <ruleId>CONF:8712, CONF:26353</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2Ld1kBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2LecoBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2LecoRSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2LfDsBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-470</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MrEusCwaEeGKLc4ckmfDag" severity="WARNING" base_Constraint="_EywuoCwaEeGKLc4ckmfDag">
    <ruleId>CONF:8740</ruleId>
    <ruleId>R2.1=CONF:1198-8740</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_d7Xx0CwaEeGKLc4ckmfDag" severity="WARNING" base_Constraint="_a_2b4CwaEeGKLc4ckmfDag">
    <ruleId>CONF:8719, R2.1=CONF:1198-8719</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iPTFICwaEeGKLc4ckmfDag" severity="WARNING" base_Constraint="_fTZ7wCwaEeGKLc4ckmfDag">
    <ruleId>CONF:15970, R2.1=CONF:1198-15970</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nZocACwaEeGKLc4ckmfDag" base_Constraint="_ktatYCwaEeGKLc4ckmfDag">
    <ruleId>CONF:15972, R2.1=CONF:1198-15972</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="__KO_4OM0EeGfv4R-kzpM0g" severity="WARNING" base_Constraint="_7xneQOM0EeGfv4R-kzpM0g">
    <ruleId>CONF:15971, R2.1=CONF:1198-15971</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_Pzro8OM2EeGfv4R-kzpM0g" base_Class="_Ker6MOM2EeGfv4R-kzpM0g" templateId="2.16.840.1.113883.10.20.22.4.80">
    <ruleId>CONF:14895, CONF:14896</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_WBACIMzDEeO93sHu8pHB2g" base_Class="_RGU34MzDEeO93sHu8pHB2g" templateId="2.16.840.1.113883.10.20.22.4.49" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8712, CONF:1198-26353, CONF:1198-32546</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_IkqjYMzEEeO93sHu8pHB2g" base_Generalization="_RGVe8MzDEeO93sHu8pHB2g"/>
  <CDA:ConstraintValidation xmi:id="_tpYvEMzLEeO93sHu8pHB2g" base_Constraint="_tMxrkMzLEeO93sHu8pHB2g">
    <ruleId>CONF:1198-32177, CONF:1198-32377</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_wJ4rAMzNEeO93sHu8pHB2g" base_Class="_jH6CcMzNEeO93sHu8pHB2g" templateId="2.16.840.1.113883.10.20.22.4.80" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14895, CONF:1198-14896, CONF:1198-32542</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_K3ogAMzOEeO93sHu8pHB2g" base_Generalization="_jH6CcczNEeO93sHu8pHB2g"/>
  <CDA:CDATemplate xmi:id="_roxZkPvbEeOJwYDYIUCQDg" base_Class="_kgM0YPvbEeOJwYDYIUCQDg" templateId="2.16.840.1.113883.10.20.22.2.22" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7940, CONF:1198-10386, CONF:1198-32547</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_JVoEAPvcEeOJwYDYIUCQDg" base_Generalization="_kgOpkPvbEeOJwYDYIUCQDg"/>
  <CDA:CDATemplate xmi:id="_0SqCYAIvEeScubSeRE1upQ" base_Class="_ogD-EAIvEeScubSeRE1upQ" templateId="2.16.840.1.113883.10.20.22.2.22.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8705, CONF:1198-10387, CONF:1198-32548</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_8TwyEAIvEeScubSeRE1upQ" base_Generalization="_ogHBYAIvEeScubSeRE1upQ"/>
  <CDA:ConstraintValidation xmi:id="_soEP8kglEeSfpbeq3Ftc1g" base_Constraint="_soEP8EglEeSfpbeq3Ftc1g">
    <ruleId>CONF:9929</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_jfFOMIfLEeSBauRYePLghA" base_Class="_S0oqIIfLEeSBauRYePLghA" templateId="2.16.840.1.113883.10.20.22.2.64">
    <ruleId>CONF:1098-32640</ruleId>
    <ruleId>CONF:1098-32642</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_zh-FUBnbEeGs5a462vYX5Q" base_Class="_2MAoIBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.52">
    <ruleId>CONF:10498</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2MMOUhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-305</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MM1YhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-311</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MNccBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-314</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MNccxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-315</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MODgxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-327</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MOqkxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-328</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MPRohSVEeGGzu7fmW9pXw">
    <ruleId>CONF-329</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MP4shSVEeGGzu7fmW9pXw">
    <ruleId>CONF-354</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MB2QBSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2MHV4BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-312</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_k-AE8BVOEeGbmN_W114JUw" base_Class="_daTqABVOEeGbmN_W114JUw" templateId="2.16.840.1.113883.10.20.22.4.54">
    <ruleId>CONF:9004</ruleId>
    <ruleId>CONF:10499</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_FsB20BVOEeGbmN_W114JUw" base_Class="__qYdcBVNEeGbmN_W114JUw" templateId="2.16.840.1.113883.10.20.22.4.53">
    <ruleId>CONF:8993</ruleId>
    <ruleId>CONF:10500</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2MS8AhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-298</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MTjExSVEeGGzu7fmW9pXw">
    <ruleId>CONF-299</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MUKIBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-303</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MUxMBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>3.</ruleId>
    <ruleId>CONF:7967</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_npcu0BVfEeGQCvUGzi1kDQ" base_Class="_EuPloBVeEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.2">
    <ruleId>CONF:7965, CONF:10399</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_wL6S8BqgEeGo461UQq-B1g" severity="WARNING">
    <ruleId>CONF:7969</ruleId>
    <ruleId>CONF:7970</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_kOty4CQ9EeG4DdjGPr5_Vg" base_Constraint="_aXWsMCQ9EeG4DdjGPr5_Vg">
    <ruleId>CONF:8858</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConformsTo xmi:id="_qn9vwCREEeG4DdjGPr5_Vg" base_Generalization="_QPw2IBVgEeGQCvUGzi1kDQ"/>
  <CDA:CDATemplate xmi:id="_kl0fwCRHEeGPuMK8Qi-Gbg" base_Class="_2L7voBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.2.1">
    <ruleId>CONF:9015</ruleId>
    <ruleId>CONF:10400</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_-TSZYEX6EeG6e5lG0YsSyQ" base_Constraint="_4_lrIEX6EeG6e5lG0YsSyQ">
    <ruleId>CONF:15545</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_--EbwEX6EeG6e5lG0YsSyQ" severity="WARNING" base_Constraint="_2MP4sxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:15543</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_GF72UEX7EeG6e5lG0YsSyQ" severity="WARNING" base_Constraint="_COIeUEX7EeG6e5lG0YsSyQ">
    <ruleId>CONF:8842, R2.1=CONF:1198-8842</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_h5HCUEX7EeG6e5lG0YsSyQ" base_Constraint="_bnbB0EX7EeG6e5lG0YsSyQ">
    <ruleId>CONF:8851, R2.1=CONF:1198-8851</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_O3iVUOMsEeGfv4R-kzpM0g" severity="WARNING" base_Constraint="_I32q0OMsEeGfv4R-kzpM0g">
    <ruleId>CONF:15544</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_xKmcQJXGEeOgXcDbh8Igkw" base_Class="_KRcPwJXFEeOgXcDbh8Igkw" templateId="2.16.840.1.113883.10.20.22.4.120">
    <ruleId>CONF:1098-32098</ruleId>
    <ruleId>CONF:1098-32099</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_GXjukOE8EeOTq9XEMvvkWw" base_Class="_zI6vcOE7EeOTq9XEMvvkWw" templateId="2.16.840.1.113883.10.20.22.4.52" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8828, CONF:1198-10498, CONF:1198-32528</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_qqzeMOE8EeOTq9XEMvvkWw" base_Generalization="_zI_A4OE7EeOTq9XEMvvkWw"/>
  <CDA:PropertyValidation xmi:id="_JbaXUOHPEeO04sHNODkHmQ" severity="INFO">
    <ruleId>CONF:1198-8985</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_W8SwIOHUEeO04sHNODkHmQ" base_Class="_Rx8LIOHUEeO04sHNODkHmQ" templateId="2.16.840.1.113883.10.20.22.4.54" templateVersion="2014-06-09">
    <ruleId>CONF:1098-9004</ruleId>
    <ruleId>CONF:1098-10499</ruleId>
    <ruleId>CONF:1098-32602</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_jO7mcOHUEeO04sHNODkHmQ" base_Generalization="_Rx8LIeHUEeO04sHNODkHmQ"/>
  <CDA:CDATemplate xmi:id="_qxeRMPy3EeO1SvUcmWeLDQ" base_Class="_kdQhIPy3EeO1SvUcmWeLDQ" templateId="2.16.840.1.113883.10.20.22.2.2" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7965, CONF:1198-10399, CONF:1198-32529</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_5zZ_UPy3EeO1SvUcmWeLDQ" base_Generalization="_kdS9YPy3EeO1SvUcmWeLDQ"/>
  <CDA:CDATemplate xmi:id="_6KbjQALNEeSIPYXg7AgJzw" base_Class="_14bikALNEeSIPYXg7AgJzw" templateId="2.16.840.1.113883.10.20.22.2.2.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-9015, CONF:1198-10400, CONF:1198-32530</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Bq7gQALOEeSIPYXg7AgJzw" base_Generalization="_14dXwALNEeSIPYXg7AgJzw"/>
  <CDA:ConstraintValidation xmi:id="_ZVy_ksHrEeST26B_nQ4gxA" base_Constraint="_ZVy_kMHrEeST26B_nQ4gxA">
    <ruleId>CONF:1198-8858</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ckCE8BaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_xYXwIMHdEeST26B_nQ4gxA"/>
  <CDA:ConstraintValidation xmi:id="_c7CPsBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_DPx2kMHeEeST26B_nQ4gxA"/>
  <CDA:ConstraintValidation xmi:id="_dZwzEBaUEeWPafwaDwpzXw" severity="INFO" base_Constraint="_LMMTgMHeEeST26B_nQ4gxA"/>
  <CDA:CDATemplate xmi:id="_2MV_VhSVEeGGzu7fmW9pXw" base_Class="_2MV_UBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.18">
    <ruleId>CONF:7924, CONF:10434</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NHbYxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-34</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_WCTeUBUlEeGvPruliC3crg" base_Class="_PZBdMBUlEeGvPruliC3crg" templateId="2.16.840.1.113883.10.20.22.4.61">
    <ruleId>CONF:8900, CONF:10516</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_HyrhcBUmEeGvPruliC3crg" base_Class="_Cg3pkBUmEeGvPruliC3crg" templateId="2.16.840.1.113883.10.20.22.4.60">
    <ruleId>CONF:8897, CONF:10492</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_cVJrUBnZEeGs5a462vYX5Q" base_Class="_XUoXwBnZEeGs5a462vYX5Q" templateId="2.16.840.1.113883.10.20.1.19">
    <ruleId>CONF:8946</ruleId>
    <ruleId>CONF:10529</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="__B5i0DZXEeGUovy31cP2ng" severity="INFO" base_Constraint="_xtqFkDZXEeGUovy31cP2ng">
    <ruleId>CONF:8973</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_sHmwUDaJEeGUovy31cP2ng">
    <ruleId>CONF:8906</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_cp6I4I9DEeOB0eBUISUB4Q" base_Class="_O2I3AI9DEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.129">
    <ruleId>CONF:1098-31947</ruleId>
    <ruleId>CONF:1098-31948</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_sazhQLkxEeODDJAC5t5vpw" base_Class="_aJr6ULkxEeODDJAC5t5vpw" templateId="2.16.840.1.113883.10.20.22.4.60" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8897, CONF:1198-10492, CONF:1198-32596</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_d3rHoLk0EeODDJAC5t5vpw" base_Generalization="_aJr6UbkxEeODDJAC5t5vpw"/>
  <CDA:CDATemplate xmi:id="_Vf2sQOwlEeOqa975IP2wug" base_Class="_Q0ODkOwlEeOqa975IP2wug" templateId="2.16.840.1.113883.10.20.22.4.61" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8900, CONF:1198-10516, CONF:1198-32595</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_mUegAOwlEeOqa975IP2wug" base_Generalization="_Q0P4wOwlEeOqa975IP2wug"/>
  <CDA:CDATemplate xmi:id="_yGcSUP4lEeOzC5ykp-XCaA" base_Class="_twgM0P4lEeOzC5ykp-XCaA" templateId="2.16.840.1.113883.10.20.22.2.18" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7924</ruleId>
    <ruleId>CONF:1198-10434</ruleId>
    <ruleId>CONF:1198-32597</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_GQnsoP4mEeOzC5ykp-XCaA" base_Generalization="_twipEP4lEeOzC5ykp-XCaA"/>
  <CDA:ConstraintValidation xmi:id="_pWavQBUIEeWCiY8iFDNBKA" severity="INFO" base_Constraint="_reFLoPftEeO297ryy8ptVg"/>
  <CDA:CDATemplate xmi:id="_jeR44BnTEeGs5a462vYX5Q" base_Class="_2NP-QxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.10">
    <ruleId>CONF:10435</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2N0mCBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-484</ruleId>
  </CDA:ConstraintValidation>
  <CDA:TextValue xmi:id="_2NP-YBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-483</ruleId>
  </CDA:TextValue>
  <CDA:CDATemplate xmi:id="_2NWE8xSVEeGGzu7fmW9pXw" base_Class="_2NWE5xSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.39">
    <ruleId>CONF:8544</ruleId>
    <ruleId>CONF:10510</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NWE9hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-488</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NWE9xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-491</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2NWFEhSVEeGGzu7fmW9pXw" base_Class="_2NWFBBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.40">
    <ruleId>CONF:8566</ruleId>
    <ruleId>CONF:10511</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NcLghSVEeGGzu7fmW9pXw">
    <ruleId>CONF-488</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NcLgxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-491</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2NcLmhSVEeGGzu7fmW9pXw" base_Class="_2NcLjhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.44" assigningAuthorityName="">
    <ruleId>CONF:8583</ruleId>
    <ruleId>CONF:10512</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NcLnRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-490</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NcLnhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-491</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2NiSNhSVEeGGzu7fmW9pXw" base_Class="_2NiSKhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.41" assigningAuthorityName="">
    <ruleId>CONF:8570</ruleId>
    <ruleId>CONF:10513</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NiSORSVEeGGzu7fmW9pXw">
    <ruleId>CONF-488</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NiSOhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-491</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2NoYzxSVEeGGzu7fmW9pXw" base_Class="_2NoYwxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.42">
    <ruleId>CONF:8574</ruleId>
    <ruleId>CONF:10514</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NoY0hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-489</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2NoY8BSVEeGGzu7fmW9pXw" base_Class="_2NoY5BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.43">
    <ruleId>CONF:8579</ruleId>
    <ruleId>CONF:10515</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2NufYBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-489</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NufYRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-491</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="__Lp9wCoMEeGHF88-qhhUMA">
    <ruleId>CONF:8564</ruleId>
  </CDA:PropertyValidation>
  <CDA:CodeSystemConstraint xmi:id="_F5fHsCoNEeGHF88-qhhUMA" identifier="2.16.840.1.113883.5.6" displayName="ENC"/>
  <CDA:CDATemplate xmi:id="_Vaw2MI3FEeOB0eBUISUB4Q" base_Class="_FhAIMI3FEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.130">
    <ruleId>CONF:1098-30340</ruleId>
    <ruleId>CONF:1098-30341</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_E1XbQI63EeOB0eBUISUB4Q" base_Class="_50a2UI62EeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.140">
    <ruleId>CONF:1098-30886</ruleId>
    <ruleId>CONF:1098-30887</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_W7EuEI9UEeOB0eBUISUB4Q" base_Class="_-miMII9TEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.121">
    <ruleId>CONF:1098-8583</ruleId>
    <ruleId>CONF:1098-10512</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_iF4mYI9kEeOB0eBUISUB4Q" base_Class="_An8P8I9kEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.132" templateVersion="2015-08-01">
    <ruleId>CONF:1198-30752</ruleId>
    <ruleId>CONF:1198-30753</ruleId>
    <ruleId>CONF:1198-32861</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_cpHPEJA9EeOZX935IVJfOg" base_Class="_XD5vgJA8EeOZX935IVJfOg" templateId="2.16.840.1.113883.10.20.22.4.131" templateVersion="2015-08-01">
    <ruleId>CONF:1198-30973</ruleId>
    <ruleId>CONF:1198-30974</ruleId>
    <ruleId>CONF:1198-32916</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_P05_YJmWEeOLJeQez13EkQ" base_Class="_0NewYJmVEeOLJeQez13EkQ" templateId="2.16.840.1.113883.10.20.22.4.110">
    <ruleId>CONF:1098-31420</ruleId>
    <ruleId>CONF:1098-31421</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_1f3zEJmaEeOLJeQez13EkQ" base_Class="_ncafYJmaEeOLJeQez13EkQ" templateId="2.16.840.1.113883.10.20.22.4.143">
    <ruleId>CONF:1098-30951</ruleId>
    <ruleId>CONF:1098-30952</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ng1ggJ14EeORR8_YW0n_jQ" base_Class="_YPOXoJ14EeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.60">
    <ruleId>CONF:1098-29584</ruleId>
    <ruleId>CONF:1098-29585</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_oz60oOaYEeOmzetP5oaH3A" base_Class="_lLnRMOaYEeOmzetP5oaH3A" templateId="2.16.840.1.113883.10.20.22.4.39" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30430</ruleId>
    <ruleId>CONF:1098-30431</ruleId>
    <ruleId>CONF:1098-32552</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_0pQD4OaYEeOmzetP5oaH3A" base_Generalization="_lLn4QOaYEeOmzetP5oaH3A"/>
  <CDA:ConstraintValidation xmi:id="_qVZcMOadEeOmzetP5oaH3A" severity="WARNING" base_Constraint="_pRxcAOadEeOmzetP5oaH3A">
    <ruleId>CONF:1098-32030</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_ucA3wOdXEeOqBOMhgDlycQ" base_Class="_bDPFMOdXEeOqBOMhgDlycQ" templateId="2.16.840.1.113883.10.20.22.4.40" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30437</ruleId>
    <ruleId>CONF:1098-30438</ruleId>
    <ruleId>CONF:1098-8567</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_KFeHEOdYEeOqBOMhgDlycQ" base_Generalization="_bDRhcOdXEeOqBOMhgDlycQ"/>
  <CDA:ConstraintValidation xmi:id="_sp28oOdiEeOqBOMhgDlycQ" base_Constraint="_qBucwOdiEeOqBOMhgDlycQ">
    <ruleId>CONF:1098-31875</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_msiWsOdvEeOqBOMhgDlycQ" base_Class="_jKZssOdvEeOqBOMhgDlycQ" templateId="2.16.840.1.113883.10.20.22.4.44" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30451</ruleId>
    <ruleId>CONF:1098-30452</ruleId>
    <ruleId>CONF:1098-32555</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_uUCTkOdvEeOqBOMhgDlycQ" base_Generalization="_jKZssedvEeOqBOMhgDlycQ"/>
  <CDA:CDATemplate xmi:id="_hMr2QOeEEeOqBOMhgDlycQ" base_Class="_cs0YsOeEEeOqBOMhgDlycQ" templateId="2.16.840.1.113883.10.20.22.4.41" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30444</ruleId>
    <ruleId>CONF:1098-30445</ruleId>
    <ruleId>CONF:1098-32554</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_BJHWoOeFEeOqBOMhgDlycQ" base_Generalization="_cs0YseeEEeOqBOMhgDlycQ"/>
  <CDA:ConstraintValidation xmi:id="_Nh6p4ueGEeOqBOMhgDlycQ" severity="WARNING" base_Constraint="_Nh6p4OeGEeOqBOMhgDlycQ">
    <ruleId>CONF:1098-31977</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_N6e64ueGEeOqBOMhgDlycQ" severity="INFO" base_Constraint="_N6e64OeGEeOqBOMhgDlycQ">
    <ruleId>CONF:1098-31977</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nAbYQOgNEeO-iJTuAv7BKQ" base_Constraint="_nAaxMOgNEeO-iJTuAv7BKQ">
    <ruleId>CONF:1098-31987</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_e9gG0OgREeO-iJTuAv7BKQ" base_Class="_Yj45YOgREeO-iJTuAv7BKQ" templateId="2.16.840.1.113883.10.20.22.4.42" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30465</ruleId>
    <ruleId>CONF:1098-30466</ruleId>
    <ruleId>CONF:1098-32557</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_rlHHkOgREeO-iJTuAv7BKQ" base_Generalization="_Yj5gcOgREeO-iJTuAv7BKQ"/>
  <CDA:CDATemplate xmi:id="_8HEwIOg0EeO-iJTuAv7BKQ" base_Class="_vEd1cOg0EeO-iJTuAv7BKQ" templateId="2.16.840.1.113883.10.20.22.4.43" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30463</ruleId>
    <ruleId>CONF:1098-30464</ruleId>
    <ruleId>CONF:1098-32556</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_ND3BYOg1EeO-iJTuAv7BKQ" base_Generalization="_vEecgOg0EeO-iJTuAv7BKQ"/>
  <CDA:CDATemplate xmi:id="_4RLqYP4yEeO_Yb9cO8w3bA" base_Class="_bwml0P4yEeO_Yb9cO8w3bA" templateId="2.16.840.1.113883.10.20.22.2.10" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7723</ruleId>
    <ruleId>CONF:1098-10435</ruleId>
    <ruleId>CONF:1098-32501</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_YSzMwP4zEeO_Yb9cO8w3bA" base_Generalization="_bwppIP4yEeO_Yb9cO8w3bA"/>
  <CDA:ConstraintValidation xmi:id="_zmjXUMdhEeShCO0Pdt1H3g" base_Constraint="_7c0tsOg-EeO-iJTuAv7BKQ">
    <ruleId>CONF:1098-32092</ruleId>
    <ruleId>CONF:1098-32093</ruleId>
    <ruleId>CONF:1098-32096</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_3D6IYOLTEeS505YV9ux2XA" base_Class="_dGARYOLSEeS505YV9ux2XA" templateId="2.16.840.1.113883.10.20.22.4.146" templateVersion="2015-08-01">
    <ruleId>CONF:1198-32653</ruleId>
    <ruleId>CONF:1198-32680</ruleId>
    <ruleId>CONF:1198-32912</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_VZQOkON2EeS_XOr-dz_KWA" base_Class="_mMk3QON1EeS_XOr-dz_KWA" templateId="2.16.840.1.113883.10.20.22.4.136" templateVersion="2015-08-01">
    <ruleId>CONF:1198-32180</ruleId>
    <ruleId>CONF:1198-32222</ruleId>
    <ruleId>CONF:1198-32910</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_64wCQ_tZEeSoPO_Q5cglLA">
    <ruleId>CONF:1098-31489</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_3jUnkGDIEeaVKMeiBlPhjw" base_Constraint="_Uj1l4GDIEeaVKMeiBlPhjw">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:1045</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_4F2F0GDIEeaVKMeiBlPhjw" severity="WARNING" base_Constraint="_X-Mz8GDIEeaVKMeiBlPhjw">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:1045</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_4kVYoGDIEeaVKMeiBlPhjw" severity="INFO" base_Constraint="_aRwyAGDIEeaVKMeiBlPhjw">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:1045</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5HgXIGDIEeaVKMeiBlPhjw" severity="WARNING" base_Constraint="_cyRm8GDIEeaVKMeiBlPhjw">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:1045</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5qJKIGDIEeaVKMeiBlPhjw" base_Constraint="_fHhAAGDIEeaVKMeiBlPhjw">
    <ruleId>CONF:NEW</ruleId>
    <ruleId>DSTU:1045</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2OAzRhSVEeGGzu7fmW9pXw" base_Class="_2OAzQRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.7.1">
    <ruleId>CONF:10447</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2OfUaRSVEeGGzu7fmW9pXw" base_Constraint="_2OfUZxSVEeGGzu7fmW9pXw">
    <ruleId>CONF:8021</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CodeSystemConstraint xmi:id="_2OAzTBSVEeGGzu7fmW9pXw" code="47519-4" displayName="History of procedures">
    <reference href="pathmap://TERM_MODEL/CodeSystems.uml#_3-cwsCWrEd-iTYfpNb4PkQ"/>
    <ruleId>CONF-423</ruleId>
    <ruleId>CONF-424</ruleId>
  </CDA:CodeSystemConstraint>
  <CDA:PropertyValidation xmi:id="_2OAzUhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-422</ruleId>
  </CDA:PropertyValidation>
  <CDA:CDATemplate xmi:id="_LbH34BVfEeGQCvUGzi1kDQ" base_Class="_s9Ig4BVdEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.7" assigningAuthorityName="HL7">
    <ruleId>CONF:6271</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_PlWhYBg4EeGs5a462vYX5Q" base_Class="_Aj7JkBg4EeGs5a462vYX5Q" templateId="2.16.840.1.113883.10.20.22.4.13">
    <ruleId>CONF:10520</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_kpdNUBg4EeGs5a462vYX5Q" base_Class="_awdH4Bg4EeGs5a462vYX5Q" templateId="2.16.840.1.113883.10.20.22.4.12">
    <ruleId>CONF:10519</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2ONAgBSVEeGGzu7fmW9pXw" base_Class="_2OG58RSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.14" assigningAuthorityName="IHE PCC">
    <ruleId>CONF:7654</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2OZN2BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-442</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OZN3BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-447</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OZN4BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-435</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OZN5BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-436</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OZN6BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-444</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2ONAhhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2ONAhxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2ONAiBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2ONAiRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2ONAihSVEeGGzu7fmW9pXw"/>
  <CDA:TextValue xmi:id="_2ONAghSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2ONAhRSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:EntryRelationship xmi:id="_2OTHRhSVEeGGzu7fmW9pXw" severity="INFO" typeCode="RSON"/>
  <CDA:EntryRelationship xmi:id="_2OZNxBSVEeGGzu7fmW9pXw" severity="INFO" typeCode="RSON"/>
  <CDA:EntryRelationship xmi:id="_2OZNyRSVEeGGzu7fmW9pXw" severity="INFO" typeCode="SUBJ"/>
  <CDA:EntryRelationship xmi:id="_2ONAjhSVEeGGzu7fmW9pXw" severity="INFO" typeCode="COMP"/>
  <CDA:ConstraintValidation xmi:id="_-LZhQBrPEeGxIZCGAXKxsQ" severity="WARNING" base_Constraint="_qGzKgBrPEeGxIZCGAXKxsQ">
    <ruleId>CONF:19207</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Q7LaIBrQEeGxIZCGAXKxsQ" severity="WARNING" base_Constraint="_N4ba0BrQEeGxIZCGAXKxsQ">
    <ruleId>CONF:7658</ruleId>
    <ruleId>R2.0=CONF:1098-19203</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XSCZEBrREeGxIZCGAXKxsQ" severity="WARNING" base_Constraint="_WEQMwBrQEeGxIZCGAXKxsQ">
    <ruleId>CONF:15908</ruleId>
    <ruleId>R2.0=CONF:1098-19204</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Xu5UMBrREeGxIZCGAXKxsQ" base_Constraint="_SSUWwBrREeGxIZCGAXKxsQ">
    <ruleId>CONF:15910</ruleId>
    <ruleId>R2.0=CONF:1098-19206</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xKCRsBxZEeGXP8PxDYviDg" base_Constraint="_t6LqgBxZEeGXP8PxDYviDg">
    <ruleId>CONF:8009</ruleId>
    <ruleId>R2.0=CONF:1098-8009</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_H8YoIBxaEeGXP8PxDYviDg" base_Constraint="_9s2SABxZEeGXP8PxDYviDg">
    <ruleId>CONF:7752</ruleId>
    <ruleId>R2.0=CONF:1098-7752</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_LXrqUBxaEeGXP8PxDYviDg" base_Constraint="_JHSVABxaEeGXP8PxDYviDg">
    <ruleId>CONF:7766</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_skkvMBxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_ilhFEBxpEeGXP8PxDYviDg">
    <ruleId>CONF:19190</ruleId>
    <ruleId>R2.0=CONF:1098-19190</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_vD-w4BxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_oGW3cBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15596</ruleId>
    <ruleId>R2.0=CONF:1098-19186</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xlcBABxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_rX9yIBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15596</ruleId>
    <ruleId>R2.0=CONF:1098-19187</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_1T3akBxpEeGXP8PxDYviDg" base_Constraint="_0i4pkBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15598</ruleId>
    <ruleId>R2.0=CONF:1098-19189</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_D6CH0BxsEeGXP8PxDYviDg" base_Constraint="_ATZYUBxsEeGXP8PxDYviDg">
    <ruleId>CONF:8316</ruleId>
    <ruleId>R2.0=CONF:1098-8316</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_IVsa0BxsEeGXP8PxDYviDg" base_Constraint="_C9KP4BxsEeGXP8PxDYviDg">
    <ruleId>CONF:8312</ruleId>
    <ruleId>R2.0=CONF:1098-8312</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_7D4KABxsEeGXP8PxDYviDg" base_Constraint="_5r5qcBxsEeGXP8PxDYviDg">
    <ruleId>CONF:7777</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="__lXYMBxsEeGXP8PxDYviDg" base_Constraint="_zFL1IBxsEeGXP8PxDYviDg">
    <ruleId>CONF:8324</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_E2CVsBxvEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_-WpQYBxuEeGXP8PxDYviDg">
    <ruleId>CONF:19202</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_k1et0BxvEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_gpDwsBxvEeGXP8PxDYviDg">
    <ruleId>CONF:8242</ruleId>
    <ruleId>R2.0=CONF:1098-19198</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_leEX0BxvEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_iKsikBxvEeGXP8PxDYviDg">
    <ruleId>CONF:15901</ruleId>
    <ruleId>R2.0=CONF:1098-19199</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mGqB0BxvEeGXP8PxDYviDg" base_Constraint="_jzsgsBxvEeGXP8PxDYviDg">
    <ruleId>CONF:15903</ruleId>
    <ruleId>R2.0=CONF:1098-19201</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s0jAsBxwEeGXP8PxDYviDg" base_Constraint="_oJm7kBxwEeGXP8PxDYviDg">
    <ruleId>CONF:8266</ruleId>
    <ruleId>R2.0=CONF:1098-8266</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tPtSsBxwEeGXP8PxDYviDg" base_Constraint="_p26x8BxwEeGXP8PxDYviDg">
    <ruleId>CONF:8262</ruleId>
    <ruleId>R2.0=CONF:1098-8262</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_toQ8oBxwEeGXP8PxDYviDg" base_Constraint="_rOfo4BxwEeGXP8PxDYviDg">
    <ruleId>CONF:8274</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_cLhVgDV1EeGaW4kr-GbV8Q" base_Class="_luQh8DVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.7.13">
    <ruleId>CONF:8038</ruleId>
    <ruleId>CONF:10473</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_hf3kADV1EeGaW4kr-GbV8Q" base_Class="_OA_Q0DVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.25">
    <ruleId>CONF:8066</ruleId>
    <ruleId>CONF:10380</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_kL-k8DV1EeGaW4kr-GbV8Q" base_Class="_R1OXcDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.37">
    <ruleId>CONF:8174, CONF:10384</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_DIe5YDV2EeGaW4kr-GbV8Q" base_Class="_vHfXoDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.7.12">
    <ruleId>CONF:8030</ruleId>
    <ruleId>CONF:10463</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_FHJlgDV2EeGaW4kr-GbV8Q" base_Class="_zel6wDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.7.14">
    <ruleId>CONF:8034</ruleId>
    <ruleId>CONF:10464</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_IFlFgDV2EeGaW4kr-GbV8Q" base_Class="_3b6E4DVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.30">
    <ruleId>CONF:8082</ruleId>
    <ruleId>CONF:10436</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_K5SjQDV2EeGaW4kr-GbV8Q" base_Class="_7UA-4DVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.35">
    <ruleId>CONF:8101</ruleId>
    <ruleId>CONF:10437</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_OjincDV2EeGaW4kr-GbV8Q" base_Class="_-jlSMDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.36">
    <ruleId>CONF:8167, CONF:10438</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_Rt5DkDV2EeGaW4kr-GbV8Q" base_Class="_Cu6qMDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.34">
    <ruleId>CONF:8097, CONF:10439</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_U67nUDV2EeGaW4kr-GbV8Q" base_Class="_HNUIIDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.27">
    <ruleId>CONF:8062</ruleId>
    <ruleId>CONF:10442</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_XD4Q0DV2EeGaW4kr-GbV8Q" base_Class="_QhXGYDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.18.2.12">
    <ruleId>CONF:8070</ruleId>
    <ruleId>CONF:10466</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ZcBM4DV2EeGaW4kr-GbV8Q" base_Class="_TvcL8DVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.18.2.9">
    <ruleId>CONF:8074</ruleId>
    <ruleId>CONF:10467</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_cTJyEDV2EeGaW4kr-GbV8Q" base_Class="_W4UBYDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.28">
    <ruleId>CONF:8078</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_eDgVYDV2EeGaW4kr-GbV8Q" base_Class="_Z662wDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.40">
    <ruleId>CONF:8178</ruleId>
    <ruleId>CONF:10444</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_f1f3cDV2EeGaW4kr-GbV8Q" base_Class="_cjmJMDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.29">
    <ruleId>CONF:8058</ruleId>
    <ruleId>CONF:10445</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ifYDwDV2EeGaW4kr-GbV8Q" base_Class="_gSUdsDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.31">
    <ruleId>CONF:8086</ruleId>
    <ruleId>CONF:10446</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_vBBKYEEyEeGdmoWy_aLP0Q" base_Generalization="_W4UBYTVzEeGaW4kr-GbV8Q"/>
  <CDA:CDATemplate xmi:id="_7RNbkEEwEeGdmoWy_aLP0Q" base_Class="_0baBYEEwEeGdmoWy_aLP0Q" templateId="2.16.840.1.113883.10.20.22.4.65">
    <ruleId>CONF:16770, CONF:16771</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ckEjYEExEeGdmoWy_aLP0Q" base_Class="_0fjXAEEvEeGdmoWy_aLP0Q" templateId="2.16.840.1.113883.10.20.22.4.51">
    <ruleId>CONF:16766, CONF:16767</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_wMoyQOVwEeGpoIKFyl7L7w" severity="WARNING" base_Constraint="_oeKDoOVwEeGpoIKFyl7L7w">
    <ruleId>CONF:15909</ruleId>
    <ruleId>R2.0=CONF:1098-19205</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YTHewOV4EeGpoIKFyl7L7w" severity="WARNING" base_Constraint="_Q_qfQOV4EeGpoIKFyl7L7w">
    <ruleId>CONF:15902</ruleId>
    <ruleId>R2.0=CONF:1098-19200</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kDiKEOV-EeGpoIKFyl7L7w" severity="INFO" base_Constraint="_XONdcOV-EeGpoIKFyl7L7w">
    <ruleId>CONF:15597</ruleId>
    <ruleId>R2.0=CONF:1098-19188</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_EebnEOwvEeOqa975IP2wug" base_Class="__SgUwOwuEeOqa975IP2wug" templateId="2.16.840.1.113883.10.20.22.4.51" templateVersion="2015-08-01">
    <ruleId>CONF:1198-16766, CONF:1198-16767, CONF:1198-32539</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_VIJyYOwvEeOqa975IP2wug" base_Generalization="__SgUwewuEeOqa975IP2wug"/>
  <CDA:CDATemplate xmi:id="_CPNVMOzZEeOnE-G4kptBiw" base_Class="_5l3g0OzYEeOnE-G4kptBiw" templateId="2.16.840.1.113883.10.20.22.4.65" templateVersion="2015-08-01">
    <ruleId>CONF:1198-16770, CONF:1198-16771, CONF:1198-32540</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_EpHWYOzaEeOnE-G4kptBiw" base_Generalization="_5l4H4OzYEeOnE-G4kptBiw"/>
  <CDA:CDATemplate xmi:id="_Iv6S4PDbEeOKPKE9au0oug" base_Class="_CFMuYPDbEeOKPKE9au0oug" templateId="2.16.840.1.113883.10.20.22.4.12" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8291</ruleId>
    <ruleId>CONF:1098-10519</ruleId>
    <ruleId>CONF:1098-32505</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_UtIS0PDbEeOKPKE9au0oug" base_Generalization="_CFMuYfDbEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_WdYLoPDfEeOKPKE9au0oug" base_Constraint="_WdXkkPDfEeOKPKE9au0oug">
    <ruleId>CONF:1098-8324</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_UKVOIPDjEeOKPKE9au0oug" base_Class="_QoLWAPDjEeOKPKE9au0oug" templateId="2.16.840.1.113883.10.20.22.4.13" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8238</ruleId>
    <ruleId>CONF:1098-10520</ruleId>
    <ruleId>CONF:1098-32507</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_vaqLwPDjEeOKPKE9au0oug" base_Generalization="_QoLWAfDjEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_GUbcAPDoEeOKPKE9au0oug" base_Constraint="_GUa08PDoEeOKPKE9au0oug">
    <ruleId>CONF:1098-8274</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_i9ajwPDqEeOKPKE9au0oug" base_Class="_fCVOQPDqEeOKPKE9au0oug" templateId="2.16.840.1.113883.10.20.22.4.14" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7654</ruleId>
    <ruleId>CONF:1098-10521</ruleId>
    <ruleId>CONF:1098-32506</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_yyN5QPDqEeOKPKE9au0oug" base_Generalization="_fCV1UPDqEeOKPKE9au0oug"/>
  <CDA:ConstraintValidation xmi:id="_BIXNgPDtEeOKPKE9au0oug" base_Constraint="_BIWmcPDtEeOKPKE9au0oug">
    <ruleId>CONF:1098-7777</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_ia4XYPu_EeOyiMEKhdqMGA" base_Class="_aetyEPu_EeOyiMEKhdqMGA" templateId="2.16.840.1.113883.10.20.22.2.25" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8066</ruleId>
    <ruleId>CONF:1098-10380</ruleId>
    <ruleId>CONF:1098-32531</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_3X8AIPu_EeOyiMEKhdqMGA" base_Generalization="_aevnQPu_EeOyiMEKhdqMGA"/>
  <CDA:CDATemplate xmi:id="_EuKGcPvYEeOes-3T-2HryA" base_Class="_6M-msPvXEeOes-3T-2HryA" templateId="2.16.840.1.113883.10.20.22.2.37" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8174, CONF:1198-10384, CONF:1198-32538</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_SzN8oPvYEeOes-3T-2HryA" base_Generalization="_6NBC8PvXEeOes-3T-2HryA"/>
  <CDA:CDATemplate xmi:id="_h_DrIP49EeO_F_2qLv6FWQ" base_Class="_dz0ZwP49EeO_F_2qLv6FWQ" templateId="2.16.840.1.113883.10.20.22.2.30" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8082</ruleId>
    <ruleId>CONF:1098-10436</ruleId>
    <ruleId>CONF:1098-32590</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_loVe8P49EeO_F_2qLv6FWQ" base_Generalization="_dz3dEP49EeO_F_2qLv6FWQ"/>
  <CDA:CDATemplate xmi:id="_rcLJAP5BEeOmw9RN80Tpig" base_Class="_MLNngP5BEeOmw9RN80Tpig" templateId="2.16.840.1.113883.10.20.22.2.36" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8167, CONF:1198-10438, CONF:1198-32550</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_4dWgUP5BEeOmw9RN80Tpig" base_Generalization="_MLRR4P5BEeOmw9RN80Tpig"/>
  <CDA:CDATemplate xmi:id="_NcdsoP5EEeOBnLkJOVC8NQ" base_Class="_JFd3MP5EEeOBnLkJOVC8NQ" templateId="2.16.840.1.113883.10.20.22.2.34" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8097, CONF:1198-10439, CONF:1198-32551</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Sf6_cP5EEeOBnLkJOVC8NQ" base_Generalization="_JFgTcP5EEeOBnLkJOVC8NQ"/>
  <CDA:CDATemplate xmi:id="_qE4pIP5FEeO_r7yO9mhwnA" base_Class="_lLOykP5FEeO_r7yO9mhwnA" templateId="2.16.840.1.113883.10.20.22.2.28" templateVersion="2015-08-01">
    <ruleId>CONF:1198-8078, CONF:1198-10443, CONF:1198-32537</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_wmzeAP5FEeO_r7yO9mhwnA" base_Generalization="_lLR14P5FEeO_r7yO9mhwnA"/>
  <CDA:CDATemplate xmi:id="_Bht34ABzEeSjnfOPJpFg3A" base_Class="_5_O94AByEeSjnfOPJpFg3A" templateId="2.16.840.1.113883.10.20.22.2.29" templateVersion="2014-06-09">
    <ruleId>CONF:1098-8058</ruleId>
    <ruleId>CONF:1098-10445</ruleId>
    <ruleId>CONF:1098-32572</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_HrbBEABzEeSjnfOPJpFg3A" base_Generalization="_5_SoQAByEeSjnfOPJpFg3A"/>
  <CDA:CDATemplate xmi:id="_DJmw0AB1EeSLOb2O6vSPzg" base_Class="_80dMoAB0EeSLOb2O6vSPzg" templateId="2.16.840.1.113883.10.20.22.2.7" templateVersion="2014-06-09">
    <ruleId>CONF:1098-6270</ruleId>
    <ruleId>CONF:1098-6271</ruleId>
    <ruleId>CONF:1098-32532)</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_cd1OIAB1EeSLOb2O6vSPzg" base_Generalization="_80fo4AB0EeSLOb2O6vSPzg"/>
  <CDA:CDATemplate xmi:id="_SVwgAALoEeSBA9s7kRnaEg" base_Class="_N6wUUALoEeSBA9s7kRnaEg" templateId="2.16.840.1.113883.10.20.22.2.7.1" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7891</ruleId>
    <ruleId>CONF:1098-10447</ruleId>
    <ruleId>CONF:1098-32533</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_W4LiUALoEeSBA9s7kRnaEg" base_Generalization="_N6zXoALoEeSBA9s7kRnaEg"/>
  <CDA:ConstraintValidation xmi:id="_kd-XsALqEeSBA9s7kRnaEg" base_Constraint="_kd9woALqEeSBA9s7kRnaEg"/>
  <CDA:ConstraintValidation xmi:id="_vg8qUMnGEeSr1c1X9ACWbg" severity="INFO" base_Constraint="_vg8DQMnGEeSr1c1X9ACWbg">
    <ruleId>CONF:1098-19190</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YKtjsMw3EeS1kaU6ESW4Lg" severity="INFO" base_Constraint="_YKs8oMw3EeS1kaU6ESW4Lg">
    <ruleId>CONF:1098-19202</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_UsPa0My9EeSLqosJ4F90vA" severity="WARNING" base_Constraint="_UsOzwMy9EeSLqosJ4F90vA">
    <ruleId>CONF:1098-19207</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_oAf5wsy9EeSLqosJ4F90vA" severity="INFO" base_Constraint="_oAf5wMy9EeSLqosJ4F90vA">
    <ruleId>CONF:1098-19207</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_eSEocszEEeSLqosJ4F90vA" severity="WARNING" base_Constraint="_eSEocMzEEeSLqosJ4F90vA">
    <ruleId>CONF:1098-19202</ruleId>
  </CDA:ConstraintValidation>
  <CDA:PropertyValidation xmi:id="_yrtMU8zKEeSLqosJ4F90vA">
    <ruleId>CONF:7722</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_VIxWEszOEeSLqosJ4F90vA" base_Constraint="_VIxWEMzOEeSLqosJ4F90vA">
    <ruleId>CONF:1098-7766</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_KBl24BUHEeWCiY8iFDNBKA" severity="INFO" base_Constraint="_ykBmYPvZEeOes-3T-2HryA"/>
  <CDA:CDATemplate xmi:id="_2OfUeBSVEeGGzu7fmW9pXw" base_Class="_2OfUcxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.4.1">
    <ruleId>CONF:7273</ruleId>
    <ruleId>CONF:10452</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2PD8JhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-385</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OfUeRSVEeGGzu7fmW9pXw">
    <ruleId>C83-[CT-119-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:TextValue xmi:id="_2OlbARSVEeGGzu7fmW9pXw">
    <ruleId>CONF-384</ruleId>
  </CDA:TextValue>
  <CDA:CDATemplate xmi:id="_4L3_UBVfEeGQCvUGzi1kDQ" base_Class="_bRH8sBVeEeGQCvUGzi1kDQ" templateId="2.16.840.1.113883.10.20.22.2.4">
    <ruleId>CONF:7268, CONF:10451</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_shioIBneEeGs5a462vYX5Q" base_Class="_2OrhsRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.27">
    <ruleId>(CONF:7299</ruleId>
    <ruleId>CONF:10527</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2OxoZRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-413</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OxoaRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-415</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OxobRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-417</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OxocBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-419</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O3u4hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-420</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O3u5RSVEeGGzu7fmW9pXw">
    <ruleId>CONF-421</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OxoQBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_vIk70BneEeGs5a462vYX5Q" base_Class="_2OlbCRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.26">
    <ruleId>CONF:7281, CONF:10528</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2O91hRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-398</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91iRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-400</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91jRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-401</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91kBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-402</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91lBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-403</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91mBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-404</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2O91nxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-387</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2OrhoBSVEeGGzu7fmW9pXw">
    <ruleId>6.3.4.21.3</ruleId>
  </CDA:ConstraintValidation>
  <CDA:TextValue xmi:id="__bdqYBwhEeG_RY8fzJjtMw"/>
  <CDA:PropertyValidation xmi:id="_BKszYBwiEeG_RY8fzJjtMw" severity="WARNING">
    <ruleId>CONF:7271</ruleId>
    <ruleId>CONF:7272</ruleId>
  </CDA:PropertyValidation>
  <CDA:ConstraintValidation xmi:id="_hH31AOJvEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_X1YV8OJvEeG3cO7ebC3QuA">
    <ruleId>CONF:15943</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mlpsUOJvEeG3cO7ebC3QuA" severity="WARNING" base_Constraint="_acAZ8OJvEeG3cO7ebC3QuA">
    <ruleId>CONF:15944</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_pIQzAOJvEeG3cO7ebC3QuA" base_Constraint="_cfXY0OJvEeG3cO7ebC3QuA">
    <ruleId>CONF:15945</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="__AT6wL86EeOS5KuvmCHHew" base_Class="_4iF6IL86EeOS5KuvmCHHew" templateId="2.16.840.1.113883.10.20.22.4.79" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14871, CONF:1198-14872, CONF:1198-32541</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_JY_l0L87EeOS5KuvmCHHew" base_Generalization="_4iIWYL86EeOS5KuvmCHHew"/>
  <CDA:CDATemplate xmi:id="_D6_icPM4EeOUvapeh9bVvQ" base_Class="__zeTcPM3EeOUvapeh9bVvQ" templateId="2.16.840.1.113883.10.20.22.4.27" templateVersion="2014-06-09">
    <ruleId>CONF:1098-7299</ruleId>
    <ruleId>CONF:1098-10527</ruleId>
    <ruleId>CONF:1098-32574</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_NJM-cPM4EeOUvapeh9bVvQ" base_Generalization="__ze6gPM3EeOUvapeh9bVvQ"/>
  <CDA:CDATemplate xmi:id="_hsMpkPV2EeONioZkBKP8eQ" base_Class="_dDupoPV2EeONioZkBKP8eQ" templateId="2.16.840.1.113883.10.20.22.4.26" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7281, CONF:1198-10528, CONF:1198-32582</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_tTeOsPV2EeONioZkBKP8eQ" base_Generalization="_dDxF4PV2EeONioZkBKP8eQ"/>
  <CDA:CDATemplate xmi:id="_L4h0cAFUEeSmasYc71ZgMQ" base_Class="_8LkzYAFTEeSmasYc71ZgMQ" templateId="2.16.840.1.113883.10.20.22.2.4" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7268, CONF:1198-10451, CONF:1198-32584</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_43ldoAFUEeSmasYc71ZgMQ" base_Generalization="_8LnPoAFTEeSmasYc71ZgMQ"/>
  <CDA:CDATemplate xmi:id="_G02AkALzEeSM0Jd2D1FgKw" base_Class="_D3010ALzEeSM0Jd2D1FgKw" templateId="2.16.840.1.113883.10.20.22.2.4.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7273, CONF:1198-10452, CONF:1198-32585</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_X5hCgALzEeSM0Jd2D1FgKw" base_Generalization="_D33SEALzEeSM0Jd2D1FgKw"/>
  <CDA:ConstraintValidation xmi:id="_SjXJ4BaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_finGcM85EeSJsu9BbhWxmQ"/>
  <CDA:ConstraintValidation xmi:id="_S7QFcBaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_gt-tYM85EeSJsu9BbhWxmQ"/>
  <CDA:ConstraintValidation xmi:id="_TTcjABaXEeWPafwaDwpzXw" severity="INFO" base_Constraint="_h4JacM85EeSJsu9BbhWxmQ"/>
  <CDA:CDATemplate xmi:id="_qga1cOZkEeGINOJ_SD9_dA" base_Class="_lm3boOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.79">
    <ruleId>CONF:14871, CONF:14872</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_JtkN8OZlEeGINOJ_SD9_dA" base_Constraint="_Dk8p4OZlEeGINOJ_SD9_dA">
    <ruleId>CONF:14874, R2.1=CONF:1198-14874</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2Pxt8xSVEeGGzu7fmW9pXw" base_Class="_2Pxt6xSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.2.5" assigningAuthorityName="HL7">
    <ruleId>CONF:10457</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ZHedIBnTEeGs5a462vYX5Q" base_Class="_2Pxt0hSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.2.10" assigningAuthorityName="HL7">
    <ruleId>CONF:10465</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2Pxt3RSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:CDATemplate xmi:id="_TYymkBnUEeGs5a462vYX5Q" base_Class="_2RqkMBSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.18">
    <ruleId>CONF:10469</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_gliW4Ob3EeGINOJ_SD9_dA" base_Class="_4YgVsOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.77">
    <ruleId>CONF:14728</ruleId>
    <ruleId>CONF:14729</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_PMNZ8Ob_EeGINOJ_SD9_dA" base_Class="_7c4ssOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.76">
    <ruleId>CONF:14707, CONF:14708</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_VBPo4Jp8EeOK6dzbL4VoTA" base_Class="_94MpsJp7EeOK6dzbL4VoTA" templateId="2.16.840.1.113883.10.20.22.4.133">
    <ruleId>CONF:1098-29928</ruleId>
    <ruleId>CONF:1098-29929</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_XjgNcJqAEeOK6dzbL4VoTA" base_Class="_09uFMJp_EeOK6dzbL4VoTA" templateId="2.16.840.1.113883.10.20.22.4.114" templateVersion="2015-08-01">
    <ruleId>CONF:1198-29473</ruleId>
    <ruleId>CONF:1198-29474</ruleId>
    <ruleId>CONF:1198-32913</ruleId>
  </CDA:CDATemplate>
  <CDA:PropertyValidation xmi:id="_UhUHcJqDEeOK6dzbL4VoTA" severity="WARNING"/>
  <CDA:CDATemplate xmi:id="_Mci5IJ2LEeORR8_YW0n_jQ" base_Class="_CDn9gJ2LEeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.62">
    <ruleId>CONF:29899</ruleId>
    <ruleId>CONF:29901</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_CtZHYP4vEeObaveuCI77uA" base_Class="_-nZiYP4uEeObaveuCI77uA" templateId="2.16.840.1.113883.10.20.2.10" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7806, CONF:1198-10465, CONF:1198-32587</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_S90o8P4vEeObaveuCI77uA" base_Generalization="_-nb-oP4uEeObaveuCI77uA"/>
  <CDA:CDATemplate xmi:id="_2sh74IC3EeS108flGLVEBA" base_Class="_YYgjwIC3EeS108flGLVEBA" templateId="2.16.840.1.113883.10.20.22.4.76" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14707, CONF:1198-14708, CONF:1198-32604</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_dWmY8IC4EeS108flGLVEBA" base_Generalization="_YZLSIIC3EeS108flGLVEBA"/>
  <CDA:CDATemplate xmi:id="_yJUwEBkaEeGs5a462vYX5Q" base_Class="_2Uz-4xSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.33">
    <ruleId>CONF:10455</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_lhObMCUPEeGiOPpZVnfEJA" base_Class="_hD-z0CUPEeGiOPpZVnfEJA" templateId="2.16.840.1.113883.10.20.22.4.35" assigningAuthorityName="HL7">
    <ruleId>CONF:16760</ruleId>
    <ruleId>CONF:16761</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_55YpcBnSEeGs5a462vYX5Q" base_Class="_2RqkOxSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.5" assigningAuthorityName="HL7">
    <ruleId>CONF:10459</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_OJL6kCULEeGiOPpZVnfEJA" base_Class="_KtwVgCULEeGiOPpZVnfEJA" templateId="2.16.840.1.113883.10.20.22.4.33" assigningAuthorityName="HL7">
    <ruleId>CONF:16764, CONF:16765</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_41cG4BnXEeGs5a462vYX5Q" base_Class="_2PidURSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.24" assigningAuthorityName="HL7">
    <ruleId>CONF:7979, CONF:10394</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_onB14CUMEeGiOPpZVnfEJA" base_Class="_lBergCUMEeGiOPpZVnfEJA" templateId="2.16.840.1.113883.10.20.22.2.41" assigningAuthorityName="HL7">
    <ruleId>CONF:10395</ruleId>
  </CDA:CDATemplate>
  <CDA:ClassValidation xmi:id="_fQfngCUQEeGiOPpZVnfEJA" base_Class="_TytVkCUQEeGiOPpZVnfEJA">
    <ruleId>CONF:10397</ruleId>
  </CDA:ClassValidation>
  <CDA:CDATemplate xmi:id="_gKw3YCUQEeGiOPpZVnfEJA" base_Class="_TytVkCUQEeGiOPpZVnfEJA" templateId="2.16.840.1.113883.10.20.22.2.11.1" assigningAuthorityName="HL7"/>
  <CDA:CDATemplate xmi:id="__7eHsBnSEeGs5a462vYX5Q" base_Class="_2Poj7RSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.11" assigningAuthorityName="HL7">
    <ruleId>CONF:7816, CONF:10396</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_Z5_VgCUTEeGiOPpZVnfEJA" base_Class="_WikGsCUTEeGiOPpZVnfEJA" templateId="1.3.6.1.4.1.19376.1.5.3.1.3.26" assigningAuthorityName="HL7">
    <ruleId>CONF:10460</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_6g_c4CUTEeGiOPpZVnfEJA" base_Class="_38AXoCUTEeGiOPpZVnfEJA" templateId="2.16.840.1.113883.10.20.22.2.16" assigningAuthorityName="HL7">
    <ruleId>CONF:10398</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_WwJuIIz8EeOoMZgUoTghIg" base_Class="_POfwAIz7EeOoMZgUoTghIg" templateId="2.16.840.1.113883.10.20.22.4.141">
    <ruleId>CONF:1098-30834</ruleId>
    <ruleId>CONF:1098-30835</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_nwaUkI6FEeOB0eBUISUB4Q" base_Class="_ihaWkI55EeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.144">
    <ruleId>CONF:1098-31221</ruleId>
    <ruleId>CONF:1098-31222</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_KNWesJ2AEeORR8_YW0n_jQ" base_Class="_EHgh0J2AEeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.61">
    <ruleId>CONF:1098-29578</ruleId>
    <ruleId>CONF:1098-29579</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_3jVusK4qEeORf5eJaKt1KQ" base_Constraint="_vn4UAK4qEeORf5eJaKt1KQ">
    <ruleId>CONF:1098-31429</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_DU_AAMykEeO93sHu8pHB2g" base_Class="_EIeu8MyjEeO93sHu8pHB2g" templateId="2.16.840.1.113883.10.20.22.4.35" templateVersion="2016-03-01">
    <ruleId>CONF:1098-16760</ruleId>
    <ruleId>CONF:1098-16761</ruleId>
    <ruleId>CONF:1098-32513</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_UCOZYMykEeO93sHu8pHB2g" base_Generalization="_EIhLMMyjEeO93sHu8pHB2g"/>
  <CDA:CDATemplate xmi:id="_ex9owOEMEeOmBMTtnrPqww" base_Class="_Trd1cOEMEeOmBMTtnrPqww" templateId="2.16.840.1.113883.10.20.22.4.33" templateVersion="2015-08-01">
    <ruleId>CONF:1198-16764, CONF:1198-16765, CONF:1198-32534</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_oGRswOEMEeOmBMTtnrPqww" base_Generalization="_Trd1ceEMEeOmBMTtnrPqww"/>
  <CDA:CDATemplate xmi:id="_u9a4wPytEeOmn53IDV99zw" base_Class="_jfuGYPytEeOmn53IDV99zw" templateId="2.16.840.1.113883.10.20.22.2.24" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7979, CONF:1198-10394, CONF:1198-15355</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_FiUpEPyuEeOmn53IDV99zw" base_Generalization="_jfv7kPytEeOmn53IDV99zw"/>
  <CDA:CDATemplate xmi:id="_JxnhwPyzEeOfAK77IvEBUw" base_Class="_HlfBYPyzEeOfAK77IvEBUw" templateId="2.16.840.1.113883.10.20.22.2.11" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7816, CONF:1198-10396, CONF:1198-32561</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Wmtk4PyzEeOfAK77IvEBUw" base_Generalization="_HlhdoPyzEeOfAK77IvEBUw"/>
  <CDA:CDATemplate xmi:id="_Pcn8gAI0EeSRkrs1G7P_XQ" base_Class="_Jt0moAI0EeSRkrs1G7P_XQ" templateId="2.16.840.1.113883.10.20.22.2.11.1" templateVersion="2015-08-01">
    <ruleId>CONF:1198-7822, CONF:1198-10397, CONF:1198-32562</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_Y9iSEAI0EeSRkrs1G7P_XQ" base_Generalization="_Jt3p8AI0EeSRkrs1G7P_XQ"/>
  <CDA:CDATemplate xmi:id="_mE0V4DV1EeGaW4kr-GbV8Q" base_Class="_WPTWEDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.6.1.1">
    <ruleId>CONF:8525</ruleId>
    <ruleId>CONF:10454</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_psFXgDV1EeGaW4kr-GbV8Q" base_Class="_ZcC-4DVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.6.1.2">
    <ruleId>CONF:8531</ruleId>
    <ruleId>CONF:10456</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_On_EEEVEEeGAh_iQGJvI5w" base_Class="_H1UdcEVEEeGAh_iQGJvI5w" templateId="2.16.840.1.113883.10.20.6.2.1">
    <ruleId>CONF:8423</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_s48Y0Eb_EeGp67IkyTw1fg" base_Class="_pmiz8Eb_EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.13">
    <ruleId>CONF:15523</ruleId>
    <ruleId>CONF:15524</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_LY8_gEb1EeGp67IkyTw1fg" base_Class="_H_izsEb1EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.2">
    <ruleId>CONF:8440</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_fLTHoEcAEeGp67IkyTw1fg" base_Class="_crHC0EcAEeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.5">
    <ruleId>CONF:9200</ruleId>
    <ruleId>CONF:10530</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_s-z3oEb8EeGp67IkyTw1fg" base_Class="_J-F8UEb7EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.9">
    <ruleId>CONF:9266</ruleId>
    <ruleId>CONF:10531</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_SaY2YEb_EeGp67IkyTw1fg" base_Class="_Px2t4Eb_EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.14">
    <ruleId>CONF:9319</ruleId>
    <ruleId>CONF:10532</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_3twtoEb8EeGp67IkyTw1fg" base_Class="_1Zyf4Eb8EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.10"/>
  <CDA:CDATemplate xmi:id="_O_B8EEb6EeGp67IkyTw1fg" base_Class="_N2wscEb6EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.22.4.63">
    <ruleId>CONF:10918</ruleId>
    <ruleId>CONF:10919</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_AKJ9EEb7EeGp67IkyTw1fg" base_Class="_9o7WcEb6EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.8"/>
  <CDA:CDATemplate xmi:id="_xF17QEb4EeGp67IkyTw1fg" base_Class="_vjf-wEb4EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.6">
    <ruleId>CONF:10533</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_AByucEb_EeGp67IkyTw1fg" base_Class="_9xjKIEb-EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.12">
    <ruleId>CONF:9290</ruleId>
    <ruleId>CONF:10534</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="__So0UEb8EeGp67IkyTw1fg" base_Class="_9Yv6gEb8EeGp67IkyTw1fg" templateId="2.16.840.1.113883.10.20.6.2.11"/>
  <CDA:ConstraintValidation xmi:id="_mJkAUErcEeGJpZWiuxRVIw" base_Constraint="_d5wtUErcEeGJpZWiuxRVIw">
    <ruleId>CONF:9213</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_I9R24ErdEeGJpZWiuxRVIw" base_Constraint="_Be9EIErdEeGJpZWiuxRVIw">
    <ruleId>CONF:9211</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_6kdJoFwTEeG0y_7i0ygc4g" base_Constraint="_2p6msFwTEeG0y_7i0ygc4g">
    <ruleId>CONF:9225</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_HKW6MFwUEeG0y_7i0ygc4g" base_Constraint="_EbZZkFwUEeG0y_7i0ygc4g">
    <ruleId>CONF:9226</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_fPDpUFwUEeG0y_7i0ygc4g" base_Constraint="_arA2YFwUEeG0y_7i0ygc4g">
    <ruleId>CONF:9229</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_i7T4oFwUEeG0y_7i0ygc4g" base_Constraint="_hmNt8FwUEeG0y_7i0ygc4g">
    <ruleId>CONF:9230</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_qEMm4FwUEeG0y_7i0ygc4g" base_Constraint="_oCw6oFwUEeG0y_7i0ygc4g">
    <ruleId>CONF:9231</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_u1LpoFwUEeG0y_7i0ygc4g" base_Constraint="_sPmHcFwUEeG0y_7i0ygc4g">
    <ruleId>CONF:9232</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_7pnwAFwVEeG0y_7i0ygc4g" base_Constraint="_vIPrMErfEeGJpZWiuxRVIw">
    <ruleId>CONF:9251</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_90IfwFwVEeG0y_7i0ygc4g" base_Constraint="_0eEgYErfEeGJpZWiuxRVIw">
    <ruleId>CONF:9252</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="__Xz5AFwVEeG0y_7i0ygc4g" base_Constraint="_5IsccErfEeGJpZWiuxRVIw">
    <ruleId>CONF:9253</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ObkMEFwWEeG0y_7i0ygc4g" base_Constraint="_H4BmkFwWEeG0y_7i0ygc4g">
    <ruleId>CONF:9247</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_SjCXwFwWEeG0y_7i0ygc4g" base_Constraint="_QcZbYFwWEeG0y_7i0ygc4g">
    <ruleId>CONF:9248</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YcCLcFwWEeG0y_7i0ygc4g" base_Constraint="_VYPqUFwWEeG0y_7i0ygc4g">
    <ruleId>CONF:9249</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_0JlwQFwZEeG0y_7i0ygc4g" severity="WARNING" base_Constraint="_x-fKoFwZEeG0y_7i0ygc4g">
    <ruleId>CONF:9268</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_a1ea0OZJEeGINOJ_SD9_dA" base_Constraint="_Rqt7cOZJEeGINOJ_SD9_dA">
    <ruleId>CONF:17173</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MwKsAOZUEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_BCpU8OZUEeGINOJ_SD9_dA">
    <ruleId>CONF:9322</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_NlubAOZUEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_ChkKAOZUEeGINOJ_SD9_dA">
    <ruleId>CONF:9323</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_f7LdcOZWEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_USs-cOZWEeGINOJ_SD9_dA">
    <ruleId>CONF:15995</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iX1tIOZWEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_as4MkOZWEeGINOJ_SD9_dA">
    <ruleId>CONF:15996</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kmEfQOZWEeGINOJ_SD9_dA" base_Constraint="_cGcnkOZWEeGINOJ_SD9_dA">
    <ruleId>CONF:15997</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s5PSgOZaEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_k0_vQOZaEeGINOJ_SD9_dA">
    <ruleId>CONF:15938</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_uOLsMOZaEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_l-ML8OZaEeGINOJ_SD9_dA">
    <ruleId>CONF:15939</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_wRtDIOZaEeGINOJ_SD9_dA" base_Constraint="_nVEfUOZaEeGINOJ_SD9_dA">
    <ruleId>CONF:15940</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_U1uQkOaHEeOmzetP5oaH3A" base_Class="_Ao2HkOaHEeOmzetP5oaH3A" templateId="2.16.840.1.113883.10.20.6.2.2" templateVersion="2014-06-09">
    <ruleId>CONF:1098-16072</ruleId>
    <ruleId>CONF:1098-16073</ruleId>
    <ruleId>CONF:1098-32586</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_oFKg8OaHEeOmzetP5oaH3A" base_Generalization="_Ao2HkeaHEeOmzetP5oaH3A"/>
  <CDA:CDATemplate xmi:id="_CclwkIe-EeSBauRYePLghA" base_Class="_zKKIUIe9EeSBauRYePLghA" templateId="2.16.840.1.113883.10.20.6.2.1" templateVersion="2014-06-09">
    <ruleId>CONF:1098-30773</ruleId>
    <ruleId>CONF:1098-30774</ruleId>
    <ruleId>CONF:1098-32564</ruleId>
  </CDA:CDATemplate>
  <CDA:ConformsTo xmi:id="_QTsDQIe-EeSBauRYePLghA" base_Generalization="_zKKvYIe9EeSBauRYePLghA"/>
  <CDA:CDATemplate xmi:id="_SABeQOZjEeGINOJ_SD9_dA" base_Class="_jfoCUOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.75">
    <ruleId>CONF:14375, CONF:14376</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_hRKtEOZjEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_ckydgOZjEeGINOJ_SD9_dA">
    <ruleId>CONF:14697, CONF:14698</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_tDnHwOZgEeGINOJ_SD9_dA" base_Class="_gkBM0OZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.74">
    <ruleId>CONF:14255</ruleId>
    <ruleId>CONF:14256</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_BlR1AuZhEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_BlR1AOZhEeGINOJ_SD9_dA">
    <ruleId>CONF:15924</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Cs16AuZhEeGINOJ_SD9_dA" base_Constraint="_Cs16AOZhEeGINOJ_SD9_dA">
    <ruleId>CONF:15926</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ps-GoOZhEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_cjM0AOZhEeGINOJ_SD9_dA">
    <ruleId>CONF:14271</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_rHy4IOZcEeGINOJ_SD9_dA" base_Class="_dXKPQOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.73">
    <ruleId>CONF:14346</ruleId>
    <ruleId>CONF:14347</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_daqkUuZdEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_daqkUOZdEeGINOJ_SD9_dA">
    <ruleId>CONF:14342</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_gxDRUuZdEeGINOJ_SD9_dA" base_Constraint="_gxDRUOZdEeGINOJ_SD9_dA">
    <ruleId>CONF:14343</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_jpFOY-ZdEeGINOJ_SD9_dA" base_Constraint="_jpFOYOZdEeGINOJ_SD9_dA">
    <ruleId>CONF:14325</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kUOdIOZdEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_kUEsIOZdEeGINOJ_SD9_dA">
    <ruleId>CONF:14326</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_HWZw0OY6EeGINOJ_SD9_dA" base_Class="_1ZKPgOY2EeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.86">
    <ruleId>CONF:16722</ruleId>
    <ruleId>CONF:16723</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_YLYw8OY6EeGINOJ_SD9_dA" base_Constraint="_W_NRsOY6EeGINOJ_SD9_dA">
    <ruleId>CONF:16738</ruleId>
    <ruleId>CONF:14458</ruleId>
    <ruleId>CONF:16739</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_1IzigOY6EeGINOJ_SD9_dA" severity="INFO" base_Constraint="_u6PHcOY6EeGINOJ_SD9_dA">
    <ruleId>CONF:14639</ruleId>
    <ruleId>CONF:16755</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_iPVmUOYzEeGINOJ_SD9_dA" base_Class="_Zi33YOYxEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.69">
    <ruleId>CONF:14436</ruleId>
    <ruleId>CONF:14437</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_uIDgwOYzEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_rnS0MOYzEeGINOJ_SD9_dA">
    <ruleId>CONF:14440</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_aGxHQOY0EeGINOJ_SD9_dA" severity="INFO" base_Constraint="_WfZX8OY0EeGINOJ_SD9_dA">
    <ruleId>CONF:14888</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_OWVlIOY_EeGINOJ_SD9_dA" base_Class="__pNCUOY-EeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.72">
    <ruleId>CONF:14221</ruleId>
    <ruleId>CONF:14222</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_r4EksOY_EeGINOJ_SD9_dA" base_Constraint="_kF-hYOY_EeGINOJ_SD9_dA">
    <ruleId>CONF:14600</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_JguTIIoBEeOoMZgUoTghIg" base_Class="_Y_oGkIoAEeOoMZgUoTghIg" templateId="2.16.840.1.113883.10.20.22.4.126">
    <ruleId>CONF:29248</ruleId>
    <ruleId>CONF:29249</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_PtmfUI0mEeOB0eBUISUB4Q" base_Class="_-lJmEI0kEeOB0eBUISUB4Q" templateId="2.16.840.1.113883.10.20.22.4.125">
    <ruleId>CONF:29186, CONF:29187</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_PYeNIJm5EeOLJeQez13EkQ" base_Class="_kyeGAJm4EeOLJeQez13EkQ" templateId="2.16.840.1.113883.10.20.22.4.127">
    <ruleId>CONF:1098-27959</ruleId>
    <ruleId>CONF:1098-27960</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_AIPvkJ2DEeORR8_YW0n_jQ" base_Class="_4tfOMJ2CEeORR8_YW0n_jQ" templateId="2.16.840.1.113883.10.20.22.2.56" templateVersion="2015-08-01">
    <ruleId>CONF:1198-28293</ruleId>
    <ruleId>CONF:1198-28294</ruleId>
    <ruleId>CONF:1198-32793</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_E6468LkpEeODDJAC5t5vpw" base_Class="_6LYrULkoEeODDJAC5t5vpw" templateId="2.16.840.1.113883.10.20.22.4.75" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14375, CONF:1198-14376, CONF:1198-32566</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_hOCmgPiuEeOXlK95I8tUew" base_Class="_ze150PitEeOXlK95I8tUew" templateId="2.16.840.1.113883.10.20.22.4.74" templateVersion="2015-08-01">
    <ruleId>CONF:1198-14255, CONF:1198-14256, CONF:1198-32565</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_3zrgMvi6EeOXlK95I8tUew" severity="WARNING" base_Constraint="_3zrgMPi6EeOXlK95I8tUew">
    <ruleId>CONF:1198-14271</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_AhTkcKyxEeSB84STE1Ny6A" severity="WARNING" base_Constraint="_AhS9YKyxEeSB84STE1Ny6A">
    <ruleId>CONF:1198-14698</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Mknd8Ky0EeSB84STE1Ny6A" base_Constraint="_if4Q0KyzEeSB84STE1Ny6A">
    <ruleId>CONF:1198-32425, CONF:1198-32426</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConformsTo xmi:id="_7BzUMGvjEeeGpbQRBTrLBg" base_Generalization="_ze150fitEeOXlK95I8tUew"/>
  <CDA:ConstraintValidation xmi:id="_49Tp4GwEEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_C35gMGwEEeeGpbQRBTrLBg"/>
  <CDA:ConstraintValidation xmi:id="_9V1JUGwEEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_EoR4sGwEEeeGpbQRBTrLBg"/>
  <CDA:ConstraintValidation xmi:id="_99x6IGwEEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_GW59sGwEEeeGpbQRBTrLBg"/>
  <CDA:ConstraintValidation xmi:id="_-cl9EGwEEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_H5oUsGwEEeeGpbQRBTrLBg"/>
  <CDA:ConstraintValidation xmi:id="_KvvJsGwFEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_vI6fAGwBEeeGpbQRBTrLBg"/>
  <CDA:ConstraintValidation xmi:id="_LSPZ0GwFEeeGpbQRBTrLBg" severity="INFO" base_Constraint="_DFgJQGwCEeeGpbQRBTrLBg"/>
  <Ecore:EPackage xmi:id="_oABP4N6jEee0kIKIEebuqA" base_Package="_2B30sBSVEeGGzu7fmW9pXw" packageName="consol" nsPrefix="consol" nsURI="http://www.openhealthtools.org/mdht/uml/cda/consol" basePackage="org.openhealthtools.mdht.uml.cda" prefix="Consol">
    <annotation>http://www.eclipse.org/mdht/uml initializers='org.openhealthtools.mdht.uml.cda.consol'</annotation>
  </Ecore:EPackage>
  <Ecore:EClass xmi:id="_oBeocN6jEee0kIKIEebuqA" base_Class="_2DNRcBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId GeneralHeaderConstraintsTypeIdRoot GeneralHeaderConstraintsTypeIdExtension GeneralHeaderConstraintsSetIdVersionNumber GeneralHeaderConstraintsVersionNumberSetId GeneralHeaderConstraintsRealmCode GeneralHeaderConstraintsTypeId GeneralHeaderConstraintsId GeneralHeaderConstraintsCode GeneralHeaderConstraintsTitle GeneralHeaderConstraintsEffectiveTime GeneralHeaderConstraintsConfidentialityCodeP GeneralHeaderConstraintsLanguageCode GeneralHeaderConstraintsLanguageCodeP GeneralHeaderConstraintsAuthor GeneralHeaderConstraintsCustodian GeneralHeaderConstraintsRecordTarget GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName GeneralHeaderConstraintsAuthorAssignedAuthorPersonName GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityPersonName GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsDataEntererAssignedEntity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization GeneralHeaderConstraintsCustodianAssignedCustodian GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName GeneralHeaderConstraintsInformationRecipientIntendedRecipient GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP GeneralHeaderConstraintsLegalAuthenticatorSignatureCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCodeP GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityPersonName GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsInFulfillmentOfOrderId GeneralHeaderConstraintsInFulfillmentOfOrder GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime GeneralHeaderConstraintsDocumentationOfServiceEvent GeneralHeaderConstraintsAuthorizationConsentStatusCodeP GeneralHeaderConstraintsAuthorizationConsentStatusCode GeneralHeaderConstraintsAuthorizationConsent' templateId.root='2.16.840.1.113883.10.20.22.1.1' realmCode.code='US' confidentialityCode.codeSystem='2.16.840.1.113883.5.25' confidentialityCode.codeSystemName='ConfidentialityCode' constraints.validation.warning='GeneralHeaderConstraintsConfidentialityCode GeneralHeaderConstraintsLegalAuthenticator GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS GeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorTELUse GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityTELUse GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer' constraints.validation.dependOn.GeneralHeaderConstraintsConfidentialityCode='GeneralHeaderConstraintsConfidentialityCodeP' constraints.validation.info='GeneralHeaderConstraintsSetId GeneralHeaderConstraintsVersionNumber GeneralHeaderConstraintsDataEnterer GeneralHeaderConstraintsInformationRecipient GeneralHeaderConstraintsAuthenticator GeneralHeaderConstraintsComponentOf GeneralHeaderConstraintsInformant GeneralHeaderConstraintsSupportParticipant GeneralHeaderConstraintsInFulfillmentOf GeneralHeaderConstraintsDocumentationOf GeneralHeaderConstraintsAuthorization GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS GeneralHeaderConstraintsDataEntererAssignedEntityCodeP GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsParticipantSupportTime GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP GeneralHeaderConstraintsAuthorizationConsentId GeneralHeaderConstraintsAuthorizationConsentCode' constraints.validation.query='GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS GeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS GeneralHeaderConstraintsAuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorTELUse GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName GeneralHeaderConstraintsAuthorAssignedAuthorPersonName GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityTELUse GeneralHeaderConstraintsDataEntererAssignedEntityPersonName GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityCodeP GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsDataEntererAssignedEntity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization GeneralHeaderConstraintsCustodianAssignedCustodian GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization GeneralHeaderConstraintsInformationRecipientIntendedRecipient GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP GeneralHeaderConstraintsLegalAuthenticatorSignatureCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCodeP GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityPersonName GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsParticipantSupportTime GeneralHeaderConstraintsInFulfillmentOfOrderId GeneralHeaderConstraintsInFulfillmentOfOrder GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime GeneralHeaderConstraintsDocumentationOfServiceEventPerformer GeneralHeaderConstraintsDocumentationOfServiceEvent GeneralHeaderConstraintsAuthorizationConsentId GeneralHeaderConstraintsAuthorizationConsentCode GeneralHeaderConstraintsAuthorizationConsentStatusCodeP GeneralHeaderConstraintsAuthorizationConsentStatusCode GeneralHeaderConstraintsAuthorizationConsent' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorCode='GeneralHeaderConstraintsAuthorAssignedAuthorCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityCode='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorSignatureCode='GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorSignatureCode='GeneralHeaderConstraintsAuthenticatorSignatureCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityCode='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorizationConsentStatusCode='GeneralHeaderConstraintsAuthorizationConsentStatusCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTarget constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRole constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient PatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PatientRoleGeneralHeaderConstraintsUSRealmAddressUse PatientRoleGeneralHeaderConstraintsUSRealmAddressCity PatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization' constraints.validation.query='PatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PatientRoleGeneralHeaderConstraintsUSRealmAddressUse PatientRoleGeneralHeaderConstraintsUSRealmAddressUseP PatientRoleGeneralHeaderConstraintsUSRealmAddressCountry PatientRoleGeneralHeaderConstraintsUSRealmAddressState PatientRoleGeneralHeaderConstraintsUSRealmAddressCity PatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleTELUse' constraints.validation.warning='PatientRoleGeneralHeaderConstraintsUSRealmAddressUseP PatientRoleGeneralHeaderConstraintsUSRealmAddressCountry PatientRoleGeneralHeaderConstraintsUSRealmAddressState PatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatient constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode PatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent PatientGeneralHeaderConstraintsUSRealmPatientNameUse PatientGeneralHeaderConstraintsUSRealmPatientNameFamily PatientGeneralHeaderConstraintsUSRealmPatientNameGiven PatientGeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue' administrativeGenderCode.codeSystem='2.16.840.1.113883.5.1' administrativeGenderCode.codeSystemName='AdministrativeGenderCode' maritalStatusCode.codeSystem='2.16.840.1.113883.5.2' maritalStatusCode.codeSystemName='MaritalStatus' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication PatientGeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP' religiousAffiliationCode.codeSystem='2.16.840.1.113883.5.1076' religiousAffiliationCode.codeSystemName='ReligiousAffiliation' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace PatientGeneralHeaderConstraintsUSRealmPatientNameUseP PatientGeneralHeaderConstraintsUSRealmPatientNamePrefix PatientGeneralHeaderConstraintsUSRealmPatientNameSuffix' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP' raceCode.codeSystem='2.16.840.1.113883.6.238' raceCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP' sDTCRaceCode.codeSystem='2.16.840.1.113883.6.238' sDTCRaceCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP' ethnicGroupCode.codeSystem='2.16.840.1.113883.6.238' ethnicGroupCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP' constraints.validation.query='PatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent PatientGeneralHeaderConstraintsUSRealmPatientNameUse PatientGeneralHeaderConstraintsUSRealmPatientNameUseP PatientGeneralHeaderConstraintsUSRealmPatientNameFamily PatientGeneralHeaderConstraintsUSRealmPatientNameGiven PatientGeneralHeaderConstraintsUSRealmPatientNamePrefix PatientGeneralHeaderConstraintsUSRealmPatientNameSuffix PatientGeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear PatientGeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuardianGeneralHeaderConstraintsUSRealmAddressUse GuardianGeneralHeaderConstraintsUSRealmAddressCity GuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GuardianGeneralHeaderConstraintsUSRealmAddressUseP GuardianGeneralHeaderConstraintsUSRealmAddressCountry GuardianGeneralHeaderConstraintsUSRealmAddressState GuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom' constraints.validation.query='GuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuardianGeneralHeaderConstraintsUSRealmAddressUse GuardianGeneralHeaderConstraintsUSRealmAddressUseP GuardianGeneralHeaderConstraintsUSRealmAddressCountry GuardianGeneralHeaderConstraintsUSRealmAddressState GuardianGeneralHeaderConstraintsUSRealmAddressCity GuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTEL constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPerson constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode' modeCode.codeSystem='2.16.840.1.113883.5.60' modeCode.codeSystemName='LanguageAbilityMode' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP' proficiencyLevelCode.codeSystem='2.16.840.1.113883.5.61' proficiencyLevelCode.codeSystemName='LanguageAbilityProficiency' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientTS constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode ProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTEL constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRoleTEL constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRoleTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsComponentOf constraints.validation.error='GeneralHeaderConstraintsComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsComponentOfEncompassingEncounter constraints.validation.error='GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthor constraints.validation.error='GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS' constraints.validation.query='AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS' constraints.validation.warning='AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS' constraints.validation.info='AuthorGeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorAssignedAuthor constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorTelecom AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse AssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity AssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorCodeP AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP AssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry AssignedAuthorGeneralHeaderConstraintsUSRealmAddressState AssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorTELUse' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorCode='GeneralHeaderConstraintsAuthorAssignedAuthorCodeP' constraints.validation.query='AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse AssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP AssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry AssignedAuthorGeneralHeaderConstraintsUSRealmAddressState AssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity AssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDevice constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorAssignedAuthorPerson constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthorPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorAssignedAuthorTEL constraints.validation.warning='GeneralHeaderConstraintsAuthorAssignedAuthorTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDataEnterer constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDataEntererAssignedEntity constraints.validation.warning='GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityTELUse' constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.info='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityCode='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.query='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDataEntererAssignedEntityPerson constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDataEntererAssignedEntityTEL constraints.validation.warning='GeneralHeaderConstraintsDataEntererAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsCustodian constraints.validation.error='GeneralHeaderConstraintsCustodianAssignedCustodian'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsCustodianAssignedCustodian constraints.validation.error='GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganization constraints.validation.warning='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.error='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode CustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTEL constraints.validation.warning='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformationRecipient constraints.validation.error='GeneralHeaderConstraintsInformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformationRecipientIntendedRecipient constraints.validation.info='GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganization constraints.validation.error='GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformationRecipientIntendedRecipientPerson constraints.validation.error='GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsLegalAuthenticator constraints.validation.error='GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCode GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntity' signatureCode.code='S' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorSignatureCode='GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsLegalAuthenticatorAssignedEntity constraints.validation.info='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP' constraints.validation.error='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP' constraints.validation.query='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPerson constraints.validation.error='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTEL constraints.validation.warning='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthenticator constraints.validation.error='GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorSignatureCodeP GeneralHeaderConstraintsAuthenticatorAssignedEntity' signatureCode.code='S' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorSignatureCode='GeneralHeaderConstraintsAuthenticatorSignatureCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthenticatorAssignedEntity constraints.validation.warning='GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse' constraints.validation.error='GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.info='GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP' constraints.validation.query='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthenticatorAssignedEntityPerson constraints.validation.error='GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthenticatorAssignedEntityTEL constraints.validation.warning='GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformant constraints.validation.error='GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformantAssignedEntity constraints.validation.warning='GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.error='GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.info='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityCode='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.query='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformantAssignedEntityPerson constraints.validation.error='GeneralHeaderConstraintsInformantAssignedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformantRelatedEntity constraints.validation.warning='GeneralHeaderConstraintsInformantRelatedEntityAddr RelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP RelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry RelatedEntityGeneralHeaderConstraintsUSRealmAddressState RelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.error='GeneralHeaderConstraintsInformantRelatedEntityPerson RelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet RelatedEntityGeneralHeaderConstraintsUSRealmAddressUse RelatedEntityGeneralHeaderConstraintsUSRealmAddressCity RelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='RelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet RelatedEntityGeneralHeaderConstraintsUSRealmAddressUse RelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP RelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry RelatedEntityGeneralHeaderConstraintsUSRealmAddressState RelatedEntityGeneralHeaderConstraintsUSRealmAddressCity RelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode RelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsParticipantSupport constraints.validation.error='GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization' constraints.validation.info='GeneralHeaderConstraintsParticipantSupportTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInFulfillmentOf constraints.validation.error='GeneralHeaderConstraintsInFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInFulfillmentOfOrder constraints.validation.error='GeneralHeaderConstraintsInFulfillmentOfOrderId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDocumentationOf constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDocumentationOfServiceEvent constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime' constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDocumentationOfServiceEventPerformer1 constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity' functionCode.codeSystem='2.16.840.1.113883.5.88' functionCode.codeSystemName='ParticipationFunction' constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode' constraints.validation.info='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmAddress constraints.validation.error='GeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='GeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsUSRealmAddressPostalCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmPatientName constraints.validation.query='GeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent' constraints.validation.error='GeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsUSRealmPatientNameUse GeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsUSRealmPatientNameGiven' constraints.validation.info='GeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsUSRealmPatientNameSuffix'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorization constraints.validation.error='GeneralHeaderConstraintsAuthorizationConsent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorizationConsent constraints.validation.info='GeneralHeaderConstraintsAuthorizationConsentId GeneralHeaderConstraintsAuthorizationConsentCode' statusCode.code='completed' constraints.validation.error='GeneralHeaderConstraintsAuthorizationConsentStatusCode GeneralHeaderConstraintsAuthorizationConsentStatusCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorizationConsentStatusCode='GeneralHeaderConstraintsAuthorizationConsentStatusCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmDateAndTimeDT constraints.validation.error='GeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS' constraints.validation.warning='GeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS GeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.info='GeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmDateAndTimeDTM constraints.validation.error='GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheDayTS' constraints.validation.warning='GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheMinuteTS GeneralHeaderConstraintsUSRealmDateAndTimeDTMIfMorePreciseThanDayIncludeTimeZoneOffsetTS' constraints.validation.info='GeneralHeaderConstraintsUSRealmDateAndTimeDTMPreciseToTheSecondTS'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_odGNcN6jEee0kIKIEebuqA" base_Class="_2EAisBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergyProblemActTemplateId AllergyProblemActEffectiveTimeLow AllergyProblemActEffectiveTimeHigh AllergyProblemActClassCode AllergyProblemActMoodCode AllergyProblemActId AllergyProblemActCode AllergyProblemActStatusCode AllergyProblemActEffectiveTime AllergyProblemActAllergyObservation AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem' templateId.root='2.16.840.1.113883.10.20.22.4.30' classCode='ACT' moodCode='EVN' constraints.validation.query='AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyProblemActCD constraints.validation.error='AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_oeO14N6jEee0kIKIEebuqA" base_Generalization="_2F5ZERSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_oeQrEN6jEee0kIKIEebuqA" base_Class="_2EaLUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubstanceOrDeviceAllergyObservationTemplateId AllergyObservationReferenceValue SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator SubstanceOrDeviceAllergyObservationReactionInversionIndicator SubstanceOrDeviceAllergyObservationSeverityInversionIndicator AllergyObservationClassCode AllergyObservationMoodCode AllergyObservationId AllergyObservationCode AllergyObservationCodeP AllergyObservationStatusCode AllergyObservationEffectiveTime AllergyObservationValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI AllergyObservationParticipantParticipantRolePlayingEntityClassCode AllergyObservationParticipantParticipantRolePlayingEntityCode AllergyObservationParticipantParticipantRoleClassCode AllergyObservationParticipantParticipantRolePlayingEntity AllergyObservationParticipantTypeCode AllergyObservationParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.7' constraints.validation.warning='AllergyObservationValueOriginalText AllergyObservationOriginalTextReference AllergyObservationOriginalTextReferenceValue AllergyObservationReactionObservation AllergyObservationParticipant AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' constraints.validation.dependOn.AllergyObservationCode='AllergyObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='AllergyObservationSeverityObservation AllergyObservationAllergyStatusObservation AllergyObservationParticipantParticipantRolePlayingEntityCETranslation' constraints.validation.query='AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference AllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI AllergyObservationParticipantParticipantRolePlayingEntityClassCode AllergyObservationParticipantParticipantRolePlayingEntityCode AllergyObservationParticipantParticipantRoleClassCode AllergyObservationParticipantParticipantRolePlayingEntity AllergyObservationParticipantTypeCode AllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationParticipant typeCode='CSM' constraints.validation.error='AllergyObservationParticipantTypeCode AllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationParticipantParticipantRole classCode='MANU' constraints.validation.error='AllergyObservationParticipantParticipantRoleClassCode AllergyObservationParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationParticipantParticipantRolePlayingEntity constraints.validation.error='AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI AllergyObservationParticipantParticipantRolePlayingEntityClassCode AllergyObservationParticipantParticipantRolePlayingEntityCode' constraints.validation.warning='AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference PlayingEntityAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText' classCode='MMAT' constraints.validation.query='PlayingEntityAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText PlayingEntityAllergyObservationParticipantParticipantRolePlayingEntityCETranslation' constraints.validation.info='PlayingEntityAllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationParticipantParticipantRolePlayingEntityCE constraints.validation.warning='AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText' constraints.validation.info='AllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ohZeoN6jEee0kIKIEebuqA" base_Class="_2EqqABSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AgeObservationTemplateId AgeObservationValueUnits AgeObservationClassCode AgeObservationMoodCode AgeObservationCode AgeObservationCodeP AgeObservationStatusCode AgeObservationStatusCodeP AgeObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.31' classCode='OBS' moodCode='EVN' code.code='445518008' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Age At Onset' constraints.validation.dependOn.AgeObservationCode='AgeObservationCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_oh_7kN6jEee0kIKIEebuqA" base_Class="_2ExXsBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthStatusObservationTemplateId HealthStatusObservationHasTextReferenceValue HealthStatusObservationClassCode HealthStatusObservationMoodCode HealthStatusObservationCode HealthStatusObservationStatusCode HealthStatusObservationValue HealthStatusObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.5' constraints.validation.warning='HealthStatusObservationHasTextReference HealthStatusObservationTextReferenceValue HealthStatusObservationText' classCode='OBS' moodCode='EVN' code.code='11323-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Health status' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ojZCsN6jEee0kIKIEebuqA" base_Class="_2E_aIRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReactionObservationTemplateId ReactionObservationReferenceValue ReactionObservationSeverityObservationInversionInd ReactionObservationProcedureActivityProcedureInversionInd ReactionObservationMedicationActivityInversionInd ReactionObservationClassCode ReactionObservationMoodCode ReactionObservationId ReactionObservationCode ReactionObservationStatusCode ReactionObservationValue ReactionObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.9' constraints.validation.warning='ReactionObservationTextReference ReactionObservationTextReferenceValue ReactionObservationEffectiveTimeLow ReactionObservationEffectiveTimeHigh ReactionObservationText ReactionObservationEffectiveTime ReactionObservationSeverityObservation' classCode='OBS' moodCode='EVN' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='ReactionObservationProcedureActivityProcedure ReactionObservationMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_olCBcN6jEee0kIKIEebuqA" base_Class="_2FGu4hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SeverityObservationTemplateId SeverityObservationReferenceValue SeverityObservationClassCode SeverityObservationMoodCode SeverityObservationCode SeverityObservationStatusCode SeverityObservationValue SeverityObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.8' constraints.validation.warning='SeverityObservationTextReference SeverityObservationTextReferenceValue SeverityObservationText' classCode='OBS' moodCode='EVN' code.code='SEV' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Severity observation' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_om_JQN6jEee0kIKIEebuqA" base_Class="_2FRuAhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergyStatusObservationTemplateId AllergyStatusObservationClassCode AllergyStatusObservationMoodCode AllergyStatusObservationCode AllergyStatusObservationStatusCode AllergyStatusObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.28' classCode='OBS' moodCode='EVN' code.code='33999-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Status' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_onyagN6jEee0kIKIEebuqA" base_Class="_2FhloBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CommentActivityTemplateId CommentActivityTextReference CommentActivityTextReferenceValue CommentActivityReferenceValue CommentActivityClassCode CommentActivityMoodCode CommentActivityCode CommentActivityText' templateId.root='2.16.840.1.113883.10.20.22.4.64' classCode='ACT' moodCode='EVN' code.code='48767-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Annotation comment' constraints.validation.warning='CommentActivityAuthorParticipation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_oojPgN6jEee0kIKIEebuqA" base_Class="_2GHbgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationActivityTemplateId MedicationActivityTextReferenceValue MedicationActivityEffectiveTimeIVLTSorTS MedicationActivityEffectiveTimeIVLTSLow MedicationActivityEffectiveTimeIVLTSHigh MedicationActivityEffectiveTimeTSValue MedicationActivityEffectiveTimeOperator MedicationActivityDrugVehicleTypeCode MedicationActivityInstructionsInversionInd MedicationActivityRateQuantityUnit MedicationActivityClassCode MedicationActivityMoodCode MedicationActivityId MedicationActivityStatusCode MedicationActivityRouteCode MedicationActivityApproachSiteCode MedicationActivityAdministrationUnitCode MedicationActivityConsumable MedicationActivityConsumableMedicationInformation MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration' templateId.root='2.16.840.1.113883.10.20.22.4.16' constraints.validation.warning='MedicationActivityDoseQuantityorrateQuantity MedicationActivityTextReference MedicationActivityReferenceValue MedicationActivityEffectiveTimePIVLTS MedicationActivityDoseQuantityUnit MedicationActivityDoseQuantity MedicationActivityText' classCode='SBADM' constraints.validation.info='MedicationActivityCode MedicationActivityRouteCodeP MedicationActivityApproachSiteCodeP MedicationActivityRateQuantity MedicationActivityMaxDoseQuantity MedicationActivityAdministrationUnitCodeP MedicationActivityRepeatNumber MedicationActivityMedicationSupplyOrder MedicationActivityReactionObservation MedicationActivityPerformer MedicationActivityInstructions MedicationActivityIndication MedicationActivityMedicationDispense MedicationActivityDrugVehicle MedicationActivityPrecondition' routeCode.codeSystem='2.16.840.1.113883.3.26.1.1' routeCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.MedicationActivityRouteCode='MedicationActivityRouteCodeP' approachSiteCode.codeSystem='2.16.840.1.113883.6.96' approachSiteCode.codeSystemName='SNOMEDCT' administrationUnitCode.codeSystem='2.16.840.1.113883.3.26.1.1' administrationUnitCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.MedicationActivityAdministrationUnitCode='MedicationActivityAdministrationUnitCodeP' constraints.validation.query='MedicationActivityConsumableMedicationInformation MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationActivityConsumable constraints.validation.error='MedicationActivityConsumableMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationActivityPrecondition typeCode='PRCN' constraints.validation.error='MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ot0KAN6jEee0kIKIEebuqA" base_Class="_2G2bUxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProductInstanceTemplateId ProductInstanceClassCode ProductInstanceId ProductInstanceScopingEntity ProductInstancePlayingDevice ProductInstanceScopingEntityId' templateId.root='2.16.840.1.113883.10.20.22.4.37' classCode='MANU' constraints.validation.query='ProductInstanceScopingEntityId ProductInstancePlayingDeviceCode' constraints.validation.warning='ProductInstancePlayingDeviceCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProductInstanceScopingEntity constraints.validation.error='ProductInstanceScopingEntityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProductInstancePlayingDevice constraints.validation.warning='ProductInstancePlayingDeviceCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ouGd4N6jEee0kIKIEebuqA" base_Class="_2G8h9RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InstructionsTemplateId InstructionsTextReferenceValue InstructionsClassCode InstructionsMoodCode InstructionsCodeP InstructionsStatusCode' templateId.root='2.16.840.1.113883.10.20.22.4.20' constraints.validation.warning='InstructionsTextReference InstructionsReferenceValue InstructionsCode InstructionsText' classCode='ACT' moodCode='INT' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.InstructionsCode='InstructionsCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_owHQEN6jEee0kIKIEebuqA" base_Class="_2HIvMBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NonMedicinalSupplyActivityTemplateId NonMedicinalSupplyActivityProductInstanceTypeCode NonMedicinalSupplyActivityClassCode NonMedicinalSupplyActivityMoodCode NonMedicinalSupplyActivityId NonMedicinalSupplyActivityStatusCode NonMedicinalSupplyActivityProductInstance' templateId.root='2.16.840.1.113883.10.20.22.4.50' constraints.validation.warning='NonMedicinalSupplyActivityEffectiveTimeHigh NonMedicinalSupplyActivityEffectiveTime NonMedicinalSupplyActivityQuantity' classCode='SPLY'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_oxUJ8N6jEee0kIKIEebuqA" base_Class="_2H6yUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemConcernActTemplateId ProblemConcernActEffectiveTimeLow ProblemConcernActClassCode ProblemConcernActMoodCode ProblemConcernActId ProblemConcernActCode ProblemConcernActCodeP ProblemConcernActStatusCode ProblemConcernActEffectiveTime ProblemConcernActProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.3' constraints.validation.warning='ProblemConcernActEffectiveTimeHigh' classCode='ACT' moodCode='EVN' code.code='CONC' code.codeSystem='2.16.840.1.113883.5.6' code.codeSystemName='HL7ActClass' code.displayName='Concern' constraints.validation.dependOn.ProblemConcernActCode='ProblemConcernActCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_oyLFkN6jEee0kIKIEebuqA" base_Class="_2IJb0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ContinuityOfCareDocumentCode ContinuityOfCareDocumentCodeP ContinuityOfCareDocumentLanguageCode ContinuityOfCareDocumentDocumentationOf ContinuityOfCareDocumentAuthor ContinuityOfCareDocumentAllergiesSection ContinuityOfCareDocumentMedicationsSection ContinuityOfCareDocumentProblemSection ContinuityOfCareDocumentProceduresSection ContinuityOfCareDocumentResultsSection ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode ContinuityOfCareDocumentDocumentationOfServiceEventClassCode ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime ContinuityOfCareDocumentDocumentationOfServiceEvent ContinuityOfCareDocumentAuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocumentAuthorAssignedAuthorHasRepresentOrganization ContinuityOfCareDocumentAuthorAssignedAuthor' templateId.root='2.16.840.1.113883.10.20.22.1.2' code.code='34133-9' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Summarization of Episode Note' constraints.validation.dependOn.ContinuityOfCareDocumentCode='ContinuityOfCareDocumentCodeP' constraints.validation.info='ContinuityOfCareDocumentAdvanceDirectivesSection ContinuityOfCareDocumentEncountersSection ContinuityOfCareDocumentFamilyHistorySection ContinuityOfCareDocumentFunctionalStatusSection ContinuityOfCareDocumentImmunizationsSectionEntriesOptional ContinuityOfCareDocumentMedicalEquipmentSection ContinuityOfCareDocumentPayersSection ContinuityOfCareDocumentPlanOfCareSection ContinuityOfCareDocumentSocialHistorySection ContinuityOfCareDocumentVitalSignsSectionEntriesOptional ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity' constraints.validation.query='ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity ContinuityOfCareDocumentDocumentationOfServiceEventClassCode ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime ContinuityOfCareDocumentDocumentationOfServiceEventPerformer ContinuityOfCareDocumentDocumentationOfServiceEvent ContinuityOfCareDocumentAuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocumentAuthorAssignedAuthorHasRepresentOrganization ContinuityOfCareDocumentAuthorAssignedAuthor' constraints.validation.warning='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocumentDocumentationOfServiceEventPerformer'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentDocumentationOf constraints.validation.error='ContinuityOfCareDocumentDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentDocumentationOfServiceEvent classCode='PCPR' constraints.validation.error='ContinuityOfCareDocumentDocumentationOfServiceEventClassCode ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode' constraints.validation.warning='ContinuityOfCareDocumentDocumentationOfServiceEventPerformer ServiceEventPerformerContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier' constraints.validation.query='ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow ServiceEventPerformerContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode ServiceEventContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity' constraints.validation.info='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode ServiceEventContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentDocumentationOfServiceEventPerformer typeCode='PRF' constraints.validation.error='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode' constraints.validation.info='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity constraints.validation.warning='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier' constraints.validation.info='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode' constraints.validation.error='ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime constraints.validation.error='ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentAuthor constraints.validation.error='ContinuityOfCareDocumentAuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocumentAuthorAssignedAuthor constraints.validation.error='ContinuityOfCareDocumentAuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocumentAuthorAssignedAuthorHasRepresentOrganization'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ozabsN6jEee0kIKIEebuqA" base_Class="_2IWQIxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistorySectionTemplateId FamilyHistorySectionCode FamilyHistorySectionCodeP FamilyHistorySectionTitle FamilyHistorySectionText' templateId.root='2.16.840.1.113883.10.20.22.2.15' code.code='10157-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Family History' constraints.validation.info='FamilyHistorySectionFamilyHistory'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o0jEIN6jEee0kIKIEebuqA" base_Class="_2IbIoBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryOrganizerTemplateId FamilyHistoryOrganizerClassCode FamilyHistoryOrganizerMoodCode FamilyHistoryOrganizerStatusCode FamilyHistoryOrganizerStatusCodeP FamilyHistoryOrganizerFamilyHistoryObservation FamilyHistoryOrganizerSubject FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP FamilyHistoryOrganizerSubjectRelatedSubjectClassCode FamilyHistoryOrganizerSubjectRelatedSubjectCodeP FamilyHistoryOrganizerSubjectRelatedSubject' templateId.root='2.16.840.1.113883.10.20.22.4.45' classCode='CLUSTER' moodCode='EVN' statusCode.code='completed' constraints.validation.dependOn.FamilyHistoryOrganizerStatusCode='FamilyHistoryOrganizerStatusCodeP' constraints.validation.query='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonBirthTime FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedInd FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedTime FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCId FamilyHistoryOrganizerSubjectRelatedSubjectClassCode FamilyHistoryOrganizerSubjectRelatedSubjectCode FamilyHistoryOrganizerSubjectRelatedSubjectCodeP FamilyHistoryOrganizerSubjectRelatedSubjectSubject FamilyHistoryOrganizerSubjectRelatedSubject' constraints.validation.warning='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonBirthTime FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCId FamilyHistoryOrganizerSubjectRelatedSubjectCode FamilyHistoryOrganizerSubjectRelatedSubjectSubject' constraints.validation.info='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedInd FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFamilyHistoryOrganizerSubject constraints.validation.error='FamilyHistoryOrganizerSubjectRelatedSubject'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFamilyHistoryOrganizerSubjectRelatedSubject classCode='PRS' constraints.validation.error='FamilyHistoryOrganizerSubjectRelatedSubjectClassCode FamilyHistoryOrganizerSubjectRelatedSubjectCodeP' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='FamilyHistoryOrganizerSubjectRelatedSubjectCode FamilyHistoryOrganizerSubjectRelatedSubjectSubject'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFamilyHistoryOrganizerSubjectRelatedSubjectSubjectPerson administrativeGenderCode.codeSystem='2.16.840.1.113883.5.1' administrativeGenderCode.codeSystemName='AdministrativeGenderCode' constraints.validation.error='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP' constraints.validation.warning='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonBirthTime FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCId' constraints.validation.info='FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedInd FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o22xQN6jEee0kIKIEebuqA" base_Class="_2IpyIxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryObservationTemplateId FamilyHistoryObservationAgeObservationInversion FamilyHistoryObservationClassCode FamilyHistoryObservationMoodCode FamilyHistoryObservationId FamilyHistoryObservationCodeP FamilyHistoryObservationStatusCode FamilyHistoryObservationStatusCodeP FamilyHistoryObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.46' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='FamilyHistoryObservationCode FamilyHistoryObservationEffectiveTime' constraints.validation.dependOn.FamilyHistoryObservationCode='FamilyHistoryObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='FamilyHistoryObservationAgeObservation FamilyHistoryObservationFamilyHistoryDeathObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o5nxYN6jEee0kIKIEebuqA" base_Class="_2JKvgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SocialHistorySectionTemplateId SocialHistorySectionCode SocialHistorySectionCodeP SocialHistorySectionTitle SocialHistorySectionText' templateId.root='2.16.840.1.113883.10.20.22.2.17' code.code='29762-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Social history' constraints.validation.info='SocialHistorySectionSocialHistoryObservation SocialHistorySectionPregnancyObservation SocialHistorySectionTobaccoUse' constraints.validation.warning='SocialHistorySectionSmokingStatusObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o6U8AN6jEee0kIKIEebuqA" base_Class="_2JOZ4BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SocialHistoryObservationTemplateId SocialHistoryObservationReferenceValue SocialHistoryObservationClassCode SocialHistoryObservationMoodCode SocialHistoryObservationId SocialHistoryObservationStatusCode' templateId.root='2.16.840.1.113883.10.20.22.4.38' constraints.validation.warning='SocialHistoryObservationOriginalText SocialHistoryObservationReference SocialHistoryObservationCode SocialHistoryObservationCodeP SocialHistoryObservationValue' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.SocialHistoryObservationCode='SocialHistoryObservationCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_o7jrEN6jEee0kIKIEebuqA" base_Generalization="_ksO6UBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_o7k5MN6jEee0kIKIEebuqA" base_Class="_2Js7AxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultsSectionEntriesOptionalTemplateId ResultsSectionEntriesOptionalCode ResultsSectionEntriesOptionalCodeP ResultsSectionEntriesOptionalTitle ResultsSectionText ResultsSectionResultOrganizer' templateId.root='2.16.840.1.113883.10.20.22.2.3.1' constraints.validation.dependOn.ResultsSectionEntriesOptionalCode='ResultsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o76QYN6jEee0kIKIEebuqA" base_Class="_2JxzgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerClassCode ResultOrganizerMoodCode ResultOrganizerId ResultOrganizerStatusCode ResultOrganizerStatusCodeP ResultOrganizerCode ResultOrganizerResultObservation' templateId.root='2.16.840.1.113883.10.20.22.4.1' constraints.validation.warning='ResultOrganizerCodeValue ResultOrganizerClassCodeValue' moodCode='EVN' constraints.validation.dependOn.ResultOrganizerStatusCode='ResultOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o9e9sN6jEee0kIKIEebuqA" base_Class="_2J1d4BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationTextReferenceValue ResultObservationNoObservationRangeCode ResultObservationClassCode ResultObservationMoodCode ResultObservationId ResultObservationCode ResultObservationStatusCode ResultObservationStatusCodeP ResultObservationEffectiveTime ResultObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.2' constraints.validation.warning='ResultObservationTextReference ResultObservationReferenceValue ResultObservationCodeValue ResultObservationText ResultObservationInterpretationCode' constraints.validation.info='ResultObservationAuthorMultiplicity ResultObservationMethodCode ResultObservationTargetSiteCode' classCode='OBS' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o_AnsN6jEee0kIKIEebuqA" base_Class="_2KEucBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicalEquipmentSectionTemplateId MedicalEquipmentSectionCode MedicalEquipmentSectionCodeP MedicalEquipmentSectionTitle MedicalEquipmentSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.23' code.code='46264-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Medical Equipment' constraints.validation.warning='MedicalEquipmentSectionNonMedicinalSupplyActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_o_2VMN6jEee0kIKIEebuqA" base_Class="_2KKOBhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FunctionalStatusSectionTemplateId FunctionalStatusSectionCode FunctionalStatusSectionTitle FunctionalStatusSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.14' code.code='47420-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Functional status assessment' constraints.validation.info='FunctionalStatusSectionFunctionalStatusResultOrganizer FunctionalStatusSectionCognitiveStatusResultOrganizer FunctionalStatusSectionFunctionalStatusResultObservation FunctionalStatusSectionCognitiveStatusResultObservation FunctionalStatusSectionFunctionalStatusProblemObservation FunctionalStatusSectionCognitiveStatusProblemObservation FunctionalStatusSectionCaregiverCharacteristics FunctionalStatusSectionAssessmentScaleObservation FunctionalStatusSectionNonMedicinalSupplyActivity FunctionalStatusSectionPressureUlcerObservation FunctionalStatusSectionNumberOfPressureUlcersObservation FunctionalStatusSectionHighestPressureUlcerStage'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pAEXoN6jEee0kIKIEebuqA" base_Generalization="_8UhPsBVfEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pAFlwN6jEee0kIKIEebuqA" base_Class="_2KgzUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectivesSectionEntriesOptionalTemplateId AdvanceDirectivesSectionCode AdvanceDirectivesSectionCodeP AdvanceDirectivesSectionTitle AdvanceDirectivesSectionText AdvanceDirectivesSectionAdvanceDirectiveObservation' templateId.root='2.16.840.1.113883.10.20.22.2.21.1' code.code='42348-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Advance directives' constraints.validation.dependOn.AdvanceDirectivesSectionCode='AdvanceDirectivesSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pBEdMN6jEee0kIKIEebuqA" base_Class="_2KlEwBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectiveObservationTemplateId AdvanceDirectiveObservationHasStartingTime AdvanceDirectiveObservationHasEndingTime AdvanceDirectiveObservationClassCode AdvanceDirectiveObservationMoodCode AdvanceDirectiveObservationId AdvanceDirectiveObservationCodeP AdvanceDirectiveObservationStatusCode AdvanceDirectiveObservationEffectiveTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole AdvanceDirectiveObservationReferenceExternalDocumentId AdvanceDirectiveObservationReferenceTypeCode AdvanceDirectiveObservationReferenceExternalDocument' templateId.root='2.16.840.1.113883.10.20.22.4.48' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='AdvanceDirectiveObservationCode AdvanceDirectiveObservationVerifier AdvanceDirectiveObservationCustodian AdvanceDirectiveObservationReference AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom' constraints.validation.dependOn.AdvanceDirectiveObservationCode='AdvanceDirectiveObservationCodeP' statusCode.code='completed' constraints.validation.query='AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRoleTelecom AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole AdvanceDirectiveObservationReferenceExternalDocumentTextMediaType AdvanceDirectiveObservationReferenceExternalDocumentTextReference AdvanceDirectiveObservationReferenceExternalDocumentId AdvanceDirectiveObservationReferenceExternalDocumentText AdvanceDirectiveObservationReferenceTypeCode AdvanceDirectiveObservationReferenceExternalDocument' constraints.validation.info='AdvanceDirectiveObservationReferenceExternalDocumentTextMediaType AdvanceDirectiveObservationReferenceExternalDocumentTextReference AdvanceDirectiveObservationReferenceExternalDocumentText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationReference typeCode='REFR' constraints.validation.error='AdvanceDirectiveObservationReferenceTypeCode AdvanceDirectiveObservationReferenceExternalDocument'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationReferenceExternalDocument constraints.validation.info='AdvanceDirectiveObservationReferenceExternalDocumentTextMediaType AdvanceDirectiveObservationReferenceExternalDocumentTextReference AdvanceDirectiveObservationReferenceExternalDocumentText' constraints.validation.error='AdvanceDirectiveObservationReferenceExternalDocumentId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationCustodian typeCode='CST' constraints.validation.error='AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationCustodianCustodianRole constraints.validation.warning='AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom' classCode='AGNT' constraints.validation.error='AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationCustodianCustodianRoleCustodianEntity constraints.validation.error='AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservationVerifier constraints.validation.warning='AdvanceDirectiveObservationVerifierTime' typeCode='VRF' constraints.validation.error='AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pDna4N6jEee0kIKIEebuqA" base_Generalization="_EEbhsBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pDqeMN6jEee0kIKIEebuqA" base_Class="_2LMIwBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergiesSectionEntriesOptionalTemplateId AllergiesSectionCode AllergiesSectionCodeP AllergiesSectionTitle AllergiesSectionText AllergiesSectionAllergyProblemAct' templateId.root='2.16.840.1.113883.10.20.22.2.6.1' code.code='48765-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Allergies, adverse reactions, alerts' constraints.validation.dependOn.AllergiesSectionCode='AllergiesSectionCodeP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pEoHgN6jEee0kIKIEebuqA" base_Generalization="_blmF8BVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pEpVoN6jEee0kIKIEebuqA" base_Class="_2LSPYBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemSectionEntriesOptionalTemplateId ProblemSectionEntriesOptionalCode ProblemSectionEntriesOptionalCodeP ProblemSectionEntriesOptionalText ProblemSectionEntriesOptionalTitle ProblemSectionEntriesOptionalProblemConcern' templateId.root='2.16.840.1.113883.10.20.22.2.5.1' constraints.validation.dependOn.ProblemSectionEntriesOptionalCode='ProblemSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pE_T4N6jEee0kIKIEebuqA" base_Generalization="_KVkvoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pFBJEN6jEee0kIKIEebuqA" base_Class="_2LWg0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncountersSectionEntriesOptionalTemplateId EncountersSectionEntriesOptionalCode EncountersSectionEntriesOptionalCodeP EncountersSectionEntriesOptionalText EncountersSectionEntriesOptionalTitle EncountersSectionEncounterActivities' templateId.root='2.16.840.1.113883.10.20.22.2.22.1' constraints.validation.dependOn.EncountersSectionEntriesOptionalCode='EncountersSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pFWgQN6jEee0kIKIEebuqA" base_Class="_2LayQBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterActivitiesTemplateId EncounterActivitiesCodeOriginalTextReferenceValue EncounterActivitiesSdtcDDCFromNUBCOrDD EncounterActivitiesClassCode EncounterActivitiesMoodCode EncounterActivitiesId EncounterActivitiesEffectiveTime EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.49' constraints.validation.warning='EncounterActivitiesCodeOriginalText EncounterActivitiesCodeOriginalTextReference EncounterActivitiesReferenceValue EncounterActivitiesServiceDeliveryTypeCode EncounterActivitiesCode' classCode='ENC' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.12' code.codeSystemName='CPT-4' constraints.validation.info='EncounterActivitiesSDTCDischargeDispositionCode EncounterActivitiesServiceDeliveryLocation EncounterActivitiesIndication EncounterActivitiesEncounterPerformer EncounterActivitiesEncounterDiagnosis EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode' constraints.validation.query='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEncounterActivitiesEncounterPerformer constraints.validation.error='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity constraints.validation.info='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pGqu4N6jEee0kIKIEebuqA" base_Class="_2LiHABSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ServiceDeliveryLocationTemplateId ServiceDeliveryLocationHasPlayingEntityClassCode ServiceDeliveryLocationClassCode ServiceDeliveryLocationCode' templateId.root='2.16.840.1.113883.10.20.22.4.32' constraints.validation.info='ServiceDeliveryLocationHasPlayingEntity ServiceDeliveryLocationHasPlayingEntityName' classCode='SDLOC' code.codeSystem='2.16.840.1.113883.6.259' code.codeSystemName='HealthcareServiceLocation' constraints.validation.warning='ServiceDeliveryLocationAddr ServiceDeliveryLocationTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pHWrYN6jEee0kIKIEebuqA" base_Class="_2L7voBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationsSectionEntriesOptionalTemplateId ImmunizationsSectionCode ImmunizationsSectionCodeP ImmunizationsSectionTitle ImmunizationsSectionText ImmunizationsSectionImmunization' templateId.root='2.16.840.1.113883.10.20.22.2.2.1' code.code='11369-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ImmunizationsSectionCode='ImmunizationsSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pIGSQN6jEee0kIKIEebuqA" base_Class="_2MAoIBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationActivityTemplateId ImmunizationActivityTextReferenceValue ImmunizationActivityInstructionInversion ImmunizationActivityDrugVehicleTypeCode ImmunizationActivityClassCode ImmunizationActivityMoodCode ImmunizationActivityNegationInd ImmunizationActivityId ImmunizationActivityStatusCode ImmunizationActivityEffectiveTime ImmunizationActivityRouteCode ImmunizationActivityApproachSiteCode ImmunizationActivityAdministrationUnitCode ImmunizationActivityConsumable ImmunizationActivityConsumableImmunizationMedicationInformation ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration' templateId.root='2.16.840.1.113883.10.20.22.4.52' constraints.validation.warning='ImmunizationActivityTextReference ImmunizationActivityReferenceValue ImmunizationActivityDoseQuantityUnit ImmunizationActivityText ImmunizationActivityDoseQuantity ImmunizationActivityPerformer' classCode='SBADM' constraints.validation.info='ImmunizationActivityCode ImmunizationActivityRepeatNumber ImmunizationActivityRouteCodeP ImmunizationActivityApproachSiteCodeP ImmunizationActivityAdministrationUnitCodeP ImmunizationActivityDrugVehicle ImmunizationActivityIndication ImmunizationActivityInstructions ImmunizationActivityMedicationDispense ImmunizationActivityReactionObservation ImmunizationActivityImmunizationRefusalReason ImmunizationActivityMedicationSupplyOrder ImmunizationActivityPrecondition' routeCode.codeSystem='2.16.840.1.113883.3.26.1.1' routeCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.ImmunizationActivityRouteCode='ImmunizationActivityRouteCodeP' approachSiteCode.codeSystem='2.16.840.1.113883.6.96' approachSiteCode.codeSystemName='SNOMEDCT' administrationUnitCode.codeSystem='2.16.840.1.113883.3.26.1.1' administrationUnitCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.ImmunizationActivityAdministrationUnitCode='ImmunizationActivityAdministrationUnitCodeP' constraints.validation.query='ImmunizationActivityConsumableImmunizationMedicationInformation ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivityConsumable constraints.validation.error='ImmunizationActivityConsumableImmunizationMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivityPrecondition typeCode='PRCN' constraints.validation.error='ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pMJEwN6jEee0kIKIEebuqA" base_Class="_2MV_UBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PayersSectionTemplateId PayersSectionCode PayersSectionCodeP PayersSectionTitle PayersSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.18' code.code='48768-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Payers' constraints.validation.warning='PayersSectionCoverageActivity'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pMZjcN6jEee0kIKIEebuqA" base_Generalization="_UeEpoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pMaxkN6jEee0kIKIEebuqA" base_Class="_2NIpgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionCode MedicationsSectionCodeP MedicationsSectionTitle MedicationsSectionText MedicationsSectionMedication' templateId.root='2.16.840.1.113883.10.20.22.2.1.1' code.code='10160-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='History of medication use' constraints.validation.dependOn.MedicationsSectionCode='MedicationsSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pNK_gN6jEee0kIKIEebuqA" base_Class="_2NP-QxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareSectionTemplateId PlanOfCareSectionCode PlanOfCareSectionCodeP PlanOfCareSectionTitle PlanOfCareSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.10' code.code='18776-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Treatment plan' constraints.validation.info='PlanOfCareSectionPlanOfCareActivityAct PlanOfCareSectionPlanOfCareActivityEncounter PlanOfCareSectionPlanOfCareActivityObservation PlanOfCareSectionPlanOfCareActivityProcedure PlanOfCareSectionPlanOfCareActivitySubstanceAdministration PlanOfCareSectionPlanOfCareActivitySupply PlanOfCareSectionInstructions'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pNcsUN6jEee0kIKIEebuqA" base_Class="_2NWE5xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityActTemplateId PlanOfCareActivityActClassCode PlanOfCareActivityActMoodCode PlanOfCareActivityActId' templateId.root='2.16.840.1.113883.10.20.22.4.39' classCode='ACT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pObjwN6jEee0kIKIEebuqA" base_Class="_2NWFBBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityEncounterTemplateId PlanOfCareActivityEncounterClassCode PlanOfCareActivityEncounterMoodCode PlanOfCareActivityEncounterId' templateId.root='2.16.840.1.113883.10.20.22.4.40' classCode='ENC'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pPabMN6jEee0kIKIEebuqA" base_Class="_2NcLjhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityObservationTemplateId PlanOfCareActivityObservationClassCode PlanOfCareActivityObservationMoodCode PlanOfCareActivityObservationId' templateId.root='2.16.840.1.113883.10.20.22.4.44' classCode='OBS'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pQZ5sN6jEee0kIKIEebuqA" base_Class="_2NiSKhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityProcedureTemplateId PlanOfCareActivityProcedureClassCode PlanOfCareActivityProcedureMoodCode PlanOfCareActivityProcedureId' templateId.root='2.16.840.1.113883.10.20.22.4.41' classCode='PROC'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pRbNYN6jEee0kIKIEebuqA" base_Class="_2NoYwxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivitySubstanceAdministrationTemplateId PlanOfCareActivitySubstanceAdministrationClassCode PlanOfCareActivitySubstanceAdministrationMoodCode PlanOfCareActivitySubstanceAdministrationId' templateId.root='2.16.840.1.113883.10.20.22.4.42' classCode='SBADM'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pSm5IN6jEee0kIKIEebuqA" base_Class="_2NoY5BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivitySupplyTemplateId PlanOfCareActivitySupplyClassCode PlanOfCareActivitySupplyMoodCode PlanOfCareActivitySupplyId' templateId.root='2.16.840.1.113883.10.20.22.4.43' classCode='SPLY'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pTpa8N6jEee0kIKIEebuqA" base_Class="_2N6soBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PregnancyObservationTemplateId PregnancyObservationClassCode PregnancyObservationMoodCode PregnancyObservationCode PregnancyObservationCodeP PregnancyObservationStatusCode PregnancyObservationValue PregnancyObservationValueP' templateId.root='2.16.840.1.113883.10.20.15.3.8' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.PregnancyObservationCode='PregnancyObservationCodeP' statusCode.code='completed' value.code='77386006' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' value.displayName='Pregnant' constraints.validation.warning='PregnancyObservationEffectiveTime' constraints.validation.info='PregnancyObservationEstimatedDateOfDelivery'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pUM0kN6jEee0kIKIEebuqA" base_Generalization="_gNO_cBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pUOCsN6jEee0kIKIEebuqA" base_Class="_2OAzQRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProceduresSectionEntriesOptionalTemplateId ProceduresSectionHasProcedureActivity ProceduresSectionTitle ProceduresSectionEntriesOptionalCode ProceduresSectionEntriesOptionalCodeP ProceduresSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.7.1' constraints.validation.dependOn.ProceduresSectionEntriesOptionalCode='ProceduresSectionEntriesOptionalCodeP' constraints.validation.info='ProceduresSectionProcedureActivityProcedure ProceduresSectionProcedureActivityObservation ProceduresSectionProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pUlPEN6jEee0kIKIEebuqA" base_Class="_2OG58RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityProcedureTemplateId ProcedureActivityProcedureReferenceValue ProcedureActivityProcedureEncounterInversion ProcedureActivityProcedureProductInstanceTypeCode ProcedureActivityProcedureServiceDeliveryLocationTypeCode ProcedureActivityProcedureInstructionsInversion ProcedureActivityProcedureClassCode ProcedureActivityProcedureMoodCode ProcedureActivityProcedureId ProcedureActivityProcedureCode ProcedureActivityProcedureStatusCode ProcedureActivityProcedurePriorityCode ProcedureActivityProcedureTargetSiteCode ProcedureActivityProcedureProcedureSpecimenSpecimenRole ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationTelecom ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterClassCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterMoodCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterId ProcedureActivityProcedureEntryRelationshipInversionInd ProcedureActivityProcedureEntryRelationshipTypeCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter' templateId.root='2.16.840.1.113883.10.20.22.4.14' constraints.validation.warning='ProcedureActivityProcedureCodeCodeSystems ProcedureActivityProcedureCodeOriginalText ProcedureActivityProcedureOriginalTextReference ProcedureActivityProcedureOriginalTextReferenceValue ProcedureActivityProcedureEffectiveTime ProcedureActivityProcedureTargetSiteCodeP ProcedureActivityProcedurePerformer ProcedureActivityProcedureProcedureSpecimenSpecimentRoleId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityRepresentedOrganization' classCode='PROC' priorityCode.codeSystem='2.16.840.1.113883.5.7' priorityCode.codeSystemName='ActPriority' constraints.validation.info='ProcedureActivityProcedurePriorityCodeP ProcedureActivityProcedureMethodCode ProcedureActivityProcedureIndication ProcedureActivityProcedureSpecimen ProcedureActivityProcedureServiceDeliveryLocation ProcedureActivityProcedureMedicationActivity ProcedureActivityProcedurePatientInstruction ProcedureActivityProcedureProductInstance ProcedureActivityProcedureEntryRelationship ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationName' constraints.validation.dependOn.ProcedureActivityProcedurePriorityCode='ProcedureActivityProcedurePriorityCodeP' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProcedureActivityProcedureTargetSiteCode='ProcedureActivityProcedureTargetSiteCodeP' constraints.validation.query='ProcedureActivityProcedureProcedureSpecimenSpecimenRole ProcedureActivityProcedureProcedureSpecimenSpecimentRoleId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationName ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationTelecom ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityRepresentedOrganization ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterClassCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterMoodCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterId ProcedureActivityProcedureEntryRelationshipInversionInd ProcedureActivityProcedureEntryRelationshipTypeCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureProcedureSpecimen constraints.validation.error='ProcedureActivityProcedureProcedureSpecimenSpecimenRole' constraints.validation.warning='ProcedureActivityProcedureProcedureSpecimenSpecimentRoleId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureProcedureActivityPerformer constraints.validation.error='ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntity constraints.validation.error='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityId ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom' constraints.validation.warning='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganization constraints.validation.warning='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationId' constraints.validation.info='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationName' constraints.validation.error='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationTelecom ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationAddr'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureEntryRelationship inversionInd='true' constraints.validation.error='ProcedureActivityProcedureEntryRelationshipInversionInd ProcedureActivityProcedureEntryRelationshipTypeCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter' typeCode='COMP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter classCode='ENC' constraints.validation.error='ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterClassCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterMoodCode ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterId' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_pblO8N6jEee0kIKIEebuqA" base_Generalization="_px07IBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_pbnEIN6jEee0kIKIEebuqA" base_Class="_2OfUcxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionCode VitalSignsSectionCodeP VitalSignsSectionText VitalSignsSectionEntriesOptionalTitle VitalSignsSectionVitalSignsOrganizer' templateId.root='2.16.840.1.113883.10.20.22.2.4.1' code.code='8716-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Vital Signs' constraints.validation.dependOn.VitalSignsSectionCode='VitalSignsSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pcAswN6jEee0kIKIEebuqA" base_Class="_2OlbCRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsOrganizerTemplateId VitalSignsOrganizerClassCode VitalSignsOrganizerMoodCode VitalSignsOrganizerId VitalSignsOrganizerCode VitalSignsOrganizerCodeP VitalSignsOrganizerStatusCode VitalSignsOrganizerStatusCodeP VitalSignsOrganizerEffectiveTime VitalSignsOrganizerVitalSignObservation' templateId.root='2.16.840.1.113883.10.20.22.4.26' classCode='CLUSTER' moodCode='EVN' code.code='46680005' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Vital signs' statusCode.code='completed' constraints.validation.dependOn.VitalSignsOrganizerStatusCode='VitalSignsOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pdHgAN6jEee0kIKIEebuqA" base_Class="_2OrhsRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignObservationTemplateId VitalSignObservationTextReferenceValue VitalSignObservationClassCode VitalSignObservationMoodCode VitalSignObservationId VitalSignObservationCodeP VitalSignObservationStatusCode VitalSignObservationStatusCodeP VitalSignObservationEffectiveTime VitalSignObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.27' constraints.validation.warning='VitalSignObservationTextReference VitalSignObservationReferenceValue VitalSignObservationCode VitalSignObservationText' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.VitalSignObservationCode='VitalSignObservationCodeP' statusCode.code='completed' constraints.validation.info='VitalSignObservationInterpretationCode VitalSignObservationMethodCode VitalSignObservationTargetSiteCode VitalSignObservationAuthor'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pfYw4N6jEee0kIKIEebuqA" base_Class="_2PQJcxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HistoryOfPastIllnessSectionTemplateId HistoryOfPastIllnessSectionCode HistoryOfPastIllnessSectionCodeP HistoryOfPastIllnessSectionTitle HistoryOfPastIllnessSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.20' code.code='11348-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='HISTORY OF PAST ILLNESS' constraints.validation.info='HistoryOfPastIllnessSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pfs58N6jEee0kIKIEebuqA" base_Class="_2PWQCBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ChiefComplaintSectionTemplateId ChiefComplaintSectionCode ChiefComplaintSectionCodeP ChiefComplaintSectionText ChiefComplaintSectionTitle' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1' code.code='10154-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='CHIEF COMPLAINT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pgF7gN6jEee0kIKIEebuqA" base_Class="_2PWQFxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReasonForReferralSectionTemplateId ReasonForReferralSectionCode ReasonForReferralSectionCodeP ReasonForReferralSectionTitle ReasonForReferralSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.1' code.code='42349-1' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='REASON FOR REFERRAL'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pgbSsN6jEee0kIKIEebuqA" base_Class="_2PcWsRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HistoryOfPresentIllnessSectionTemplateId HistoryOfPresentIllnessSectionCode HistoryOfPresentIllnessSectionCodeP HistoryOfPresentIllnessSectionTitle HistoryOfPresentIllnessSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.4' code.code='10164-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='HISTORY OF PRESENT ILLNESS'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pgwp4N6jEee0kIKIEebuqA" base_Class="_2PidQhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionDiagnosisSectionTemplateId HospitalAdmissionDiagnosisSectionCode HospitalAdmissionDiagnosisSectionCodeP HospitalAdmissionDiagnosisSectionTitle HospitalAdmissionDiagnosisSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.43' code.code='46241-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='HOSPITAL ADMISSION DX' constraints.validation.warning='HospitalAdmissionDiagnosisSectionHospitalAdmissionDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_phJEYN6jEee0kIKIEebuqA" base_Class="_2Poj5BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId HospitalAdmissionMedicationsSectionEntriesOptionalCode HospitalAdmissionMedicationsSectionEntriesOptionalCodeP HospitalAdmissionMedicationsSectionEntriesOptionalTitle HospitalAdmissionMedicationsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.44' code.code='42346-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='MEDICATIONS ON ADMISSION' constraints.validation.warning='HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_phmXYN6jEee0kIKIEebuqA" base_Class="_2Poj_BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsAdministeredSectionTemplateId MedicationsAdministeredSectionCode MedicationsAdministeredSectionCodeP MedicationsAdministeredSectionTitle MedicationsAdministeredSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.38' code.code='29549-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Medications Administered' constraints.validation.info='MedicationsAdministeredSectionMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ph7ukN6jEee0kIKIEebuqA" base_Class="_2Pxt0hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicalExamSectionTemplateId PhysicalExamSectionCode PhysicalExamSectionCodeP PhysicalExamSectionTitle PhysicalExamSectionText' templateId.root='2.16.840.1.113883.10.20.2.10' code.code='29545-1' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='PHYSICAL EXAMINATION' constraints.validation.info='PhysicalExamSectionPressureUlcerObservation PhysicalExamSectionNumberOfPressureUlcersObservation PhysicalExamSectionHighestPressureUlcerStage'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_piS68N6jEee0kIKIEebuqA" base_Class="_2Pxt6xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralStatusSectionTemplateId GeneralStatusSectionCode GeneralStatusSectionCodeP GeneralStatusSectionTitle GeneralStatusSectionText' templateId.root='2.16.840.1.113883.10.20.2.5' code.code='10210-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='GENERAL STATUS'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pimc8N6jEee0kIKIEebuqA" base_Class="_2RqkMBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReviewOfSystemsSectionTemplateId ReviewOfSystemsSectionCode ReviewOfSystemsSectionCodeP ReviewOfSystemsSectionTitle ReviewOfSystemsSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.18' code.code='10187-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='REVIEW OF SYSTEMS'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pi7NEN6jEee0kIKIEebuqA" base_Class="_2Rwq0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssessmentAndPlanSectionTemplateId AssessmentAndPlanSectionCode AssessmentAndPlanSectionCodeP AssessmentAndPlanSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.9' code.code='51847-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='ASSESSMENT AND PLAN' constraints.validation.info='AssessmentAndPlanSectionPlanOfCareActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pjMS0N6jEee0kIKIEebuqA" base_Class="_2SC-sBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryDeathObservationTemplateId FamilyHistoryDeathObservationClassCode FamilyHistoryDeathObservationMoodCode FamilyHistoryDeathObservationCode FamilyHistoryDeathObservationStatusCode FamilyHistoryDeathObservationValue FamilyHistoryDeathObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.47' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' statusCode.code='completed' value.code='419099009' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' value.displayName='Dead'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pjw6kN6jEee0kIKIEebuqA" base_Class="_luQh8DVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SurgicalDrainsSectionTemplateId SurgicalDrainsSectionCode SurgicalDrainsSectionCodeP SurgicalDrainsSectionText SurgicalDrainsSectionTitle' templateId.root='2.16.840.1.113883.10.20.7.13' code.code='11537-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Surgical Drains'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pkG40N6jEee0kIKIEebuqA" base_Class="_2TeiIRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId UnstructuredDocumentRecordTarget UnstructuredDocumentAuthor UnstructuredDocumentComponent UnstructuredDocumentCustodian UnstructuredDocumentRecordTargetPatientRole2Id UnstructuredDocumentRecordTargetPatientRole2 UnstructuredDocumentAuthorAssignedAuthor2Addr UnstructuredDocumentAuthorAssignedAuthor2Telecom UnstructuredDocumentAuthorAssignedAuthor2 UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization UnstructuredDocumentCustodianAssignedCustodian2' templateId.root='2.16.840.1.113883.10.20.22.1.10' constraints.validation.query='UnstructuredDocumentRecordTargetPatientRole2Id UnstructuredDocumentRecordTargetPatientRole2 UnstructuredDocumentAuthorAssignedAuthor2Addr UnstructuredDocumentAuthorAssignedAuthor2Telecom UnstructuredDocumentAuthorAssignedAuthor2 UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization UnstructuredDocumentCustodianAssignedCustodian2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentRecordTarget constraints.validation.error='UnstructuredDocumentRecordTargetPatientRole2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentRecordTargetPatientRole2 constraints.validation.error='UnstructuredDocumentRecordTargetPatientRole2Id'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentAuthor constraints.validation.error='UnstructuredDocumentAuthorAssignedAuthor2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentAuthorAssignedAuthor2 constraints.validation.error='UnstructuredDocumentAuthorAssignedAuthor2Addr UnstructuredDocumentAuthorAssignedAuthor2Telecom'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentCustodian constraints.validation.error='UnstructuredDocumentCustodianAssignedCustodian2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentCustodianAssignedCustodian3 constraints.validation.error='UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization constraints.validation.error='UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocumentComponentNonXMLBody constraints.validation.error='UnstructuredDocumentComponentNonXMLBodyHasReferenceOrRepresentation UnstructuredDocumentComponentNonXMLBodyMediaTypeFileFormats UnstructuredDocumentComponentNonXMLBodyText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pkrgkN6jEee0kIKIEebuqA" base_Class="_2T9DQBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationInformationTemplateId MedicationInformationClassCode MedicationInformationManufacturedMaterial MedicationInformationMedicationInformationManufacturedMaterialCode' templateId.root='2.16.840.1.113883.10.20.22.4.23' constraints.validation.info='MedicationInformationId MedicationInformationManufacturerOrganization MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation' classCode='MANU' constraints.validation.warning='MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue' constraints.validation.query='MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation MedicationInformationMedicationInformationManufacturedMaterialCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationInformationMedicationInformationManufacturedMaterial constraints.validation.warning='MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue' constraints.validation.info='MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation' code.codeSystem='2.16.840.1.113883.6.88' code.codeSystemName='RxNorm' constraints.validation.error='MedicationInformationMedicationInformationManufacturedMaterialCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_plYrMN6jEee0kIKIEebuqA" base_Class="_2UnxkRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId DischargeSummaryDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection DischargeSummaryCode DischargeSummaryCodeP DischargeSummaryHospitalDischargeDiagnosisSection DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional DischargeSummaryHospitalCourseSection DischargeSummaryPlanOfCareSection DischargeSummaryComponentOf DischargeSummaryAllergiesSectionEntriesOptional DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime DischargeSummaryComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.DischargeSummaryCode='DischargeSummaryCodeP' constraints.validation.info='DischargeSummaryHospitalAdmissionMedicationsSectionEntriesOptional DischargeSummaryHospitalAdmissionDiagnosisSection DischargeSummaryDischargeDietSection DischargeSummaryFunctionalStatusSection DischargeSummaryHistoryOfPresentIllnessSection DischargeSummaryHistoryOfPastIllnessSection DischargeSummaryChiefComplaintAndReasonForVisitSection DischargeSummaryChiefComplaintSection DischargeSummaryFamilyHistorySection DischargeSummaryHospitalConsultationsSection DischargeSummaryHospitalDischargeInstructionsSection DischargeSummaryHospitalDischargePhysicalSection DischargeSummaryHospitalDischargeStudiesSummarySection DischargeSummaryImmunizationsSectionEntriesOptional DischargeSummaryProblemSectionEntriesOptional DischargeSummaryProceduresSectionEntriesOptional DischargeSummaryReasonForVisitSection DischargeSummaryReviewOfSystemsSection DischargeSummarySocialHistorySection DischargeSummaryVitalSignsSectionEntriesOptional DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeCodeSystem DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant' constraints.validation.query='DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeValueSet DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeCodeSystem DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant DischargeSummaryComponentOfEncompassingEncounter' constraints.validation.warning='DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeValueSet'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummaryComponentOf constraints.validation.error='DischargeSummaryComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummaryComponentOfEncompassingEncounter3 constraints.validation.error='DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime' constraints.validation.warning='DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeValueSet' constraints.validation.info='DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeCodeSystem DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty constraints.validation.error='DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant constraints.validation.error='DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_prqSUN6jEee0kIKIEebuqA" base_Class="_sHrUoBUSEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='IndicationTemplateId IndicationClassCode IndicationMoodCode IndicationId IndicationCodeP IndicationStatusCode' templateId.root='2.16.840.1.113883.10.20.22.4.19' constraints.validation.info='IndicationCodeNullFlavor' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='IndicationCode IndicationEffectiveTime IndicationValue IndicationValueP' constraints.validation.dependOn.IndicationCode='IndicationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_puiAIN6jEee0kIKIEebuqA" base_Class="_VBXq8BUTEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DrugVehicleTemplateId DrugVehiclePlayingEntityCode DrugVehicleClassCode DrugVehicleCode DrugVehiclePlayingEntity' templateId.root='2.16.840.1.113883.10.20.22.4.24' constraints.validation.info='DrugVehiclePlayingEntityName' classCode='MANU' code.code='412307009' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_puwCkN6jEee0kIKIEebuqA" base_Class="_DpoGkBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationDispenseTemplateId MedicationDispenseContainsMedicationOrImmunization MedicationDispenseClassCode MedicationDispenseId MedicationDispenseMoodCode MedicationDispenseStatusCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.18' classCode='SPLY' constraints.validation.warning='MedicationDispenseEffectiveTime MedicationDispenseRepeatNumber MedicationDispenseQuantity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityAddr' moodCode='EVN' constraints.validation.info='MedicationDispenseMedicationSupplyOrder MedicationDispensePerformer' constraints.validation.query='MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntityAddr MedicationDispensePerformerMedicationDispenseAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationDispensePerformer constraints.validation.error='MedicationDispensePerformerMedicationDispenseAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationDispensePerformerMedicationDispenseAssignedEntity constraints.validation.warning='MedicationDispensePerformerMedicationDispenseAssignedEntityAddr MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.error='MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pwdSwN6jEee0kIKIEebuqA" base_Class="_chEhQBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreconditionForSubstanceAdministrationTemplateId' templateId.root='2.16.840.1.113883.10.20.22.4.25' constraints.validation.warning='PreconditionForSubstanceAdministrationCode PreconditionForSubstanceAdministrationValue' constraints.validation.info='PreconditionForSubstanceAdministrationText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_pxJ2UN6jEee0kIKIEebuqA" base_Class="_PZBdMBUlEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PolicyActivityTemplateId PolicyActivityClassCode PolicyActivityMoodCode PolicyActivityId PolicyActivityCodeP PolicyActivityStatusCode PolicyActivityPayer PolicyActivityCoverage PolicyActivityEntryRelationship PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorTemplateId PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageCoverageRole PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleId PolicyActivityHolderTemplateId PolicyActivityHolderTypeCode PolicyActivityHolderHolderRole PolicyActivityEntryRelationshipTargetActActivity PolicyActivityEntryRelationshipDescriptionCoveragePlan PolicyActivityEntryRelationshipTypeCode' templateId.root='2.16.840.1.113883.10.20.22.4.61' classCode='ACT' moodCode='EVN' code.codeSystemName='' constraints.validation.warning='PolicyActivityCode PolicyActivityGuarantor PolicyActivityHolder PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityPayerOrganization PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTime PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleAddr' constraints.validation.dependOn.PolicyActivityCode='PolicyActivityCodeP' statusCode.code='completed' constraints.validation.query='PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityPayerPayerAssignedEntityPayerOrganization PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorTemplateId PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageTime PolicyActivityCoverageCoverageRole PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleId PolicyActivityHolderHolderRoleAddr PolicyActivityHolderTemplateId PolicyActivityHolderTypeCode PolicyActivityHolderTime PolicyActivityHolderHolderRole PolicyActivityEntryRelationshipTargetActActivity PolicyActivityEntryRelationshipDescriptionCoveragePlan PolicyActivityEntryRelationshipTypeCode' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityHolderTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityPayer constraints.validation.error='PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PayerPolicyActivityPayerPayerAssignedEntityId' templateId.root='2.16.840.1.113883.10.20.22.4.87' typeCode='PRF' constraints.validation.query='PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PayerPayerAssignedEntityPolicyActivityPayerPayerAssignedEntityPayerOrganizationName PayerPolicyActivityPayerPayerAssignedEntityId PayerPolicyActivityPayerPayerAssignedEntityCodeP PayerPolicyActivityPayerPayerAssignedEntityCode PayerPolicyActivityPayerPayerAssignedEntityAddr PayerPolicyActivityPayerPayerAssignedEntityTelecom PayerPolicyActivityPayerPayerAssignedEntityPayerOrganization' constraints.validation.warning='PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PayerPayerAssignedEntityPolicyActivityPayerPayerAssignedEntityPayerOrganizationName PayerPolicyActivityPayerPayerAssignedEntityCodeP PayerPolicyActivityPayerPayerAssignedEntityCode PayerPolicyActivityPayerPayerAssignedEntityPayerOrganization' constraints.validation.dependOn.PayerPolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PayerPolicyActivityPayerPayerAssignedEntityAddr PayerPolicyActivityPayerPayerAssignedEntityTelecom'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityPayerPayerAssignedEntity constraints.validation.error='PolicyActivityPayerPayerAssignedEntityId PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' code.codeSystem='2.16.840.1.113883.5.110' code.codeSystemName='HL7RoleClass' constraints.validation.warning='PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityPayerOrganization PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PayerAssignedEntityPolicyActivityPayerPayerAssignedEntityPayerOrganizationName' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom' constraints.validation.query='PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PayerAssignedEntityPolicyActivityPayerPayerAssignedEntityPayerOrganizationName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityPayerPayerAssignedEntityPayerOrganization constraints.validation.warning='PolicyActivityPayerPayerAssignedEntityPayerOrganizationName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityGuarantor constraints.validation.error='PolicyActivityGuarantorTemplateId PolicyActivityGuarantorGuarantorAssignedEntity GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GuarantorPolicyActivityGuarantorGuarantorAssignedEntityCode GuarantorPolicyActivityGuarantorGuarantorAssignedEntityCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.88' constraints.validation.warning='PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GuarantorPolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName GuarantorPolicyActivityGuarantorGuarantorAssignedEntityAddr GuarantorPolicyActivityGuarantorGuarantorAssignedEntityTelecom' typeCode='PRF' constraints.validation.query='GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GuarantorPolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName GuarantorPolicyActivityGuarantorGuarantorAssignedEntityCode GuarantorPolicyActivityGuarantorGuarantorAssignedEntityCodeP GuarantorPolicyActivityGuarantorGuarantorAssignedEntityAddr GuarantorPolicyActivityGuarantorGuarantorAssignedEntityTelecom'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityGuarantorGuarantorAssignedEntity constraints.validation.warning='PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode' code.code='GUAR' code.codeSystem='2.16.840.1.113883.5.110' code.codeSystemName='HL7RoleClass' code.displayName='Guarantor' constraints.validation.error='PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityCoverage constraints.validation.error='PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageCoverageRole CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CoverageCoverageRolePolicyActivityCoverageCoverageRoleCoveragePlayingEntityName CoveragePolicyActivityCoverageCoverageRoleId CoveragePolicyActivityCoverageCoverageRoleCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.89' constraints.validation.warning='PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTime CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode CoveragePolicyActivityCoverageCoverageRoleCode CoveragePolicyActivityCoverageCoverageRoleAddr CoveragePolicyActivityCoverageCoverageRoleCoveragePlayingEntity' typeCode='COV' constraints.validation.query='CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode CoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CoverageCoverageRolePolicyActivityCoverageCoverageRoleCoveragePlayingEntityName CoveragePolicyActivityCoverageCoverageRoleId CoveragePolicyActivityCoverageCoverageRoleCode CoveragePolicyActivityCoverageCoverageRoleCodeP CoveragePolicyActivityCoverageCoverageRoleAddr CoveragePolicyActivityCoverageCoverageRoleCoveragePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityCoverageCoverageRole constraints.validation.error='PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCodeP CoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CoverageRoleGeneralHeaderConstraintsUSRealmAddressUse CoverageRoleGeneralHeaderConstraintsUSRealmAddressCity CoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CoverageRolePolicyActivityCoverageCoverageRoleCoveragePlayingEntityName' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity CoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP CoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry CoverageRoleGeneralHeaderConstraintsUSRealmAddressState CoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.query='CoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CoverageRoleGeneralHeaderConstraintsUSRealmAddressUse CoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP CoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry CoverageRoleGeneralHeaderConstraintsUSRealmAddressState CoverageRoleGeneralHeaderConstraintsUSRealmAddressCity CoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode CoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CoverageRolePolicyActivityCoverageCoverageRoleCoveragePlayingEntityName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityCoverageCoverageRoleCoveragePlayingEntity constraints.validation.error='PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityHolder constraints.validation.error='PolicyActivityHolderTemplateId PolicyActivityHolderTypeCode PolicyActivityHolderHolderRole HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine HolderPolicyActivityHolderHolderRoleId' templateId.root='2.16.840.1.113883.10.20.22.4.90' typeCode='HLD' constraints.validation.info='PolicyActivityHolderTime' constraints.validation.query='HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine HolderPolicyActivityHolderHolderRoleId HolderPolicyActivityHolderHolderRoleAddr' constraints.validation.warning='HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState HolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode HolderPolicyActivityHolderHolderRoleAddr'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityHolderHolderRole constraints.validation.error='PolicyActivityHolderHolderRoleId HolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet HolderRoleGeneralHeaderConstraintsUSRealmAddressUse HolderRoleGeneralHeaderConstraintsUSRealmAddressCity HolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='PolicyActivityHolderHolderRoleAddr HolderRoleGeneralHeaderConstraintsUSRealmAddressUseP HolderRoleGeneralHeaderConstraintsUSRealmAddressCountry HolderRoleGeneralHeaderConstraintsUSRealmAddressState HolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.query='HolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet HolderRoleGeneralHeaderConstraintsUSRealmAddressUse HolderRoleGeneralHeaderConstraintsUSRealmAddressUseP HolderRoleGeneralHeaderConstraintsUSRealmAddressCountry HolderRoleGeneralHeaderConstraintsUSRealmAddressState HolderRoleGeneralHeaderConstraintsUSRealmAddressCity HolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode HolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityEntryRelationship constraints.validation.error='PolicyActivityEntryRelationshipTargetActActivity PolicyActivityEntryRelationshipDescriptionCoveragePlan PolicyActivityEntryRelationshipTypeCode' typeCode='REFR'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_p2kh0N6jEee0kIKIEebuqA" base_Class="_Cg3pkBUmEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CoverageActivityTemplateId CoverageActivityClassCode CoverageActivityMoodCode CoverageActivityId CoverageActivityCode CoverageActivityStatusCode CoverageActivityPolicyActivity' templateId.root='2.16.840.1.113883.10.20.22.4.60' constraints.validation.info='CoverageActivityCoverageActivityRelationshipSequenceNumber' classCode='ACT' moodCode='EVN' code.code='48768-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Payment Sources' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_p4gbgN6jEee0kIKIEebuqA" base_Class="_5Ha7ABUyEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId ProblemObservationTextReferenceValue ProblemObservationHasTextReferenceValue ProblemObservationHasOnsetDate ProblemObservationAgeObservationInversion ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCodeP ProblemObservationStatusCode ProblemObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.4' constraints.validation.warning='ProblemObservationHasTextReference ProblemObservationCode ProblemObservationText ProblemObservationEffectiveTime ProblemObservationValue' constraints.validation.info='ProblemObservationHasResolutionDate ProblemObservationValueNullFlavor ProblemObservationValueTranslation ProblemObservationValueTranslationCode ProblemObservationNegationInd ProblemObservationAgeObservation ProblemObservationHealthStatusObservation ProblemObservationProblemStatus' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationCode='ProblemObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_p8zssN6jEee0kIKIEebuqA" base_Class="_SjN_8BUzEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemStatusTemplateId ProblemStatusReferenceValue ProblemStatusTextReferenceValue ProblemStatusClassCode ProblemStatusMoodCode ProblemStatusCode ProblemStatusStatusCode ProblemStatusValue' templateId.root='2.16.840.1.113883.10.20.22.4.6' constraints.validation.warning='ProblemStatusTextReference ProblemStatusText' classCode='OBS' moodCode='EVN' code.code='33999-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Status' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qBjp0N6jEee0kIKIEebuqA" base_Class="__qYdcBVNEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationRefusalReasonTemplateId ImmunizationRefusalReasonClassCode ImmunizationRefusalReasonCode ImmunizationRefusalReasonId ImmunizationRefusalReasonMoodCode ImmunizationRefusalReasonStatusCode' templateId.root='2.16.840.1.113883.10.20.22.4.53' classCode='OBS' code.codeSystem='2.16.840.1.113883.5.8' code.codeSystemName='ActReason' moodCode='EVN' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qCtgYN6jEee0kIKIEebuqA" base_Class="_daTqABVOEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationMedicationInformationTemplateId ImmunizationMedicationInformationClassCode ImmunizationMedicationInformationManufacturedMaterial ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode' templateId.root='2.16.840.1.113883.10.20.22.4.54' classCode='MANU' constraints.validation.info='ImmunizationMedicationInformationId ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation' constraints.validation.warning='ImmunizationMedicationInformationManufacturerOrganization ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText' constraints.validation.query='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterial constraints.validation.warning='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText' constraints.validation.info='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation' code.codeSystem='2.16.840.1.113883.12.292' code.codeSystemName='Vaccines administered (CVX)' constraints.validation.error='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qEN8QN6jEee0kIKIEebuqA" base_Class="_bGzYgBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergiesSectionEntriesOptionalTemplateId AllergiesSectionEntriesOptionalCode AllergiesSectionEntriesOptionalCodeP AllergiesSectionEntriesOptionalTitle AllergiesSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.6' code.code='48765-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Allergies, adverse reactions, alerts' constraints.validation.warning='AllergiesSectionEntriesOptionalAllergyProblemAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qEfpEN6jEee0kIKIEebuqA" base_Class="_iAoXEBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionEntriesOptionalCode MedicationsSectionEntriesOptionalCodeP MedicationsSectionEntriesOptionalTitle MedicationsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.1' code.code='10160-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='History of medication use' constraints.validation.warning='MedicationsSectionEntriesOptionalMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qEx88N6jEee0kIKIEebuqA" base_Class="_naxrkBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemSectionEntriesOptionalTemplateId ProblemSectionEntriesOptionalCode ProblemSectionEntriesOptionalCodeP ProblemSectionEntriesOptionalTitle ProblemSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.5' code.code='11450-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Problem List' constraints.validation.warning='ProblemSectionEntriesOptionalProblemConcern'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qFDCsN6jEee0kIKIEebuqA" base_Class="_s9Ig4BVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProceduresSectionEntriesOptionalTemplateId ProceduresSectionEntriesOptionalCode ProceduresSectionEntriesOptionalCodeP ProceduresSectionEntriesOptionalTitle ProceduresSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.7' code.code='47519-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='History of Procedures' constraints.validation.info='ProceduresSectionEntriesOptionalProcedureActivityProcedure ProceduresSectionEntriesOptionalProcedureActivityObservation ProceduresSectionEntriesOptionalProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qFUIcN6jEee0kIKIEebuqA" base_Class="_xGqiEBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultsSectionEntriesOptionalTemplateId ResultsSectionEntriesOptionalCode ResultsSectionEntriesOptionalCodeP ResultsSectionEntriesOptionalTitle ResultsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.3' code.code='30954-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Relevant diagnostic tests and/or laboratory data' constraints.validation.warning='ResultsSectionEntriesOptionalResultOrganizer'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qFlOMN6jEee0kIKIEebuqA" base_Class="_1RZdIBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectivesSectionEntriesOptionalTemplateId AdvanceDirectivesSectionEntriesOptionalCode AdvanceDirectivesSectionEntriesOptionalCodeP AdvanceDirectivesSectionEntriesOptionalTitle AdvanceDirectivesSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.21' code.code='42348-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Advance Directives' constraints.validation.info='AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qF27AN6jEee0kIKIEebuqA" base_Class="_4yj2wBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncountersSectionEntriesOptionalTemplateId EncountersSectionEntriesOptionalCode EncountersSectionEntriesOptionalCodeP EncountersSectionEntriesOptionalTitle EncountersSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.22' code.code='46240-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Encounters' constraints.validation.warning='EncountersSectionEntriesOptionalEncounterActivities'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qGIAwN6jEee0kIKIEebuqA" base_Class="_EuPloBVeEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationsSectionEntriesOptionalTemplateId ImmunizationsSectionEntriesOptionalCode ImmunizationsSectionEntriesOptionalCodeP ImmunizationsSectionEntriesOptionalTitle ImmunizationsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.2' code.code='11369-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='ImmunizationsSectionEntriesOptionalImmunizationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qGZtkN6jEee0kIKIEebuqA" base_Class="_bRH8sBVeEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionEntriesOptionalCodeP VitalSignsSectionEntriesOptionalTitle VitalSignsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.4' code.code='8716-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Vital Signs' constraints.validation.warning='VitalSignsSectionEntriesOptionalVitalSignsOrganizer'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qGraYN6jEee0kIKIEebuqA" base_Class="_Aj7JkBg4EeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityObservationTemplateId ProcedureActivityObservationReferenceValue ProcedureActivityObservationEncounterInversion ProcedureActivityObservationServiceDeliveryLocationTypeCode ProcedureActivityObservationInstructionsInversion ProcedureActivityObservationClassCode ProcedureActivityObservationMoodCode ProcedureActivityObservationId ProcedureActivityObservationCode ProcedureActivityObservationStatusCode ProcedureActivityObservationPriorityCode ProcedureActivityObservationValue ProcedureActivityObservationTargetSiteCode ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationTelecom ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityId ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom ProcedureActivityObservationProcedureObservationPerformerAssignedEntity ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterClassCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterMoodCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterId ProcedureActivityObservationEntryRelationshipInversionInd ProcedureActivityObservationEntryRelationshipTypeCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounter' templateId.root='2.16.840.1.113883.10.20.22.4.13' constraints.validation.warning='ProcedureActivityObservationCodeCodeSystems ProcedureActivityObservationCodeOriginalText ProcedureActivityObservationOriginalTextReference ProcedureActivityObservationOriginalTextReferenceValue ProcedureActivityObservationEffectiveTime ProcedureActivityObservationTargetSiteCodeP ProcedureActivityObservationPerformer ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationId ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityRepresentedOrganization' classCode='OBS' priorityCode.codeSystem='2.16.840.1.113883.5.7' priorityCode.codeSystemName='ActPriority' constraints.validation.info='ProcedureActivityObservationPriorityCodeP ProcedureActivityObservationMethodCode ProcedureActivityObservationServiceDeliveryLocation ProcedureActivityObservationInstructions ProcedureActivityObservationIndication ProcedureActivityObservationMedicationActivity ProcedureActivityObservationEntryRelationship ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationName' constraints.validation.dependOn.ProcedureActivityObservationPriorityCode='ProcedureActivityObservationPriorityCodeP' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProcedureActivityObservationTargetSiteCode='ProcedureActivityObservationTargetSiteCodeP' constraints.validation.query='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationId ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationName ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationTelecom ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityId ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityRepresentedOrganization ProcedureActivityObservationProcedureObservationPerformerAssignedEntity ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterClassCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterMoodCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterId ProcedureActivityObservationEntryRelationshipInversionInd ProcedureActivityObservationEntryRelationshipTypeCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservationProcedureObservationPerformer constraints.validation.error='ProcedureActivityObservationProcedureObservationPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntity constraints.validation.error='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityId ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom' constraints.validation.warning='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganization constraints.validation.warning='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationId' constraints.validation.info='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationName' constraints.validation.error='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationTelecom ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationAddr'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservationEntryRelationship inversionInd='true' constraints.validation.error='ProcedureActivityObservationEntryRelationshipInversionInd ProcedureActivityObservationEntryRelationshipTypeCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounter' typeCode='COMP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservationEntryRelationshipProcedureObservationEncounter classCode='ENC' constraints.validation.error='ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterClassCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterMoodCode ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterId' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qKgKcN6jEee0kIKIEebuqA" base_Class="_awdH4Bg4EeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityActTemplateId ProcedureActivityActReferenceValue ProcedureActivityActServiceDeliveryLocationTypeCode ProcedureActivityActEncounterInversion ProcedureActivityActInstructionsInversion ProcedureActivityActClassCode ProcedureActivityActMoodCode ProcedureActivityActId ProcedureActivityActCode ProcedureActivityActStatusCode ProcedureActivityActPriorityCode ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityId ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom ProcedureActivityActProcedureActPerformerAssignedEntity ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode ProcedureActivityActEntryRelationshipProcedureActEncounterId ProcedureActivityActEntryRelationshipInversionInd ProcedureActivityActEntryRelationshipTypeCode ProcedureActivityActEntryRelationshipProcedureActEncounter' templateId.root='2.16.840.1.113883.10.20.22.4.12' constraints.validation.warning='ProcedureActivityActCodeOriginalText ProcedureActivityActOriginalTextReference ProcedureActivityActCodeCodeSystems ProcedureActivityActEffectiveTime ProcedureActivityActPerformer ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationId ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization' constraints.validation.info='ProcedureActivityActOriginalTextReferenceValue ProcedureActivityActPriorityCodeP ProcedureActivityActServiceDeliveryLocation ProcedureActivityActInstructions ProcedureActivityActIndication ProcedureActivityActMedicationActivity ProcedureActivityActEntryRelationship ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationName' classCode='ACT' priorityCode.codeSystem='2.16.840.1.113883.5.7' priorityCode.codeSystemName='ActPriority' constraints.validation.dependOn.ProcedureActivityActPriorityCode='ProcedureActivityActPriorityCodeP' constraints.validation.query='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationId ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationName ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityId ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization ProcedureActivityActProcedureActPerformerAssignedEntity ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode ProcedureActivityActEntryRelationshipProcedureActEncounterId ProcedureActivityActEntryRelationshipInversionInd ProcedureActivityActEntryRelationshipTypeCode ProcedureActivityActEntryRelationshipProcedureActEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActProcedureActPerformer constraints.validation.error='ProcedureActivityActProcedureActPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActProcedureActPerformerProcedureActAssignedEntity constraints.validation.error='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityId ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom' constraints.validation.warning='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganization constraints.validation.warning='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationId' constraints.validation.info='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationName' constraints.validation.error='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActEntryRelationship inversionInd='true' constraints.validation.error='ProcedureActivityActEntryRelationshipInversionInd ProcedureActivityActEntryRelationshipTypeCode ProcedureActivityActEntryRelationshipProcedureActEncounter' typeCode='COMP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActEntryRelationshipProcedureActEncounter classCode='ENC' constraints.validation.error='ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode ProcedureActivityActEntryRelationshipProcedureActEncounterId' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qNUN4N6jEee0kIKIEebuqA" base_Class="_XUoXwBnZEeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthorizationActivityTemplateId AuthorizationActivityClassCode AuthorizationActivityId AuthorizationActivityMoodCode AuthorizationActivityEntryRelationship AuthorizationActivityEntryRelationshipHasClinicalStatement AuthorizationActivityEntryRelationshipTypeCode' templateId.root='2.16.840.1.113883.10.20.1.19' classCode='ACT' moodCode='EVN' constraints.validation.query='AuthorizationActivityEntryRelationshipHasClinicalStatement AuthorizationActivityEntryRelationshipHasAuthorizedPerformers AuthorizationActivityEntryRelationshipTypeCode' constraints.validation.info='AuthorizationActivityEntryRelationshipHasAuthorizedPerformers'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAuthorizationActivityEntryRelationship constraints.validation.error='AuthorizationActivityEntryRelationshipHasClinicalStatement AuthorizationActivityEntryRelationshipTypeCode' constraints.validation.info='AuthorizationActivityEntryRelationshipHasAuthorizedPerformers' typeCode='SUBJ'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qOX90N6jEee0kIKIEebuqA" base_Class="_j3aTQBrTEeGo461UQq-B1g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationSupplyOrderTemplateId MedicationSupplyOrderInstructionInversionInd MedicationSupplyOrderEffectiveTimeHigh MedicationSupplyOrderContainsMedicationOrImmunization MedicationSupplyOrderClassCode MedicationSupplyOrderMoodCode MedicationSupplyOrderId MedicationSupplyOrderStatusCode' templateId.root='2.16.840.1.113883.10.20.22.4.17' classCode='SPLY' moodCode='INT' constraints.validation.warning='MedicationSupplyOrderEffectiveTime MedicationSupplyOrderRepeatNumber MedicationSupplyOrderQuantity' constraints.validation.info='MedicationSupplyOrderAuthor MedicationSupplyOrderInstructions'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qX-lwN6jEee0kIKIEebuqA" base_Class="_vBswQBtpEeGT89b80j3MTg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EstimatedDateOfDeliveryTemplateId EstimatedDateOfDeliveryClassCode EstimatedDateOfDeliveryCode EstimatedDateOfDeliveryMoodCode EstimatedDateOfDeliveryStatusCode EstimatedDateOfDeliveryValue' templateId.root='2.16.840.1.113883.10.20.15.3.1' classCode='OBS' code.code='11778-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' moodCode='EVN' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qb6qkN6jEee0kIKIEebuqA" base_Class="_hD-z0CUPEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DischargeMedicationMedicationActivity DischargeMedicationTemplateId DischargeMedicationClassCode DischargeMedicationMoodCode DischargeMedicationCode' templateId.root='2.16.840.1.113883.10.20.22.4.35' classCode='ACT' moodCode='EVN' code.code='10183-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Discharge Medication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qcU6QN6jEee0kIKIEebuqA" base_Class="_KtwVgCULEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeDiagnosisProblemObservation HospitalDischargeDiagnosisTemplateId HospitalDischargeDiagnosisClassCode HospitalDischargeDiagnosisMoodCode HospitalDischargeDiagnosisCode' templateId.root='2.16.840.1.113883.10.20.22.4.33' classCode='ACT' moodCode='EVN' code.code='11535-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Diagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qcWIYN6jEee0kIKIEebuqA" base_Class="_2PidURSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeDiagnosisSectionTemplateId HospitalDischargeDiagnosisSectionCode HospitalDischargeDiagnosisSectionCodeP HospitalDischargeDiagnosisSectionTitle HospitalDischargeDiagnosisSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.24' code.code='11535-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Diagnosis' constraints.validation.warning='HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qcn1MN6jEee0kIKIEebuqA" base_Class="_2Poj7RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeMedicationsSectionEntriesOptionalTemplateId HospitalDischargeMedicationsSectionEntriesOptionalCode HospitalDischargeMedicationsSectionEntriesOptionalCodeP HospitalDischargeMedicationsSectionEntriesOptionalTitle HospitalDischargeMedicationsSectionEntriesOptionalText' templateId.root='2.16.840.1.113883.10.20.22.2.11' code.code='10183-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='HOSPITAL DISCHARGE MEDICATIONS' constraints.validation.warning='HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qc5iAN6jEee0kIKIEebuqA" base_Class="_2RqkOxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalCourseSectionTemplateId HospitalCourseSectionCode HospitalCourseSectionCodeP HospitalCourseSectionTitle HospitalCourseSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.5' code.code='8648-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Course'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qdKnwN6jEee0kIKIEebuqA" base_Class="_2Uz-4xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DischargeDietSectionTemplateId DischargeDietSectionCode DischargeDietSectionCodeP DischargeDietSectionTitle DischargeDietSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.33' code.code='42344-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Discharge Diet'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qdcUkN6jEee0kIKIEebuqA" base_Class="_38AXoCUTEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeStudiesSummarySectionTemplateId HospitalDischargeStudiesSummarySectionCode HospitalDischargeStudiesSummarySectionCodeP HospitalDischargeStudiesSummarySectionTitle HospitalDischargeStudiesSummarySectionText' templateId.root='2.16.840.1.113883.10.20.22.2.16' code.code='11493-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Studies Summary'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qeKGQN6jEee0kIKIEebuqA" base_Class="_lBergCUMEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeInstructionsSectionTemplateId HospitalDischargeInstructionsSectionCode HospitalDischargeInstructionsSectionCodeP HospitalDischargeInstructionsSectionTitle HospitalDischargeInstructionsSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.41' code.code='8653-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Instructions'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_qeZ94N6jEee0kIKIEebuqA" base_Generalization="_TytVkSUQEeGiOPpZVnfEJA"/>
  <Ecore:EClass xmi:id="_qebzEN6jEee0kIKIEebuqA" base_Class="_TytVkCUQEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeMedicationsSectionEntriesOptionalTemplateId HospitalDischargeMedicationsSectionEntriesOptionalCode HospitalDischargeMedicationsSectionEntriesOptionalCodeP HospitalDischargeMedicationsSectionEntriesOptionalText HospitalDischargeMedicationsSectionEntriesOptionalTitle HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication' templateId.root='2.16.840.1.113883.10.20.22.2.11.1' constraints.validation.dependOn.HospitalDischargeMedicationsSectionEntriesOptionalCode='HospitalDischargeMedicationsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qiDu0N6jEee0kIKIEebuqA" base_Class="_WikGsCUTEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargePhysicalSectionTemplateId HospitalDischargePhysicalSectionCode HospitalDischargePhysicalSectionCodeP HospitalDischargePhysicalSectionTitle HospitalDischargePhysicalSectionText' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.26' code.code='10184-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Physical'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qjtUoN6jEee0kIKIEebuqA" base_Class="_oI7CQCsaEeGHF88-qhhUMA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ChiefComplaintAndReasonForVisitSectionTemplateId ChiefComplaintAndReasonForVisitSectionCode ChiefComplaintAndReasonForVisitSectionCodeP ChiefComplaintAndReasonForVisitSectionText ChiefComplaintAndReasonForVisitSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.13' code.code='46239-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Chief Complaint and Reason for Visit'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qkEhAN6jEee0kIKIEebuqA" base_Class="_Nm64UCscEeGHF88-qhhUMA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReasonForVisitSectionTemplateId ReasonForVisitSectionCode ReasonForVisitSectionCodeP ReasonForVisitSectionText ReasonForVisitSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.12' code.code='29299-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Reason for Visit'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qwGx4N6jEee0kIKIEebuqA" base_Class="_OA_Q0DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AnesthesiaSectionTemplateId AnesthesiaSectionCode AnesthesiaSectionCodeP AnesthesiaSectionTitle AnesthesiaSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.25' code.code='59774-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.info='AnesthesiaSectionProcedureActivityProcedure AnesthesiaSectionMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qwZFwN6jEee0kIKIEebuqA" base_Class="_R1OXcDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComplicationsSectionTemplateId ComplicationsSectionCode ComplicationsSectionCodeP ComplicationsSectionTitle ComplicationsSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.37' code.code='55109-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Complications' constraints.validation.info='ComplicationsSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qwtO0N6jEee0kIKIEebuqA" base_Class="_WPTWEDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DICOMObjectCatalogSectionTemplateId DICOMObjectCatalogSectionCode DICOMObjectCatalogSectionCodeP DICOMObjectCatalogSectionStudyAct' templateId.root='2.16.840.1.113883.10.20.6.1.1' code.code='121181' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' code.displayName='Dicom Object Catalog'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qw4N8N6jEee0kIKIEebuqA" base_Class="_ZcC-4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FindingsSectionTemplateId' templateId.root='2.16.840.1.113883.10.20.6.1.2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qw6qMN6jEee0kIKIEebuqA" base_Class="_eKFbUDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalConsultationsSectionTemplateId HospitalConsultationsSectionCode HospitalConsultationsSectionCodeP HospitalConsultationsSectionText HospitalConsultationsSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.42' code.code='18841-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qxMXAN6jEee0kIKIEebuqA" base_Class="_hqzJADVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InterventionsSectionTemplateId InterventionsSectionCode InterventionsSectionCodeP InterventionsSectionTitle InterventionsSectionText' templateId.root='2.16.840.1.113883.10.20.21.2.3' code.code='62387-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qxeq4N6jEee0kIKIEebuqA" base_Class="_mEIgwDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicalHistorySectionTemplateId MedicalHistorySectionCode MedicalHistorySectionCodeP MedicalHistorySectionText MedicalHistorySectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.39' code.code='11329-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qxxl0N6jEee0kIKIEebuqA" base_Class="_rNJpADVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ObjectiveSectionTemplateId ObjectiveSectionCode ObjectiveSectionCodeP ObjectiveSectionText ObjectiveSectionTitle' templateId.root='2.16.840.1.113883.10.20.21.2.1' code.code='61149-1' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Objective'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qyDSoN6jEee0kIKIEebuqA" base_Class="_vHfXoDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OperativeNoteFluidSectionTemplateId OperativeNoteFluidSectionCode OperativeNoteFluidSectionCodeP OperativeNoteFluidSectionText OperativeNoteFluidSectionTitle' templateId.root='2.16.840.1.113883.10.20.7.12' code.code='10216-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Operative Note Fluids'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qyXbsN6jEee0kIKIEebuqA" base_Class="_zel6wDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OperativeNoteSurgicalProcedureSectionTemplateId OperativeNoteSurgicalProcedureSectionCode OperativeNoteSurgicalProcedureSectionCodeP OperativeNoteSurgicalProcedureSectionText OperativeNoteSurgicalProcedureSectionTitle' templateId.root='2.16.840.1.113883.10.20.7.14' code.code='10223-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Operative Note Surgical'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qyxEUN6jEee0kIKIEebuqA" base_Class="_3b6E4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedProcedureSectionTemplateId PlannedProcedureSectionCode PlannedProcedureSectionCodeP PlannedProcedureSectionTitle PlannedProcedureSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.30' code.code='59772-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Planned Procedure' constraints.validation.info='PlannedProcedureSectionPlanOfCareActivityProcedure'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qzCxIN6jEee0kIKIEebuqA" base_Class="_7UA-4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostoperativeDiagnosisSectionTemplateId PostoperativeDiagnosisSectionCode PostoperativeDiagnosisSectionCodeP PostoperativeDiagnosisSectionText PostoperativeDiagnosisSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.35' code.code='10218-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Postoperative Diagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qzT24N6jEee0kIKIEebuqA" base_Class="_-jlSMDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostprocedureDiagnosisSectionTemplateId PostprocedureDiagnosisSectionCode PostprocedureDiagnosisSectionCodeP PostprocedureDiagnosisSectionTitle PostprocedureDiagnosisSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.36' code.code='59769-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Postprocedure Diagnosis' constraints.validation.warning='PostprocedureDiagnosisSectionPostprocedureDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qzljsN6jEee0kIKIEebuqA" base_Class="_Cu6qMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisSectionTemplateId PreoperativeDiagnosisSectionCode PreoperativeDiagnosisSectionCodeP PreoperativeDiagnosisSectionTitle PreoperativeDiagnosisSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.34' code.code='10219-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Preoperative Diagnosis' constraints.validation.warning='PreoperativeDiagnosisSectionPreoperativeDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_qz3QgN6jEee0kIKIEebuqA" base_Class="_HNUIIDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureDescriptionSectionTemplateId ProcedureDescriptionSectionCode ProcedureDescriptionSectionCodeP ProcedureDescriptionSectionText ProcedureDescriptionSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.27' code.code='29554-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Description'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q0I9UN6jEee0kIKIEebuqA" base_Class="_QhXGYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureDispositionSectionTemplateId ProcedureDispositionSectionCode ProcedureDispositionSectionCodeP ProcedureDispositionSectionText ProcedureDispositionSectionTitle' templateId.root='2.16.840.1.113883.10.20.18.2.12' code.code='59775-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Disposition'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q0aqIN6jEee0kIKIEebuqA" base_Class="_TvcL8DVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureEstimatedBloodLossSectionTemplateId ProcedureEstimatedBloodLossSectionCode ProcedureEstimatedBloodLossSectionCodeP ProcedureEstimatedBloodLossSectionText ProcedureEstimatedBloodLossSectionTitle' templateId.root='2.16.840.1.113883.10.20.18.2.9' code.code='59770-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Estimated Blood Loss'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q0vaQN6jEee0kIKIEebuqA" base_Class="_W4UBYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureFindingsSectionTemplateId ProcedureFindingsSectionCode ProcedureFindingsSectionCodeP ProcedureFindingsSectionTitle ProcedureFindingsSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.28' code.code='59776-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Findings' constraints.validation.info='ProcedureFindingsSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q1BHEN6jEee0kIKIEebuqA" base_Class="_Z662wDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureImplantsSectionTemplateId ProcedureImplantsSectionCode ProcedureImplantsSectionCodeP ProcedureImplantsSectionText ProcedureImplantsSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.40' code.code='59771-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Implants'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q1Sz4N6jEee0kIKIEebuqA" base_Class="_cjmJMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureIndicationsSectionTemplateId ProcedureIndicationsSectionCode ProcedureIndicationsSectionCodeP ProcedureIndicationsSectionTitle ProcedureIndicationsSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.29' code.code='59768-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Indications' constraints.validation.info='ProcedureIndicationsSectionIndication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q1j5oN6jEee0kIKIEebuqA" base_Class="_gSUdsDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureSpecimensTakenSectionTemplateId ProcedureSpecimensTakenSectionCode ProcedureSpecimensTakenSectionCodeP ProcedureSpecimensTakenSectionText ProcedureSpecimensTakenSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.31' code.code='59773-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Procedure Specimens Taken'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q12NgN6jEee0kIKIEebuqA" base_Class="_iy8nYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubjectiveSectionTemplateId SubjectiveSectionCode SubjectiveSectionCodeP SubjectiveSectionText SubjectiveSectionTitle' templateId.root='2.16.840.1.113883.10.20.21.2.2' code.code='61150-9' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Subjective'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q3DHYN6jEee0kIKIEebuqA" base_Class="_R-vIoDssEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ConsultationNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ConsultationNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent ConsultationNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection ConsultationNoteHasReasonForReferralOrReasonForVisit GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ConsultationNoteComponentOf ConsultationNoteHistoryOfPresentIllness ConsultationNoteInFulfillmentOf ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheDay ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime ConsultationNoteComponentOfEncompassingEncounter2Id ConsultationNoteComponentOfEncompassingEncounter ConsultationNoteInFulfillmentOfOrderId ConsultationNoteInFulfillmentOfOrder' templateId.root='2.16.840.1.113883.10.20.22.1.4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.info='ConsultationNoteAssessmentSection ConsultationNoteAssessmentAndPlanSection ConsultationNotePlanOfCareSection ConsultationNoteReasonForReferralSection ConsultationNoteReasonForVisitSection ConsultationNoteAllergiesSection ConsultationNoteChiefComplaintSection ConsultationNoteChiefComplaintAndReasonForVisitSection ConsultationNoteFamilyHistorySection ConsultationNoteGeneralStatusSection ConsultationNoteHistoryOfPastIllnessSection ConsultationNoteImmunizationsSection ConsultationNoteMedicationsSectionEntriesOptional ConsultationNoteProblemSectionEntriesOptional ConsultationNoteProceduresSectionEntriesOptional ConsultationNoteResultsSectionEntriesOptional ConsultationNoteReviewOfSystemsSection ConsultationNoteSocialHistorySection ConsultationNoteVitalSignsSectionEntriesOptional ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheSecond ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant' constraints.validation.warning='ConsultationNotePhysicalExamSection ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheMinute ConsultationNoteComponentOfEncompassingEncounter2IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.query='ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheDay ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheMinute ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheSecond ConsultationNoteComponentOfEncompassingEncounter2IfMorePreciseThanDayIncludeTimeZoneOffset ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime ConsultationNoteComponentOfEncompassingEncounter2Id ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant ConsultationNoteComponentOfEncompassingEncounter ConsultationNoteInFulfillmentOfOrderId ConsultationNoteInFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteComponentOf constraints.validation.error='ConsultationNoteComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteComponentOfEncompassingEncounter2 constraints.validation.error='ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheDay ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime ConsultationNoteComponentOfEncompassingEncounter2Id' constraints.validation.warning='ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheMinute ConsultationNoteComponentOfEncompassingEncounter2IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='ConsultationNoteComponentOfEncompassingEncounter2PreciseToTheSecond ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty constraints.validation.error='ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant constraints.validation.error='ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteInFulfillmentOf constraints.validation.error='ConsultationNoteInFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNoteInFulfillmentOfOrder constraints.validation.error='ConsultationNoteInFulfillmentOfOrderId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_q8EKQN6jEee0kIKIEebuqA" base_Class="_W8pI4DszEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssessmentSectionTemplateId AssessmentSectionCode AssessmentSectionCodeP AssessmentSectionText AssessmentSectionTitle' templateId.root='2.16.840.1.113883.10.20.22.2.8' code.code='51848-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Assessments'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_rMNfEN6jEee0kIKIEebuqA" base_Class="_-Qa60D1jEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId HistoryAndPhysicalNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections HistoryAndPhysicalNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent HistoryAndPhysicalNoteHasChiefComplaintAndReasonForVisitChiefComplaintOrReasonForVisit HistoryAndPhysicalNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP HistoryAndPhysicalNoteComponentOf HistoryAndPhysicalNoteAllergiesSectionEntriesOptional HistoryAndPhysicalNoteFamilyHistorySection HistoryAndPhysicalNoteGeneralStatusSection HistoryAndPhysicalNoteHistoryOfPastIllnessSection HistoryAndPhysicalNoteMedicationsSectionEntriesOptional HistoryAndPhysicalNotePhysicalExamSection HistoryAndPhysicalNoteResultsSectionEntriesOptional HistoryAndPhysicalNoteReviewOfSystemsSection HistoryAndPhysicalNoteSocialHistorySection HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheDay HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id HistoryAndPhysicalNoteComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.info='HistoryAndPhysicalNoteInFulfillmentOf HistoryAndPhysicalNoteAssessmentSection HistoryAndPhysicalNotePlanOfCareSection HistoryAndPhysicalNoteAssessmentAndPlanSection HistoryAndPhysicalNoteChiefComplaintSection HistoryAndPhysicalNoteChiefComplaintAndReasonForVisitSection HistoryAndPhysicalNoteReasonForVisitSection HistoryAndPhysicalNoteImmunizationsSectionEntriesOptional HistoryAndPhysicalNoteProblemSectionEntriesOptional HistoryAndPhysicalNoteProceduresSectionEntriesOptional HistoryAndPhysicalNoteInstructionsSection HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheSecond HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant' constraints.validation.warning='HistoryAndPhysicalNoteHistoryOfPresentIllnessSection HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheMinute HistoryAndPhysicalNoteComponentOfEncompassingEncounter4IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.query='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheDay HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheMinute HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheSecond HistoryAndPhysicalNoteComponentOfEncompassingEncounter4IfMorePreciseThanDayIncludeTimeZoneOffset HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant HistoryAndPhysicalNoteComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNoteComponentOf constraints.validation.error='HistoryAndPhysicalNoteComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNoteComponentOfEncompassingEncounter4 constraints.validation.error='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheDay HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id' constraints.validation.warning='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheMinute HistoryAndPhysicalNoteComponentOfEncompassingEncounter4IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4PreciseToTheSecond HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty constraints.validation.error='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant constraints.validation.error='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_rZzPIN6jEee0kIKIEebuqA" base_Class="_xe9MsD4iEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP OperativeNoteDocumentationOf OperativeNoteAnesthesiaSection OperativeNoteComplicationsSection OperativeNotePostoperativeDiagnosisSection OperativeNotePreoperativeDiagnosisSection OperativeNoteProcedureEstimatedBloodLossSection OperativeNoteProcedureFindingsSection OperativeNoteProcedureSpecimensTakenSection OperativeNoteProcedureDescriptionSection OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNoteDocumentationOfServiceEventPreciseToTheDay OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEventPrimaryPerformer OperativeNoteDocumentationOfServiceEvent' templateId.root='2.16.840.1.113883.10.20.22.1.7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.info='OperativeNoteProcedureImplantsSection OperativeNoteOperativeNoteFluidSection OperativeNoteOperativeNoteSurgicalProcedureSection OperativeNotePlanOfCareSection OperativeNotePlannedProcedureSection OperativeNoteProcedureDispositionSection OperativeNoteProcedureIndicationsSection OperativeNoteSurgicalDrainsSection OperativeNoteDocumentationOfServiceEventPreciseToTheSecond' constraints.validation.query='OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNoteDocumentationOfServiceEventPreciseToTheDay OperativeNoteDocumentationOfServiceEventPreciseToTheMinute OperativeNoteDocumentationOfServiceEventPreciseToTheSecond OperativeNoteDocumentationOfServiceEventIfMorePreciseThanDayIncludeTimeZoneOffset OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEventPrimaryPerformer OperativeNoteDocumentationOfServiceEvent' constraints.validation.warning='OperativeNoteDocumentationOfServiceEventPreciseToTheMinute OperativeNoteDocumentationOfServiceEventIfMorePreciseThanDayIncludeTimeZoneOffset'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNoteDocumentationOf constraints.validation.error='OperativeNoteDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNoteDocumentationOfServiceEvent constraints.validation.error='OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNoteDocumentationOfServiceEventPreciseToTheDay OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEventPrimaryPerformer OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode ServiceEventOperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity' constraints.validation.warning='OperativeNoteDocumentationOfServiceEventPreciseToTheMinute OperativeNoteDocumentationOfServiceEventIfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='OperativeNoteDocumentationOfServiceEventPreciseToTheSecond' constraints.validation.query='OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode ServiceEventOperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNoteDocumentationOfServiceEventPrimaryPerformer typeCode='PPRF' constraints.validation.error='OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_rj0GwN6jEee0kIKIEebuqA" base_Class="_LuYEsD7YEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ProcedureNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProcedureNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent ProcedureNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection ProcedureNoteSectionTitles GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ProcedureNoteComplicationsSection ProcedureNotePostprocedureDiagnosisSection ProcedureNoteProcedureDescriptionSection ProcedureNoteProcedureIndicationsSection ProcedureNoteDocumentationOf ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth ProcedureNoteDocumentationOfServiceEvent1PreciseToTheDay ProcedureNoteDocumentationOfServiceEvent1Code ProcedureNoteDocumentationOfServiceEvent1EffectiveTime ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer ProcedureNoteDocumentationOfServiceEvent1' templateId.root='2.16.840.1.113883.10.20.22.1.6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.warning='ProcedureNoteComponentOf ProcedureNoteComponentOfEncompassingEncounter5 ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP ProcedureNoteDocumentationOfServiceEvent1PreciseToTheMinute ProcedureNoteDocumentationOfServiceEvent1IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='ProcedureNoteAssessmentSection ProcedureNotePlanOfCareSection ProcedureNoteAssessmentAndPlanSection ProcedureNoteAllergiesSectionEntriesOptional ProcedureNoteAnesthesiaSection ProcedureNoteChiefComplaintSection ProcedureNoteChiefComplaintAndReasonForVisitSection ProcedureNoteFamilyHistorySection ProcedureNoteHistoryOfPastIllnessSection ProcedureNoteHistoryOfPresentIllnessSection ProcedureNoteMedicalHistorySection ProcedureNoteMedicationsSectionEntriesOptional ProcedureNoteMedicationsAdministeredSection ProcedureNotePhysicalExamSection ProcedureNotePlannedProcedureSection ProcedureNoteProcedureDispositionSection ProcedureNoteProcedureEstimatedBloodLossSection ProcedureNoteProcedureFindingsSection ProcedureNoteProcedureImplantsSection ProcedureNoteProcedureSpecimensTakenSection ProcedureNoteProceduresSectionEntriesOptional ProcedureNoteReasonForVisitSection ProcedureNoteReviewOfSystemsSection ProcedureNoteSocialHistorySection ProcedureNoteParticipant1 ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant ProcedureNoteDocumentationOfServiceEvent1PreciseToTheSecond' constraints.validation.query='ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant ProcedureNoteComponentOfEncompassingEncounter5 ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth ProcedureNoteDocumentationOfServiceEvent1PreciseToTheDay ProcedureNoteDocumentationOfServiceEvent1PreciseToTheMinute ProcedureNoteDocumentationOfServiceEvent1PreciseToTheSecond ProcedureNoteDocumentationOfServiceEvent1IfMorePreciseThanDayIncludeTimeZoneOffset ProcedureNoteDocumentationOfServiceEvent1Code ProcedureNoteDocumentationOfServiceEvent1EffectiveTime ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer ProcedureNoteDocumentationOfServiceEvent1' constraints.validation.dependOn.ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteComponentOf constraints.validation.warning='ProcedureNoteComponentOfEncompassingEncounter5'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteComponentOfEncompassingEncounter5 constraints.validation.error='ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode' constraints.validation.info='ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant' constraints.validation.query='ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteComponentOfEncompassingEncounter5Location constraints.validation.error='ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility constraints.validation.error='ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant typeCode='REF' constraints.validation.error='ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteDocumentationOf constraints.validation.error='ProcedureNoteDocumentationOfServiceEvent1'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteDocumentationOfServiceEvent1 constraints.validation.error='ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth ProcedureNoteDocumentationOfServiceEvent1PreciseToTheDay ProcedureNoteDocumentationOfServiceEvent1Code ProcedureNoteDocumentationOfServiceEvent1EffectiveTime ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ServiceEvent1ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity' constraints.validation.warning='ProcedureNoteDocumentationOfServiceEvent1PreciseToTheMinute ProcedureNoteDocumentationOfServiceEvent1IfMorePreciseThanDayIncludeTimeZoneOffset ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP' constraints.validation.info='ProcedureNoteDocumentationOfServiceEvent1PreciseToTheSecond' constraints.validation.query='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ServiceEvent1ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity' constraints.validation.dependOn.ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer typeCode='PPRF' constraints.validation.error='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode' constraints.validation.warning='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_r1fsoN6jEee0kIKIEebuqA" base_Class="_UBzvED_LEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ProgressNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProgressNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ProgressNoteComponentOf ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh ProgressNoteDocumentationOfServiceEvent2PreciseToTheDay ProgressNoteDocumentationOfServiceEvent2TemplateId ProgressNoteDocumentationOfServiceEvent2ClassCode ProgressNoteDocumentationOfServiceEvent2 ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility ProgressNoteComponentOfEncompassingEncounter6PreciseToTheDay ProgressNoteComponentOfEncompassingEncounter6EffectiveTime ProgressNoteComponentOfEncompassingEncounter6Id ProgressNoteComponentOfEncompassingEncounter6Location ProgressNoteComponentOfEncompassingEncounter6' templateId.root='2.16.840.1.113883.10.20.22.1.9' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.warning='ProgressNoteDocumentationOf ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow ProgressNoteDocumentationOfServiceEvent2PreciseToTheMinute ProgressNoteDocumentationOfServiceEvent2IfMorePreciseThanDayIncludeTimeZoneOffset ProgressNoteDocumentationOfServiceEvent2EffectiveTime ProgressNoteComponentOfEncompassingEncounter6PreciseToTheMinute ProgressNoteComponentOfEncompassingEncounter6IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='ProgressNoteAssessmentSection ProgressNotePlanOfCareSection ProgressNoteAssessmentAndPlanSection ProgressNoteAllergiesSectionEntriesOptional ProgressNoteChiefComplaintSection ProgressNoteInterventionsSection ProgressNoteMedicationsSectionEntriesOptional ProgressNoteObjectiveSection ProgressNotePhysicalExamSection ProgressNoteProblemSectionEntriesOptional ProgressNoteResultsSectionEntriesOptional ProgressNoteReviewOfSystemsSection ProgressNoteSubjectiveSection ProgressNoteVitalSignsSectionEntriesOptional ProgressNoteInstructionsSection ProgressNoteDocumentationOfServiceEvent2PreciseToTheSecond ProgressNoteComponentOfEncompassingEncounter6PreciseToTheSecond' constraints.validation.query='ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh ProgressNoteDocumentationOfServiceEvent2PreciseToTheDay ProgressNoteDocumentationOfServiceEvent2PreciseToTheMinute ProgressNoteDocumentationOfServiceEvent2PreciseToTheSecond ProgressNoteDocumentationOfServiceEvent2IfMorePreciseThanDayIncludeTimeZoneOffset ProgressNoteDocumentationOfServiceEvent2TemplateId ProgressNoteDocumentationOfServiceEvent2ClassCode ProgressNoteDocumentationOfServiceEvent2EffectiveTime ProgressNoteDocumentationOfServiceEvent2 ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility ProgressNoteComponentOfEncompassingEncounter6PreciseToTheDay ProgressNoteComponentOfEncompassingEncounter6PreciseToTheMinute ProgressNoteComponentOfEncompassingEncounter6PreciseToTheSecond ProgressNoteComponentOfEncompassingEncounter6IfMorePreciseThanDayIncludeTimeZoneOffset ProgressNoteComponentOfEncompassingEncounter6EffectiveTime ProgressNoteComponentOfEncompassingEncounter6Id ProgressNoteComponentOfEncompassingEncounter6Location ProgressNoteComponentOfEncompassingEncounter6'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteDocumentationOf constraints.validation.error='ProgressNoteDocumentationOfServiceEvent2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteDocumentationOfServiceEvent2 constraints.validation.error='ProgressNoteDocumentationOfServiceEvent2TemplateId ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh ProgressNoteDocumentationOfServiceEvent2PreciseToTheDay ProgressNoteDocumentationOfServiceEvent2ClassCode' templateId.root='2.16.840.1.113883.10.20.21.3.1' constraints.validation.warning='ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow ProgressNoteDocumentationOfServiceEvent2PreciseToTheMinute ProgressNoteDocumentationOfServiceEvent2IfMorePreciseThanDayIncludeTimeZoneOffset ProgressNoteDocumentationOfServiceEvent2EffectiveTime' constraints.validation.info='ProgressNoteDocumentationOfServiceEvent2PreciseToTheSecond' classCode='PCPR'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteComponentOf constraints.validation.error='ProgressNoteComponentOfEncompassingEncounter6'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteComponentOfEncompassingEncounter6 constraints.validation.error='ProgressNoteComponentOfEncompassingEncounter6PreciseToTheDay ProgressNoteComponentOfEncompassingEncounter6EffectiveTime ProgressNoteComponentOfEncompassingEncounter6Id ProgressNoteComponentOfEncompassingEncounter6Location' constraints.validation.warning='ProgressNoteComponentOfEncompassingEncounter6PreciseToTheMinute ProgressNoteComponentOfEncompassingEncounter6IfMorePreciseThanDayIncludeTimeZoneOffset' constraints.validation.info='ProgressNoteComponentOfEncompassingEncounter6PreciseToTheSecond'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteComponentOfEncompassingEncounter6Location constraints.validation.error='ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1 constraints.validation.error='ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sE1wMN6jEee0kIKIEebuqA" base_Class="_0fjXAEEvEeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostprocedureDiagnosisTemplateId PostprocedureDiagnosisClassCode PostprocedureDiagnosisMoodCode PostprocedureDiagnosisCode PostprocedureDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.51' classCode='ACT' moodCode='EVN' code.code='59769-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Postprocedure Diagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sGFGUN6jEee0kIKIEebuqA" base_Class="_0baBYEEwEeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisTemplateId PreoperativeDiagnosisClassCode PreoperativeDiagnosisMoodCode PreoperativeDiagnosisCode PreoperativeDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.65' classCode='ACT' moodCode='EVN' code.code='10219-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Preoperative Diagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sHwhUN6jEee0kIKIEebuqA" base_Class="_4qKukEE1EeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InstructionsSectionTemplateId InstructionsSectionCode InstructionsSectionCodeP InstructionsSectionTitle InstructionsSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.45' code.code='69730-0' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Instructions' constraints.validation.warning='InstructionsSectionInstructions'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sInc8N6jEee0kIKIEebuqA" base_Class="_LNP08EFGEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdmissionMedicationTemplateId AdmissionMedicationClassCode AdmissionMedicationMoodCode AdmissionMedicationCodeP AdmissionMedicationMedicationActivity' templateId.root='2.16.840.1.113883.10.20.22.4.36' classCode='ACT' moodCode='EVN' code.code='42346-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Medications on Admission' constraints.validation.info='AdmissionMedicationCode' constraints.validation.dependOn.AdmissionMedicationCode='AdmissionMedicationCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sJ85sN6jEee0kIKIEebuqA" base_Class="_5K6mAEFHEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionDiagnosisTemplateId HospitalAdmissionDiagnosisClassCode HospitalAdmissionDiagnosisMoodCode HospitalAdmissionDiagnosisCode HospitalAdmissionDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.34' classCode='ACT' moodCode='EVN' code.code='46241-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Admission diagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sUlcYN6jEee0kIKIEebuqA" base_Class="_XwBooEUuEeGdQ4KWAmnbhw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId DiagnosticImagingReportSectionsHaveText GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP GeneralHeaderConstraintsId DiagnosticImagingReportInformant DiagnosticImagingReportDocumentationOf DiagnosticImagingReportFindingsSection DiagnosticImagingReportParticipantAssociatedEntityPersonName DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReportParticipantAssociatedEntity DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode DiagnosticImagingReportDocumentationOfServiceEvent4Code DiagnosticImagingReportDocumentationOfServiceEvent3 DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheDay DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime DiagnosticImagingReportComponentOfEncompassingEncounter7Id DiagnosticImagingReportComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.5' constraints.validation.warning='DiagnosticImagingReportUseDiagnosticImagingCode DiagnosticImagingReportAllSectionsHaveTitle DiagnosticImagingReportDICOMObjectCatalogSection DiagnosticImagingReportDocumentationOfServiceEvent4Id DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheMinute DiagnosticImagingReportComponentOfEncompassingEncounter7IfMorePreciseThanDayIncludeTimeZoneOffset DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.GeneralHeaderConstraintsCode='GeneralHeaderConstraintsCodeP' constraints.validation.info='DiagnosticImagingReportInformationRecipient DiagnosticImagingReportParticipant1 DiagnosticImagingReportInFulfillmentOf DiagnosticImagingReportRelatedDocument DiagnosticImagingReportComponentOf DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheSecond DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty' constraints.validation.query='DiagnosticImagingReportParticipantAssociatedEntityPersonName DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReportParticipantAssociatedEntity DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode DiagnosticImagingReportDocumentationOfServiceEvent4Code DiagnosticImagingReportDocumentationOfServiceEvent4Id DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer DiagnosticImagingReportDocumentationOfServiceEvent3 DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheDay DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheMinute DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheSecond DiagnosticImagingReportComponentOfEncompassingEncounter7IfMorePreciseThanDayIncludeTimeZoneOffset DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime DiagnosticImagingReportComponentOfEncompassingEncounter7Id DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty DiagnosticImagingReportComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportParticipant constraints.validation.error='DiagnosticImagingReportParticipantAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportParticipantAssociatedEntity constraints.validation.error='DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportParticipantAssociatedEntityPerson constraints.validation.error='DiagnosticImagingReportParticipantAssociatedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportDocumentationOf constraints.validation.error='DiagnosticImagingReportDocumentationOfServiceEvent3'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportDocumentationOfServiceEvent4 classCode='ACT' constraints.validation.error='DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode DiagnosticImagingReportDocumentationOfServiceEvent4Code' constraints.validation.warning='DiagnosticImagingReportDocumentationOfServiceEvent4Id DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportComponentOf constraints.validation.error='DiagnosticImagingReportComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportComponentOfEncompassingEncounter7 constraints.validation.error='DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheDay DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime DiagnosticImagingReportComponentOfEncompassingEncounter7Id' constraints.validation.warning='DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheMinute DiagnosticImagingReportComponentOfEncompassingEncounter7IfMorePreciseThanDayIncludeTimeZoneOffset DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant' constraints.validation.info='DiagnosticImagingReportComponentOfEncompassingEncounter7PreciseToTheSecond DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty constraints.validation.error='DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity constraints.validation.warning='DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sZg_sN6jEee0kIKIEebuqA" base_Class="_H1UdcEVEEeGAh_iQGJvI5w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicianReadingStudyPerformerTemplateId PhysicianReadingStudyPerformerTypeCode PhysicianReadingStudyPerformerAssignedEntity PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityId PhysicianReadingStudyPerformerAssignedEntityCode' templateId.root='2.16.840.1.113883.10.20.6.2.1' constraints.validation.info='PhysicianReadingStudyPerformerTime PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS' typeCode='PRF' constraints.validation.query='PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId PhysicianReadingStudyPerformerAssignedEntityId PhysicianReadingStudyPerformerAssignedEntityCode' constraints.validation.warning='PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS PhysicianReadingStudyPerformerGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianReadingStudyPerformerAssignedEntity constraints.validation.error='PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityId PhysicianReadingStudyPerformerAssignedEntityCode' constraints.validation.warning='PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sakvoN6jEee0kIKIEebuqA" base_Class="_H_izsEb1EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicianofRecordParticipantTemplateId PhysicianofRecordParticipantTypeCode PhysicianofRecordParticipantAssignedEntity PhysicianofRecordParticipantAssignedEntityHasDICOMOrNUCCCode PhysicianofRecordParticipantAssignedEntityCode PhysicianofRecordParticipantAssignedEntityId' templateId.root='2.16.840.1.113883.10.20.6.2.2' typeCode='ATND' constraints.validation.warning='PhysicianofRecordParticipantAssignedEntityAssignedPersonName PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityAssignedPerson' constraints.validation.query='PhysicianofRecordParticipantAssignedEntityAssignedPersonName PhysicianofRecordParticipantAssignedEntityHasDICOMOrNUCCCode PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityCode PhysicianofRecordParticipantAssignedEntityId PhysicianofRecordParticipantAssignedEntityAssignedPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianofRecordParticipantAssignedEntity constraints.validation.error='PhysicianofRecordParticipantAssignedEntityHasDICOMOrNUCCCode PhysicianofRecordParticipantAssignedEntityCode PhysicianofRecordParticipantAssignedEntityId' constraints.validation.warning='PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityAssignedPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianofRecordParticipantAssignedEntityAssignedPerson constraints.validation.warning='PhysicianofRecordParticipantAssignedEntityAssignedPersonName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sch3cN6jEee0kIKIEebuqA" base_Class="_vjf-wEb4EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='StudyActTemplateId StudyActIdsHaveRoot StudyActNoIdExtension StudyActReferenceValue StudyActClassCode StudyActMoodCode StudyActId StudyActCode StudyActSeriesAct' templateId.root='2.16.840.1.113883.10.20.6.2.6' constraints.validation.warning='StudyActTextReference StudyActTextReferenceValue StudyActEffectiveTime' classCode='ACT' moodCode='EVN' code.code='113014' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' constraints.validation.info='StudyActText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sc9VQN6jEee0kIKIEebuqA" base_Class="_N2wscEb6EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SeriesActTemplateId SeriesActIdHasRoot SeriesActIdNoExtension SeriesActCodeQualifier SeriesActCodeQualifierCode SeriesActCodeQualifierValue SeriesActCodeQualifierValueCode SeriesActClassCode SeriesActMoodCode SeriesActCode SeriesActId SeriesActSOPInstanceObservation' templateId.root='2.16.840.1.113883.10.20.22.4.63' classCode='ACT' moodCode='EVN' code.code='113015' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' constraints.validation.warning='SeriesActEffectiveTime' constraints.validation.info='SeriesActText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sdaBMN6jEee0kIKIEebuqA" base_Class="_9o7WcEb6EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SOPInstanceObservationTemplateId SOPInstanceObservationEffectiveTimeHasValue SOPInstanceObservationEffectiveTimeNoLow SOPInstanceObservationEffectiveTimeNoHigh SOPInstanceObservationTextMediaType SOPInstanceObservationTextReference SOPInstanceObservationTextReferenceValue SOPInstanceObservationClassCode SOPInstanceObservationId SOPInstanceObservationMoodCode SOPInstanceObservationCode SOPInstanceObservationCodeP' templateId.root='2.16.840.1.113883.10.20.6.2.8' classCode='DGIMG' constraints.validation.warning='SOPInstanceObservationEffectiveTime SOPInstanceObservationText' moodCode='EVN' code.codeSystem='1.2.840.10008.2.6.1' code.codeSystemName='DCMUID' constraints.validation.dependOn.SOPInstanceObservationCode='SOPInstanceObservationCodeP' constraints.validation.info='SOPInstanceObservationSOPInstanceObservation SOPInstanceObservationPurposeofReferenceObservation SOPInstanceObservationReferencedFramesObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sd6-kN6jEee0kIKIEebuqA" base_Class="_J-F8UEb7EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PurposeofReferenceObservationTemplateId PurposeofReferenceObservationClassCode PurposeofReferenceObservationCode PurposeofReferenceObservationMoodCode' templateId.root='2.16.840.1.113883.10.20.6.2.9' constraints.validation.warning='PurposeofReferenceObservationCodeCodeSystem PurposeofReferenceObservationValue' classCode='OBS' moodCode='EVN' value.codeSystem='1.2.840.10008.2.16.4' value.codeSystemName='DCM'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sepXUN6jEee0kIKIEebuqA" base_Class="_1Zyf4Eb8EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReferencedFramesObservationTemplateId ReferencedFramesObservationClassCode ReferencedFramesObservationMoodCode ReferencedFramesObservationCode ReferencedFramesObservationBoundaryObservation' templateId.root='2.16.840.1.113883.10.20.6.2.10' classCode='ROIBND' moodCode='EVN' code.code='121190' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' code.displayName='Referenced Frames'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_se4A0N6jEee0kIKIEebuqA" base_Class="_9Yv6gEb8EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='BoundaryObservationTemplateId BoundaryObservationClassCode BoundaryObservationCode BoundaryObservationMoodCode BoundaryObservationValue' templateId.root='2.16.840.1.113883.10.20.6.2.11' classCode='OBS' code.code='113036' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' code.displayName='Frames for Display' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sfJGkN6jEee0kIKIEebuqA" base_Class="_9xjKIEb-EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='TextObservationTemplateId TextObservationReferenceValue TextObservationClassCode TextObservationMoodCode TextObservationCode TextObservationValue' templateId.root='2.16.840.1.113883.10.20.6.2.12' constraints.validation.warning='TextObservationTextReference TextObservationTextReferenceValue TextObservationEffectiveTime' classCode='OBS' moodCode='EVN' constraints.validation.info='TextObservationText TextObservationSOPInstanceObservation TextObservationQuantityMeasurementObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sfhhEN6jEee0kIKIEebuqA" base_Class="_Px2t4Eb_EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='QuantityMeasurementObservationTemplateId QuantityMeasurementObservationClassCode QuantityMeasurementObservationMoodCode QuantityMeasurementObservationCode QuantityMeasurementObservationValue' templateId.root='2.16.840.1.113883.10.20.6.2.14' constraints.validation.warning='QuantityMeasurementObservationCodeCodeSystemDIR QuantityMeasurementObservationCodeCodeSystemDICOM QuantityMeasurementObservationEffectiveTime' classCode='OBS' moodCode='EVN' constraints.validation.info='QuantityMeasurementObservationSOPInstanceObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sf24QN6jEee0kIKIEebuqA" base_Class="_pmiz8Eb_EeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CodeObservationsTemplateId CodeObservationsClassCode CodeObservationsMoodCode CodeObservationsCode CodeObservationsValue' templateId.root='2.16.840.1.113883.10.20.6.2.13' classCode='OBS' moodCode='EVN' constraints.validation.warning='CodeObservationsEffectiveTime' constraints.validation.info='CodeObservationsSOPInstanceObservation CodeObservationsQuantityMeasurementObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sgJzMN6jEee0kIKIEebuqA" base_Class="_crHC0EcAEeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureContextTemplateId ProcedureContextEffectiveTimeValue ProcedureContextClassCode ProcedureContextMoodCode ProcedureContextCode' templateId.root='2.16.840.1.113883.10.20.6.2.5' classCode='ACT' moodCode='EVN' constraints.validation.warning='ProcedureContextEffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_sycdEN6jEee0kIKIEebuqA" base_Class="_Ker6MOM2EeGfv4R-kzpM0g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterDiagnosisTemplateId EncounterDiagnosisClassCode EncounterDiagnosisMoodCode EncounterDiagnosisCode EncounterDiagnosisCodeP EncounterDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.80' classCode='ACT' moodCode='EVN' code.code='29308-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Diagnosis' constraints.validation.dependOn.EncounterDiagnosisCode='EncounterDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s0x_YN6jEee0kIKIEebuqA" base_Class="_RYJj0OWQEeGKmvzED_He2w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SmokingStatusObservationTemplateId SmokingStatusObservationClassCode SmokingStatusObservationMoodCode SmokingStatusObservationCode SmokingStatusObservationStatusCode SmokingStatusObservationStatusCodeP SmokingStatusObservationEffectiveTime SmokingStatusObservationValue SmokingStatusObservationValueP SmokingStatusObservationCDCodeTermAssertionOrLoinc SmokingStatusObservationCDCode SmokingStatusObservationCDCodeSystem' templateId.root='2.16.840.1.113883.10.20.22.4.78' classCode='OBS' moodCode='EVN' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.query='SmokingStatusObservationCDCodeTermAssertionOrLoinc SmokingStatusObservationCDCode SmokingStatusObservationCDCodeSystem SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth' constraints.validation.warning='SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSmokingStatusObservationIVLTS constraints.validation.warning='SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSmokingStatusObservationCD constraints.validation.error='SmokingStatusObservationCDCodeTermAssertionOrLoinc SmokingStatusObservationCDCode SmokingStatusObservationCDCodeSystem'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s2MUoN6jEee0kIKIEebuqA" base_Class="_gIH_QOWQEeGKmvzED_He2w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='TobaccoUseTemplateId TobaccoUseEffectiveTimeLow TobaccoUseClassCode TobaccoUseMoodCode TobaccoUseCode TobaccoUseStatusCode TobaccoUseStatusCodeP TobaccoUseEffectiveTime TobaccoUseValue TobaccoUseValueP TobaccoUseCDCodeTermAssertionOrLoinc TobaccoUseCDCode TobaccoUseCDCodeSystem' templateId.root='2.16.840.1.113883.10.20.22.4.85' classCode='OBS' moodCode='EVN' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.query='TobaccoUseCDCodeTermAssertionOrLoinc TobaccoUseCDCode TobaccoUseCDCodeSystem'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTobaccoUseCD constraints.validation.error='TobaccoUseCDCodeTermAssertionOrLoinc TobaccoUseCDCode TobaccoUseCDCodeSystem'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s4zjwN6jEee0kIKIEebuqA" base_Class="_Zi33YOYxEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssessmentScaleObservationTemplateId AssessmentScaleObservationClassCode AssessmentScaleObservationMoodCode AssessmentScaleObservationCode AssessmentScaleObservationEffectiveTime AssessmentScaleObservationId AssessmentScaleObservationStatusCode AssessmentScaleObservationStatusCodeP AssessmentScaleObservationValue AssessmentScaleObservationReferenceRangeObservationRangeReferenceValue AssessmentScaleObservationReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.69' constraints.validation.warning='AssessmentScaleObservationCodeCodeSystem AssessmentScaleObservationAssessmentScaleSupportingObservation AssessmentScaleObservationReferenceRangeObservationRangeTextReference AssessmentScaleObservationReferenceRangeObservationRangeText' constraints.validation.info='AssessmentScaleObservationInterpretationCodeTranslation AssessmentScaleObservationDerivationExpr AssessmentScaleObservationInterpretationCode AssessmentScaleObservationAuthor AssessmentScaleObservationReferenceRange AssessmentScaleObservationReferenceRangeObservationRangeTextReferenceValue' classCode='OBS' moodCode='EVN' statusCode.code='completed' constraints.validation.query='AssessmentScaleObservationReferenceRangeObservationRangeTextReference AssessmentScaleObservationReferenceRangeObservationRangeTextReferenceValue AssessmentScaleObservationReferenceRangeObservationRangeReferenceValue AssessmentScaleObservationReferenceRangeObservationRangeText AssessmentScaleObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAssessmentScaleObservationReferenceRange constraints.validation.error='AssessmentScaleObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAssessmentScaleObservationReferenceRangeObservationRange constraints.validation.warning='AssessmentScaleObservationReferenceRangeObservationRangeTextReference AssessmentScaleObservationReferenceRangeObservationRangeText' constraints.validation.info='AssessmentScaleObservationReferenceRangeObservationRangeTextReferenceValue' constraints.validation.error='AssessmentScaleObservationReferenceRangeObservationRangeReferenceValue'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s6u2YN6jEee0kIKIEebuqA" base_Class="_1ZKPgOY2EeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssessmentScaleSupportingObservationTemplateId AssessmentScaleSupportingObservationCodeCodeSystem AssessmentScaleSupportingObservationClassCode AssessmentScaleSupportingObservationMoodCode AssessmentScaleSupportingObservationCode AssessmentScaleSupportingObservationId AssessmentScaleSupportingObservationStatusCode AssessmentScaleSupportingObservationStatusCodeP AssessmentScaleSupportingObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.86' constraints.validation.info='AssessmentScaleSupportingObservationValueTranslation' classCode='OBS' moodCode='EVN' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s7lK8N6jEee0kIKIEebuqA" base_Class="__pNCUOY-EeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CaregiverCharacteristicsTemplateId CaregiverCharacteristicsValueCodeSystem CaregiverCharacteristicsClassCode CaregiverCharacteristicsMoodCode CaregiverCharacteristicsId CaregiverCharacteristicsCode CaregiverCharacteristicsStatusCode CaregiverCharacteristicsStatusCodeP CaregiverCharacteristicsValue CaregiverCharacteristicsParticipant CaregiverCharacteristicsParticipantParticipantRoleClassCode CaregiverCharacteristicsParticipantTimeLow CaregiverCharacteristicsParticipantTypeCode CaregiverCharacteristicsParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.72' classCode='OBS' moodCode='EVN' statusCode.code='completed' constraints.validation.query='CaregiverCharacteristicsParticipantParticipantRoleClassCode CaregiverCharacteristicsParticipantTimeLow CaregiverCharacteristicsParticipantTimeHigh CaregiverCharacteristicsParticipantTypeCode CaregiverCharacteristicsParticipantTime CaregiverCharacteristicsParticipantParticipantRole' constraints.validation.info='CaregiverCharacteristicsParticipantTimeHigh CaregiverCharacteristicsParticipantTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCaregiverCharacteristicsParticipant constraints.validation.error='CaregiverCharacteristicsParticipantTimeLow CaregiverCharacteristicsParticipantTypeCode CaregiverCharacteristicsParticipantParticipantRole' constraints.validation.info='CaregiverCharacteristicsParticipantTimeHigh CaregiverCharacteristicsParticipantTime' typeCode='IND'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCaregiverCharacteristicsParticipantParticipantRole classCode='CAREGIVER' constraints.validation.error='CaregiverCharacteristicsParticipantParticipantRoleClassCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_s9zYgN6jEee0kIKIEebuqA" base_Class="_6kIXMOZEEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationUseNoneKnownTemplateId MedicationUseNoneKnownReferenceValue MedicationUseNoneKnownClassCode MedicationUseNoneKnownMoodCode MedicationUseNoneKnownId MedicationUseNoneKnownCode MedicationUseNoneKnownCodeP MedicationUseNoneKnownStatusCode MedicationUseNoneKnownStatusCodeP MedicationUseNoneKnownValue MedicationUseNoneKnownValueP' templateId.root='2.16.840.1.113883.10.20.22.4.29' constraints.validation.warning='MedicationUseNoneKnownTextReference MedicationUseNoneKnownTextReferenceValue MedicationUseNoneKnownEffectiveTime' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.MedicationUseNoneKnownCode='MedicationUseNoneKnownCodeP' statusCode.code='completed' constraints.validation.info='MedicationUseNoneKnownText' value.code='182904002' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' value.displayName='Drug treatment unknown'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_s_uEEN6jEee0kIKIEebuqA" base_Generalization="_JGpG8OZcEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_s_vSMN6jEee0kIKIEebuqA" base_Class="_dXKPQOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId ProblemObservationHasTextReferenceValue ProblemObservationHasOnsetDate ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCodeP ProblemObservationStatusCode ProblemObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.73' constraints.validation.warning='ProblemObservationHasTextReference ProblemObservationHasResolutionDate ProblemObservationCode ProblemObservationText ProblemObservationEffectiveTime ProblemObservationValue' classCode='OBS' moodCode='EVN' constraints.validation.info='ProblemObservationNegationInd CognitiveStatusProblemObservationMethodCode CognitiveStatusProblemObservationNonMedicinalSupplyActivity CognitiveStatusProblemObservationCaregiverCharacteristics CognitiveStatusProblemObservationAssessmentScaleObservation' code.code='373930000' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Cognitive function finding' constraints.validation.dependOn.ProblemObservationCode='ProblemObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationValue='ProblemObservationValueP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_tBtBEN6jEee0kIKIEebuqA" base_Generalization="_gLy9QOZfEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_tBuPMN6jEee0kIKIEebuqA" base_Class="_gkBM0OZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationTextReferenceValue ResultObservationClassCode ResultObservationMoodCode ResultObservationId ResultObservationCodeP ResultObservationStatusCode ResultObservationStatusCodeP ResultObservationEffectiveTime ResultObservationValue CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode CognitiveStatusResultObservationReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.74' constraints.validation.warning='ResultObservationTextReference CognitiveStatusResultObservationValueDatatype ResultObservationCode ResultObservationText ResultObservationInterpretationCode CognitiveStatusResultObservationReferenceRange' classCode='OBS' moodCode='EVN' code.code='373930000' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Cognitive function finding' constraints.validation.dependOn.ResultObservationCode='ResultObservationCodeP' statusCode.code='completed' constraints.validation.dependOn.ResultObservationStatusCode='ResultObservationStatusCodeP' constraints.validation.info='ResultObservationMethodCode ResultObservationTargetSiteCode CognitiveStatusResultObservationAuthor CognitiveStatusResultObservationNonMedicinalSupplyActivity CognitiveStatusResultObservationCaregiverCharacteristics CognitiveStatusResultObservationAssessmentScaleObservation' constraints.validation.query='CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode CognitiveStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCognitiveStatusResultObservationReferenceRange constraints.validation.error='CognitiveStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCognitiveStatusResultObservationReferenceRangeObservationRange constraints.validation.error='CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_tC_agN6jEee0kIKIEebuqA" base_Generalization="_-QfYkOZiEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_tDAooN6jEee0kIKIEebuqA" base_Class="_jfoCUOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerClassCode ResultOrganizerMoodCode ResultOrganizerId ResultOrganizerCode ResultOrganizerStatusCode ResultOrganizerStatusCodeP ResultOrganizerResultObservation' templateId.root='2.16.840.1.113883.10.20.22.4.75' constraints.validation.warning='CognitiveStatusResultOrganizerCodeCodeSystem' classCode='CLUSTER' moodCode='EVN' statusCode.code='completed' constraints.validation.dependOn.ResultOrganizerStatusCode='ResultOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tDg-8N6jEee0kIKIEebuqA" base_Class="_lm3boOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DeceasedObservationTemplateId DeceasedObservationEffectiveTimeLow DeceasedObservationClassCode DeceasedObservationMoodCode DeceasedObservationId DeceasedObservationCode DeceasedObservationCodeP DeceasedObservationStatusCode DeceasedObservationStatusCodeP DeceasedObservationEffectiveTime DeceasedObservationValue DeceasedObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.79' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.DeceasedObservationCode='DeceasedObservationCodeP' statusCode.code='completed' value.code='419099009' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' value.displayName='Dead' constraints.validation.warning='DeceasedObservationProblemObservation'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_tEJREN6jEee0kIKIEebuqA" base_Generalization="_whRx8ObjEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_tELGQN6jEee0kIKIEebuqA" base_Class="_rVl5AOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId ProblemObservationHasTextReferenceValue ProblemObservationHasOnsetDate ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCodeP ProblemObservationStatusCode ProblemObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.68' constraints.validation.warning='ProblemObservationHasTextReference ProblemObservationTextReferenceValue ProblemObservationHasResolutionDate ProblemObservationCode ProblemObservationText ProblemObservationEffectiveTime ProblemObservationValue' constraints.validation.info='ProblemObservationValueNullFlavor ProblemObservationNegationInd FunctionalStatusProblemObservationMethodCode FunctionalStatusProblemObservationNonMedicinalSupplyActivity FunctionalStatusProblemObservationCaregiverCharacteristics FunctionalStatusProblemObservationAssessmentScaleObservation' classCode='OBS' moodCode='EVN' code.code='248536006' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='finding of functional performance and activity' constraints.validation.dependOn.ProblemObservationCode='ProblemObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationValue='ProblemObservationValueP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_tGOUsN6jEee0kIKIEebuqA" base_Generalization="_dM_VcObxEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_tGQJ4N6jEee0kIKIEebuqA" base_Class="_viRU0OZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationTextReferenceValue ResultObservationClassCode ResultObservationMoodCode ResultObservationId ResultObservationCodeP ResultObservationStatusCode ResultObservationStatusCodeP ResultObservationEffectiveTime ResultObservationValue FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode FunctionalStatusResultObservationReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.67' constraints.validation.warning='ResultObservationTextReference FunctionalStatusResultObservationValueDatatype ResultObservationCode ResultObservationText ResultObservationInterpretationCode FunctionalStatusResultObservationReferenceRange' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ResultObservationCode='ResultObservationCodeP' statusCode.code='completed' constraints.validation.dependOn.ResultObservationStatusCode='ResultObservationStatusCodeP' constraints.validation.info='ResultObservationMethodCode ResultObservationTargetSiteCode FunctionalStatusResultObservationAuthor FunctionalStatusResultObservationNonMedicinalSupplyActivity FunctionalStatusResultObservationCaregiverCharacteristics FunctionalStatusResultObservationAssessmentScaleObservation' constraints.validation.query='FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode FunctionalStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFunctionalStatusResultObservationReferenceRange constraints.validation.error='FunctionalStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFunctionalStatusResultObservationReferenceRangeObservationRange constraints.validation.error='FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_tHeR4N6jEee0kIKIEebuqA" base_Generalization="_8KA8YObzEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_tHfgAN6jEee0kIKIEebuqA" base_Class="_zBlUUOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerClassCode ResultOrganizerMoodCode ResultOrganizerId ResultOrganizerCode ResultOrganizerStatusCode ResultOrganizerStatusCodeP FunctionalStatusResultOrganizerFunctionalStatusResultObservation' templateId.root='2.16.840.1.113883.10.20.22.4.66' constraints.validation.warning='ResultOrganizerCodeValue' classCode='CLUSTER' moodCode='EVN' statusCode.code='completed' constraints.validation.dependOn.ResultOrganizerStatusCode='ResultOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tH_2UN6jEee0kIKIEebuqA" base_Class="_4YgVsOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HighestPressureUlcerStageTemplateId HighestPressureUlcerStageClassCode HighestPressureUlcerStageMoodCode HighestPressureUlcerStageId HighestPressureUlcerStageCode HighestPressureUlcerStageCodeP HighestPressureUlcerStageValue' templateId.root='2.16.840.1.113883.10.20.22.4.77' classCode='OBS' moodCode='EVN' code.code='420905001' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Highest Pressure Ulcer Stage' constraints.validation.dependOn.HighestPressureUlcerStageCode='HighestPressureUlcerStageCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tIXpwN6jEee0kIKIEebuqA" base_Class="_7c4ssOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NumberOfPressureUlcersObservationTemplateId NumberOfPressureUlcersObservationClassCode NumberOfPressureUlcersObservationMoodCode NumberOfPressureUlcersObservationId NumberOfPressureUlcersObservationCode NumberOfPressureUlcersObservationCodeP NumberOfPressureUlcersObservationStatusCode NumberOfPressureUlcersObservationStatusCodeP NumberOfPressureUlcersObservationEffectiveTime NumberOfPressureUlcersObservationValue NumberOfPressureUlcersObservationEntryRelationship NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservationEntryRelationshipObservationValueP NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation' templateId.root='2.16.840.1.113883.10.20.22.4.76' classCode='OBS' moodCode='EVN' code.code='2264892003' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='number of pressure ulcers' constraints.validation.dependOn.NumberOfPressureUlcersObservationCode='NumberOfPressureUlcersObservationCodeP' statusCode.code='completed' constraints.validation.info='NumberOfPressureUlcersObservationAuthor' constraints.validation.query='NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservationEntryRelationshipObservationValue NumberOfPressureUlcersObservationEntryRelationshipObservationValueP NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation' constraints.validation.warning='NumberOfPressureUlcersObservationEntryRelationshipObservationValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolNumberOfPressureUlcersObservationEntryRelationship typeCode='SUBJ' constraints.validation.error='NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolNumberOfPressureUlcersObservationEntryRelationshipObservation classCode='OBS' constraints.validation.error='NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservationEntryRelationshipObservationValueP' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='NumberOfPressureUlcersObservationEntryRelationshipObservationValue'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tJ-zUN6jEee0kIKIEebuqA" base_Class="_9rQowOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PressureUlcerObservationTemplateId PressureUlcerObservationTextReferenceValue PressureUlcerObservationHasTextReferenceValue PressureUlcerObservationTargetSiteQualifierName PressureUlcerObservationTargetSiteQualifierValue PressureUlcerObservationClassCode PressureUlcerObservationMoodCode PressureUlcerObservationId PressureUlcerObservationCodeP PressureUlcerObservationStatusCode PressureUlcerObservationEffectiveTime PressureUlcerObservationValueP PressureUlcerObservationEntryRelationship1Observation1ClassCode PressureUlcerObservationEntryRelationship1Observation1MoodCode PressureUlcerObservationEntryRelationship1Observation1CodeP PressureUlcerObservationEntryRelationship1Observation1Code PressureUlcerObservationEntryRelationship1Observation1Value PressureUlcerObservationEntryRelationship1TypeCode PressureUlcerObservationEntryRelationship1Observation1 PressureUlcerObservationEntryRelationship2Observation2ClassCode PressureUlcerObservationEntryRelationship2Observation2MoodCode PressureUlcerObservationEntryRelationship2Observation2CodeP PressureUlcerObservationEntryRelationship2Observation2Code PressureUlcerObservationEntryRelationship2Observation2Value PressureUlcerObservationEntryRelationship2TypeCode PressureUlcerObservationEntryRelationship2Observation2 PressureUlcerObservationEntryRelationship3Observation3ClassCode PressureUlcerObservationEntryRelationship3Observation3MoodCode PressureUlcerObservationEntryRelationship3Observation3CodeP PressureUlcerObservationEntryRelationship3Observation3Code PressureUlcerObservationEntryRelationship3Observation3Value PressureUlcerObservationEntryRelationship3TypeCode PressureUlcerObservationEntryRelationship3Observation3' templateId.root='2.16.840.1.113883.10.20.22.4.70' constraints.validation.warning='PressureUlcerObservationHasTextReference PressureUlcerObservationTargetSiteQualifier PressureUlcerObservationTargetSiteQualifierNameCode PressureUlcerObservationTargetSiteQualifierValueCode PressureUlcerObservationCode PressureUlcerObservationText PressureUlcerObservationValue PressureUlcerObservationTargetSiteCode PressureUlcerObservationTargetSiteCodeP PressureUlcerObservationEntryRelationship PressureUlcerObservationEntryRelationship2 PressureUlcerObservationEntryRelationship3' constraints.validation.info='PressureUlcerObservationValueNullFlavor PressureUlcerObservationNegationInd' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.PressureUlcerObservationCode='PressureUlcerObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PressureUlcerObservationTargetSiteCode='PressureUlcerObservationTargetSiteCodeP' constraints.validation.query='PressureUlcerObservationEntryRelationship1Observation1ClassCode PressureUlcerObservationEntryRelationship1Observation1MoodCode PressureUlcerObservationEntryRelationship1Observation1CodeP PressureUlcerObservationEntryRelationship1Observation1Code PressureUlcerObservationEntryRelationship1Observation1Value PressureUlcerObservationEntryRelationship1TypeCode PressureUlcerObservationEntryRelationship1Observation1 PressureUlcerObservationEntryRelationship2Observation2ClassCode PressureUlcerObservationEntryRelationship2Observation2MoodCode PressureUlcerObservationEntryRelationship2Observation2CodeP PressureUlcerObservationEntryRelationship2Observation2Code PressureUlcerObservationEntryRelationship2Observation2Value PressureUlcerObservationEntryRelationship2TypeCode PressureUlcerObservationEntryRelationship2Observation2 PressureUlcerObservationEntryRelationship3Observation3ClassCode PressureUlcerObservationEntryRelationship3Observation3MoodCode PressureUlcerObservationEntryRelationship3Observation3CodeP PressureUlcerObservationEntryRelationship3Observation3Code PressureUlcerObservationEntryRelationship3Observation3Value PressureUlcerObservationEntryRelationship3TypeCode PressureUlcerObservationEntryRelationship3Observation3' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship1Observation1Code='PressureUlcerObservationEntryRelationship1Observation1CodeP' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship2Observation2Code='PressureUlcerObservationEntryRelationship2Observation2CodeP' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship3Observation3Code='PressureUlcerObservationEntryRelationship3Observation3CodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship1 typeCode='COMP' constraints.validation.error='PressureUlcerObservationEntryRelationship1TypeCode PressureUlcerObservationEntryRelationship1Observation1'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship1Observation1 classCode='OBS' constraints.validation.error='PressureUlcerObservationEntryRelationship1Observation1ClassCode PressureUlcerObservationEntryRelationship1Observation1MoodCode PressureUlcerObservationEntryRelationship1Observation1Code PressureUlcerObservationEntryRelationship1Observation1CodeP PressureUlcerObservationEntryRelationship1Observation1Value' moodCode='EVN' code.code='401238003' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Length of Wound' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship1Observation1Code='PressureUlcerObservationEntryRelationship1Observation1CodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship2 typeCode='COMP' constraints.validation.error='PressureUlcerObservationEntryRelationship2TypeCode PressureUlcerObservationEntryRelationship2Observation2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship2Observation2 classCode='OBS' constraints.validation.error='PressureUlcerObservationEntryRelationship2Observation2ClassCode PressureUlcerObservationEntryRelationship2Observation2MoodCode PressureUlcerObservationEntryRelationship2Observation2Code PressureUlcerObservationEntryRelationship2Observation2CodeP PressureUlcerObservationEntryRelationship2Observation2Value' moodCode='EVN' code.code='401239006' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Width of Wound' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship2Observation2Code='PressureUlcerObservationEntryRelationship2Observation2CodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship3 typeCode='COMP' constraints.validation.error='PressureUlcerObservationEntryRelationship3TypeCode PressureUlcerObservationEntryRelationship3Observation3'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPressureUlcerObservationEntryRelationship3Observation3 classCode='OBS' constraints.validation.error='PressureUlcerObservationEntryRelationship3Observation3ClassCode PressureUlcerObservationEntryRelationship3Observation3MoodCode PressureUlcerObservationEntryRelationship3Observation3Code PressureUlcerObservationEntryRelationship3Observation3CodeP PressureUlcerObservationEntryRelationship3Observation3Value' moodCode='EVN' code.code='425094009' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Depth of Wound' constraints.validation.dependOn.PressureUlcerObservationEntryRelationship3Observation3Code='PressureUlcerObservationEntryRelationship3Observation3CodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tlqpwN6jEee0kIKIEebuqA" base_Class="_TkyvwPKwEeGFUPBL8qS7yQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FetusSubjectContextTemplateId FetusSubjectContextCode FetusSubjectContextSubject' templateId.root='2.16.840.1.113883.10.20.6.2.3' code.code='121026' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFetusSubjectContextSubjectPerson constraints.validation.error='FetusSubjectContextSubjectPersonName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tmPRgN6jEee0kIKIEebuqA" base_Class="_XIE-YPKyEeGFUPBL8qS7yQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ObserverContextTemplateId ObserverContextAssignedAuthor' templateId.root='2.16.840.1.113883.10.20.6.2.4'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolObserverContextAssignedAuthor constraints.validation.error='ObserverContextAssignedAuthorHasAssignedPersonorAuthoringDevice ObserverContextAssignedAuthorId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ts89gN6jEee0kIKIEebuqA" base_Class="_u_keoIkOEeOJGtGyq_dBbA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EntryReferenceTemplateId EntryReferenceClassCode EntryReferenceMoodCode EntryReferenceId EntryReferenceCode EntryReferenceStatusCodeP EntryReferenceIINullFlavor EntryReferenceCDNullFlavor EntryReferenceCDNullFlavorP' templateId.root='2.16.840.1.113883.10.20.22.4.122' classCode='ACT' moodCode='EVN' statusCode.code='completed' constraints.validation.info='EntryReferenceStatusCode' constraints.validation.query='EntryReferenceIINullFlavor EntryReferenceCDNullFlavor EntryReferenceCDNullFlavorP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEntryReferenceCD nullFlavor='NP' constraints.validation.error='EntryReferenceCDNullFlavor EntryReferenceCDNullFlavorP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEntryReferenceII constraints.validation.error='EntryReferenceIINullFlavor'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ttcswN6jEee0kIKIEebuqA" base_Class="_Z8VQYIlFEeOJGtGyq_dBbA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectiveOrganizerTemplateId AdvanceDirectiveOrganizerClassCode AdvanceDirectiveOrganizerMoodCode AdvanceDirectiveOrganizerId AdvanceDirectiveOrganizerCode AdvanceDirectiveOrganizerCodeP AdvanceDirectiveOrganizerStatusCode AdvanceDirectiveOrganizerStatusCodeP AdvanceDirectiveOrganizerAdvanceDirectiveObservation2' templateId.root='2.16.840.1.113883.10.20.22.4.108' templateId.extension='2015-08-01' classCode='CLUSTER' moodCode='EVN' code.code='45473-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Advance directive - living will' statusCode.code='completed' constraints.validation.dependOn.AdvanceDirectiveOrganizerStatusCode='AdvanceDirectiveOrganizerStatusCodeP' constraints.validation.warning='AdvanceDirectiveOrganizerAuthorParticipation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tuUPcN6jEee0kIKIEebuqA" base_Class="_O-O-IInUEeOJGtGyq_dBbA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CharacteristicsOfHomeEnvironmentTemplateId CharacteristicsOfHomeEnvironmentClassCode CharacteristicsOfHomeEnvironmentMoodCode CharacteristicsOfHomeEnvironmentId CharacteristicsOfHomeEnvironmentCode CharacteristicsOfHomeEnvironmentCodeP CharacteristicsOfHomeEnvironmentStatusCode CharacteristicsOfHomeEnvironmentStatusCodeP CharacteristicsOfHomeEnvironmentValueP' templateId.root='2.16.840.1.113883.10.20.22.4.109' classCode='OBS' moodCode='EVN' code.code='75274-1' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Characteristics of residence' constraints.validation.dependOn.CharacteristicsOfHomeEnvironmentCode='CharacteristicsOfHomeEnvironmentCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='CharacteristicsOfHomeEnvironmentValue'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tvsIcN6jEee0kIKIEebuqA" base_Class="_Y_oGkIoAEeOoMZgUoTghIg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CognitiveAbilitiesObservationTemplateId CognitiveAbilitiesObservationClassCode CognitiveAbilitiesObservationMoodCode CognitiveAbilitiesObservationId CognitiveAbilitiesObservationCodeP CognitiveAbilitiesObservationStatusCode CognitiveAbilitiesObservationStatusCodeP CognitiveAbilitiesObservationEffectiveTime CognitiveAbilitiesObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.126' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='CognitiveAbilitiesObservationCode CognitiveAbilitiesObservationText CognitiveAbilitiesObservationValue CognitiveAbilitiesObservationAuthorParticipation' constraints.validation.dependOn.CognitiveAbilitiesObservationCode='CognitiveAbilitiesObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='CognitiveAbilitiesObservationAssessmentScaleObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tydvoN6jEee0kIKIEebuqA" base_Class="_H2EzIIqZEeOoMZgUoTghIg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CulturalAndReligiousObservationTemplateId CulturalAndReligiousObservationValueOfTypeCDIsFromSnomed CulturalAndReligiousObservationClassCode CulturalAndReligiousObservationMoodCode CulturalAndReligiousObservationId CulturalAndReligiousObservationCode CulturalAndReligiousObservationCodeP CulturalAndReligiousObservationStatusCode CulturalAndReligiousObservationStatusCodeP CulturalAndReligiousObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.111' classCode='OBS' moodCode='EVN' code.code='75281-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Personal belief' constraints.validation.dependOn.CulturalAndReligiousObservationCode='CulturalAndReligiousObservationCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_tzKTMN6jEee0kIKIEebuqA" base_Class="_MbKs8IqvEeOoMZgUoTghIg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DrugMonitoringActTemplateId DrugMonitoringActClassCode DrugMonitoringActMoodCode DrugMonitoringActId DrugMonitoringActCode DrugMonitoringActCodeP DrugMonitoringActStatusCode DrugMonitoringActStatusCodeP DrugMonitoringActEffectiveTime DrugMonitoringActParticipant DrugMonitoringActParticipantParticipantRolePlayingEntityClassCode DrugMonitoringActParticipantParticipantRolePlayingEntityName DrugMonitoringActParticipantParticipantRoleClassCode DrugMonitoringActParticipantParticipantRoleId DrugMonitoringActParticipantParticipantRolePlayingEntity DrugMonitoringActParticipantTypeCode DrugMonitoringActParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.123' classCode='ACT' moodCode='INT' code.code='395170001' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='medication monitoring (regime/therapy)' constraints.validation.dependOn.DrugMonitoringActCode='DrugMonitoringActCodeP' constraints.validation.query='DrugMonitoringActParticipantParticipantRolePlayingEntityClassCode DrugMonitoringActParticipantParticipantRolePlayingEntityName DrugMonitoringActParticipantParticipantRoleClassCode DrugMonitoringActParticipantParticipantRoleId DrugMonitoringActParticipantParticipantRolePlayingEntity DrugMonitoringActParticipantTypeCode DrugMonitoringActParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDrugMonitoringActParticipant typeCode='RESP' constraints.validation.error='DrugMonitoringActParticipantTypeCode DrugMonitoringActParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDrugMonitoringActParticipantParticipantRole classCode='ASSIGNED' constraints.validation.error='DrugMonitoringActParticipantParticipantRoleClassCode DrugMonitoringActParticipantParticipantRoleId DrugMonitoringActParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDrugMonitoringActParticipantParticipantRolePlayingEntity classCode='PSN' constraints.validation.error='DrugMonitoringActParticipantParticipantRolePlayingEntityClassCode DrugMonitoringActParticipantParticipantRolePlayingEntityName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_t2PcYN6jEee0kIKIEebuqA" base_Class="_POfwAIz7EeOoMZgUoTghIg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HandoffCommunicationParticipantsTemplateId HandoffCommunicationParticipantsClassCode HandoffCommunicationParticipantsMoodCode HandoffCommunicationParticipantsCode HandoffCommunicationParticipantsCodeP HandoffCommunicationParticipantsStatusCode HandoffCommunicationParticipantsStatusCodeP HandoffCommunicationParticipantsEffectiveTime HandoffCommunicationParticipantsParticipant HandoffCommunicationParticipantsAuthorParticipation HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntityName HandoffCommunicationParticipantsParticipantParticipantRoleId HandoffCommunicationParticipantsParticipantParticipantRoleAddr HandoffCommunicationParticipantsParticipantTypeCode HandoffCommunicationParticipantsParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.141' classCode='ACT' moodCode='EVN' code.code='432138007' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='handoff communication (procedure)' constraints.validation.dependOn.HandoffCommunicationParticipantsCode='HandoffCommunicationParticipantsCodeP' statusCode.code='completed' constraints.validation.query='HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntityName HandoffCommunicationParticipantsParticipantParticipantRoleId HandoffCommunicationParticipantsParticipantParticipantRoleCodeP HandoffCommunicationParticipantsParticipantParticipantRoleCode HandoffCommunicationParticipantsParticipantParticipantRoleAddr HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntity HandoffCommunicationParticipantsParticipantTypeCode HandoffCommunicationParticipantsParticipantParticipantRole' constraints.validation.warning='HandoffCommunicationParticipantsParticipantParticipantRoleCodeP HandoffCommunicationParticipantsParticipantParticipantRoleCode' constraints.validation.dependOn.HandoffCommunicationParticipantsParticipantParticipantRoleCode='HandoffCommunicationParticipantsParticipantParticipantRoleCodeP' constraints.validation.info='HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHandoffCommunicationParticipantsParticipant typeCode='IRCP' constraints.validation.error='HandoffCommunicationParticipantsParticipantTypeCode HandoffCommunicationParticipantsParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHandoffCommunicationParticipantsParticipantParticipantRole constraints.validation.error='HandoffCommunicationParticipantsParticipantParticipantRoleId HandoffCommunicationParticipantsParticipantParticipantRoleAddr' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='HandoffCommunicationParticipantsParticipantParticipantRoleCode HandoffCommunicationParticipantsParticipantParticipantRoleCodeP' constraints.validation.dependOn.HandoffCommunicationParticipantsParticipantParticipantRoleCode='HandoffCommunicationParticipantsParticipantParticipantRoleCodeP' constraints.validation.info='HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHandoffCommunicationParticipantsParticipantParticipantRolePlayingEntity constraints.validation.error='HandoffCommunicationParticipantsParticipantParticipantRolePlayingEntityName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_t5Df0N6jEee0kIKIEebuqA" base_Class="_RbbCII0dEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicalEquipmentOrganizerTemplateId MedicalEquipmentOrganizerHasNonMedSupActOrProcActProc MedicalEquipmentOrganizerClassCode MedicalEquipmentOrganizerMoodCode MedicalEquipmentOrganizerId MedicalEquipmentOrganizerStatusCode MedicalEquipmentOrganizerStatusCodeP MedicalEquipmentOrganizerEffectiveTime MedicalEquipmentOrganizerIVLTSLow MedicalEquipmentOrganizerIVLTSHigh' templateId.root='2.16.840.1.113883.10.20.22.4.135' classCode='CLUSTER' moodCode='EVN' constraints.validation.info='MedicalEquipmentOrganizerCode MedicalEquipmentOrganizerNonMedicinalSupplyActivity2 MedicalEquipmentOrganizerProcedureActivityProcedure2' constraints.validation.dependOn.MedicalEquipmentOrganizerStatusCode='MedicalEquipmentOrganizerStatusCodeP' constraints.validation.query='MedicalEquipmentOrganizerIVLTSLow MedicalEquipmentOrganizerIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicalEquipmentOrganizerIVLTS constraints.validation.error='MedicalEquipmentOrganizerIVLTSLow MedicalEquipmentOrganizerIVLTSHigh'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_t7hlAN6jEee0kIKIEebuqA" base_Class="_-lJmEI0kEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MentalStatusObservationTemplateId MentalStatusObservationClassCode MentalStatusObservationMoodCode MentalStatusObservationId MentalStatusObservationCodeP MentalStatusObservationStatusCode MentalStatusObservationStatusCodeP MentalStatusObservationEffectiveTime MentalStatusObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.125' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='MentalStatusObservationCode MentalStatusObservationValue MentalStatusObservationAuthorParticipation' constraints.validation.dependOn.MentalStatusObservationCode='MentalStatusObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='MentalStatusObservationAssessmentScaleObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_t-fZcN6jEee0kIKIEebuqA" base_Class="_NP5zMI05EeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NutritionAssessmentTemplateId NutritionAssessmentClassCode NutritionAssessmentMoodCode NutritionAssessmentId NutritionAssessmentCode NutritionAssessmentCodeP NutritionAssessmentStatusCode NutritionAssessmentStatusCodeP NutritionAssessmentEffectiveTime NutritionAssessmentValue' templateId.root='2.16.840.1.113883.10.20.22.4.138' constraints.validation.warning='NutritionAssessmentValueOfTypeCDIsFromSnomed NutritionAssessmentAuthorParticipation' classCode='OBS' moodCode='EVN' code.code='75303-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Nutrition assessment' constraints.validation.dependOn.NutritionAssessmentCode='NutritionAssessmentCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_t_PnYN6jEee0kIKIEebuqA" base_Class="_FhAIMI3FEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NutritionRecommendationTemplateId NutritionRecommendationClassCode NutritionRecommendationMoodCode NutritionRecommendationMoodCodeP NutritionRecommendationCodeP NutritionRecommendationStatusCode NutritionRecommendationStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.130' classCode='ACT' constraints.validation.dependOn.NutritionRecommendationMoodCode='NutritionRecommendationMoodCodeP' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='NutritionRecommendationCode NutritionRecommendationEffectiveTime' constraints.validation.dependOn.NutritionRecommendationCode='NutritionRecommendationCodeP' statusCode.code='active' constraints.validation.info='NutritionRecommendationPlannedEncounter2 NutritionRecommendationPlannedMedicationActivity2 NutritionRecommendationPlannedObservation2 NutritionRecommendationPlannedProcedure2 NutritionRecommendationPlannedSupply2 NutritionRecommendationPlannedAct2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uB_ZYN6jEee0kIKIEebuqA" base_Class="_T1dcwI37EeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NutritionalStatusObservationTemplateId NutritionalStatusObservationClassCode NutritionalStatusObservationMoodCode NutritionalStatusObservationId NutritionalStatusObservationCode NutritionalStatusObservationCodeP NutritionalStatusObservationStatusCode NutritionalStatusObservationStatusCodeP NutritionalStatusObservationEffectiveTime NutritionalStatusObservationValueP NutritionalStatusObservationNutritionAssessment' templateId.root='2.16.840.1.113883.10.20.22.4.124' classCode='OBS' moodCode='EVN' code.code='75305-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Nutrition status' constraints.validation.dependOn.NutritionalStatusObservationCode='NutritionalStatusObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='NutritionalStatusObservationValue'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uEO1EN6jEee0kIKIEebuqA" base_Class="_ihaWkI55EeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OutcomeObservationTemplateId OutcomeObservationProgTowardGoalObsInversionIndIsTrue OutcomeObservationClassCode OutcomeObservationMoodCode OutcomeObservationId OutcomeObservationCodeP OutcomeObservationEntryRelationship OutcomeObservationReferenceTypeCode OutcomeObservationReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.144' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='OutcomeObservationCode OutcomeObservationValue OutcomeObservationEntryReferenceGoalObs OutcomeObservationAuthorParticipation OutcomeObservationProgressTowardGoalObservation' constraints.validation.dependOn.OutcomeObservationCode='OutcomeObservationCodeP' constraints.validation.info='OutcomeObservationEntryReferenceInterventionAct OutcomeObservationReference' constraints.validation.query='OutcomeObservationReferenceTypeCode OutcomeObservationReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOutcomeObservationReference typeCode='REFR' constraints.validation.error='OutcomeObservationReferenceTypeCode OutcomeObservationReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uFrmkN6jEee0kIKIEebuqA" base_Class="_50a2UI62EeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PatientReferralActTemplateId PatientReferralActClassCode PatientReferralActMoodCode PatientReferralActMoodCodeP PatientReferralActId PatientReferralActCode PatientReferralActCodeP PatientReferralActStatusCode PatientReferralActStatusCodeP PatientReferralActEffectiveTime PatientReferralActEntryRelationshipObservationClassCode PatientReferralActEntryRelationshipObservationMoodCode PatientReferralActEntryRelationshipObservationCodeP PatientReferralActEntryRelationshipObservationCode PatientReferralActEntryRelationshipObservationStatusCode PatientReferralActEntryRelationshipObservationStatusCodeP PatientReferralActEntryRelationshipObservationValueP PatientReferralActEntryRelationshipTypeCode PatientReferralActEntryRelationshipObservation PatientReferralActParticipantTypeCode PatientReferralActParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.140' classCode='PCPR' constraints.validation.dependOn.PatientReferralActMoodCode='PatientReferralActMoodCodeP' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PatientReferralActCode='PatientReferralActCodeP' statusCode.code='active' constraints.validation.warning='PatientReferralActPriorityCode PatientReferralActAuthorParticipation PatientReferralActEntryRelationshipObservationPriorityCodeP PatientReferralActEntryRelationshipObservationPriorityCode PatientReferralActEntryRelationshipObservationValue PatientReferralActParticipantParticipantRoleCode' constraints.validation.info='PatientReferralActEntryRelationship PatientReferralActIndication2 PatientReferralActParticipant PatientReferralActParticipantParticipantRoleCodeP' constraints.validation.query='PatientReferralActEntryRelationshipObservationClassCode PatientReferralActEntryRelationshipObservationMoodCode PatientReferralActEntryRelationshipObservationCodeP PatientReferralActEntryRelationshipObservationCode PatientReferralActEntryRelationshipObservationStatusCode PatientReferralActEntryRelationshipObservationStatusCodeP PatientReferralActEntryRelationshipObservationPriorityCodeP PatientReferralActEntryRelationshipObservationPriorityCode PatientReferralActEntryRelationshipObservationValue PatientReferralActEntryRelationshipObservationValueP PatientReferralActEntryRelationshipTypeCode PatientReferralActEntryRelationshipObservation PatientReferralActParticipantParticipantRoleCodeP PatientReferralActParticipantParticipantRoleCode PatientReferralActParticipantTypeCode PatientReferralActParticipantParticipantRole' constraints.validation.dependOn.PatientReferralActEntryRelationshipObservationCode='PatientReferralActEntryRelationshipObservationCodeP' constraints.validation.dependOn.PatientReferralActEntryRelationshipObservationPriorityCode='PatientReferralActEntryRelationshipObservationPriorityCodeP' constraints.validation.dependOn.PatientReferralActParticipantParticipantRoleCode='PatientReferralActParticipantParticipantRoleCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPatientReferralActEntryRelationship typeCode='SUBJ' constraints.validation.error='PatientReferralActEntryRelationshipTypeCode PatientReferralActEntryRelationshipObservation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPatientReferralActEntryRelationshipObservation classCode='OBS' constraints.validation.error='PatientReferralActEntryRelationshipObservationClassCode PatientReferralActEntryRelationshipObservationMoodCode PatientReferralActEntryRelationshipObservationCode PatientReferralActEntryRelationshipObservationCodeP PatientReferralActEntryRelationshipObservationStatusCode PatientReferralActEntryRelationshipObservationStatusCodeP PatientReferralActEntryRelationshipObservationValueP' moodCode='RQO' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='assertion' constraints.validation.dependOn.PatientReferralActEntryRelationshipObservationCode='PatientReferralActEntryRelationshipObservationCodeP' statusCode.code='completed' priorityCode.codeSystem='2.16.840.1.113883.5.7' priorityCode.codeSystemName='ActPriority' constraints.validation.warning='PatientReferralActEntryRelationshipObservationPriorityCode PatientReferralActEntryRelationshipObservationPriorityCodeP PatientReferralActEntryRelationshipObservationValue' constraints.validation.dependOn.PatientReferralActEntryRelationshipObservationPriorityCode='PatientReferralActEntryRelationshipObservationPriorityCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPatientReferralActParticipant typeCode='REFT' constraints.validation.error='PatientReferralActParticipantTypeCode PatientReferralActParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPatientReferralActParticipantParticipantRole code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='PatientReferralActParticipantParticipantRoleCode' constraints.validation.info='PatientReferralActParticipantParticipantRoleCodeP' constraints.validation.dependOn.PatientReferralActParticipantParticipantRoleCode='PatientReferralActParticipantParticipantRoleCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uMs0kN6jEee0kIKIEebuqA" base_Class="_O2I3AI9DEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedCoverageTemplateId PlannedCoverageClassCode PlannedCoverageMoodCode PlannedCoverageId PlannedCoverageCode PlannedCoverageCodeP PlannedCoverageStatusCode PlannedCoverageStatusCodeP PlannedCoverageEntryRelationship PlannedCoverageEntryRelationshipActClassCode PlannedCoverageEntryRelationshipActMoodCode PlannedCoverageEntryRelationshipActId PlannedCoverageEntryRelationshipActCodeP PlannedCoverageEntryRelationshipActCode PlannedCoverageEntryRelationshipActStatusCode PlannedCoverageEntryRelationshipActStatusCodeP PlannedCoverageEntryRelationshipTypeCode PlannedCoverageEntryRelationshipAct' templateId.root='2.16.840.1.113883.10.20.22.4.129' classCode='ACT' moodCode='INT' code.code='48768-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Payment Sources' constraints.validation.dependOn.PlannedCoverageCode='PlannedCoverageCodeP' statusCode.code='active' constraints.validation.info='PlannedCoverageAuthorParticipation' constraints.validation.query='PlannedCoverageEntryRelationshipActClassCode PlannedCoverageEntryRelationshipActMoodCode PlannedCoverageEntryRelationshipActId PlannedCoverageEntryRelationshipActCodeP PlannedCoverageEntryRelationshipActCode PlannedCoverageEntryRelationshipActStatusCode PlannedCoverageEntryRelationshipActStatusCodeP PlannedCoverageEntryRelationshipTypeCode PlannedCoverageEntryRelationshipAct' constraints.validation.dependOn.PlannedCoverageEntryRelationshipActCode='PlannedCoverageEntryRelationshipActCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedCoverageEntryRelationship typeCode='COMP' constraints.validation.error='PlannedCoverageEntryRelationshipTypeCode PlannedCoverageEntryRelationshipAct'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedCoverageEntryRelationshipAct classCode='ACT' constraints.validation.error='PlannedCoverageEntryRelationshipActClassCode PlannedCoverageEntryRelationshipActMoodCode PlannedCoverageEntryRelationshipActId PlannedCoverageEntryRelationshipActCode PlannedCoverageEntryRelationshipActCodeP PlannedCoverageEntryRelationshipActStatusCode PlannedCoverageEntryRelationshipActStatusCodeP' moodCode='INT' code.codeSystem='2.16.840.1.113883.3.221.5' code.codeSystemName='Source of Payment Typology (PHDSC)' constraints.validation.dependOn.PlannedCoverageEntryRelationshipActCode='PlannedCoverageEntryRelationshipActCodeP' statusCode.code='active'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uPgQ8N6jEee0kIKIEebuqA" base_Class="_-miMII9TEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GoalObservationTemplateId GoalObservationClassCode GoalObservationMoodCode GoalObservationId GoalObservationCodeP GoalObservationStatusCode GoalObservationStatusCodeP GoalObservationReferenceTypeCode GoalObservationReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.121' classCode='OBS' moodCode='GOL' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='GoalObservationCode GoalObservationEffectiveTime GoalObservationAuthorParticipation GoalObservationPriorityPreference' constraints.validation.dependOn.GoalObservationCode='GoalObservationCodeP' statusCode.code='active' constraints.validation.info='GoalObservationValue GoalObservationGoalObservation GoalObservationActReferenceER GoalObservationHealthConcernActER GoalObservationPlannedERs GoalObservationReference' constraints.validation.query='GoalObservationReferenceTypeCode GoalObservationReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGoalObservationReference typeCode='REFR' constraints.validation.error='GoalObservationReferenceTypeCode GoalObservationReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uRJ2wN6jEee0kIKIEebuqA" base_Class="_An8P8I9kEeOB0eBUISUB4Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthConcernActTemplateId HealthConcernActClassCode HealthConcernActMoodCode HealthConcernActId HealthConcernActCode HealthConcernActCodeP HealthConcernActStatusCode HealthConcernActStatusCodeP HealthConcernActReferenceTypeCode HealthConcernActReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.132' templateId.extension='2015-08-01' classCode='ACT' moodCode='EVN' code.code='75310-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Health Concern' constraints.validation.dependOn.HealthConcernActCode='HealthConcernActCodeP' constraints.validation.info='HealthConcernActEffectiveTime HealthConcernActHealthConcernActErRefr HealthConcernActHealthConcernActErComp HealthConcernActAssessmentScaleObservation HealthConcernActFamilyHistoryOrganizer2 HealthConcernActNutritionAssessment HealthConcernActPregnancyObservation HealthConcernActCaregiverCharacteristics HealthConcernActCulturalAndReligiousObservation HealthConcernActCharacteristicsOfHomeEnvironment HealthConcernActNutritionalStatusObservation HealthConcernActEntryReferenceGeneral HealthConcernActSelfCareActivities HealthConcernActSensoryStatus HealthConcernActLongitudinalCareWoundObservation HealthConcernActPriorityPreference HealthConcernActProblemObservation2 HealthConcernActAllergyObservation2 HealthConcernActMentalStatusObservation2 HealthConcernActSmokingStatusMeaningfulUse2 HealthConcernActEncounterDiagnosis2 HealthConcernActFunctionalStatusObservation2 HealthConcernActHospitalAdmissionDiagnosis2 HealthConcernActPostprocedureDiagnosis2 HealthConcernActPreoperativeDiagnosis2 HealthConcernActReactionObservation2 HealthConcernActResultObservation2 HealthConcernActSocialHistoryObservation2 HealthConcernActSubstanceOrDeviceAllergyObservation2 HealthConcernActTobaccoUse2 HealthConcernActVitalSignObservation2 HealthConcernActProblemObservation2Support HealthConcernActResultOrganizer2 HealthConcernActProblemConcernAct2 HealthConcernActReference' constraints.validation.warning='HealthConcernActAuthorParticipation' constraints.validation.query='HealthConcernActReferenceTypeCode HealthConcernActReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHealthConcernActReference typeCode='REFR' constraints.validation.error='HealthConcernActReferenceTypeCode HealthConcernActReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uX0fcN6jEee0kIKIEebuqA" base_Class="_XD5vgJA8EeOZX935IVJfOg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InterventionActTemplateId InterventionActClassCode InterventionActMoodCode InterventionActId InterventionActCode InterventionActCodeP InterventionActStatusCode InterventionActStatusCodeP InterventionActReferenceTypeCode InterventionActReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.131' templateId.extension='2015-08-01' classCode='ACT' moodCode='EVN' code.code='362956003' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='procedure / intervention (navigational concept)' constraints.validation.dependOn.InterventionActCode='InterventionActCodeP' statusCode.code='completed' constraints.validation.warning='InterventionActEffectiveTime InterventionActGoalObsEntryReference InterventionActAuthorParticipation' constraints.validation.info='InterventionActInterventionAct InterventionActNutritionRecommendation InterventionActInterventionEntryReference InterventionActAdvanceDirectiveObservation2 InterventionActImmunizationActivity2 InterventionActMedicationActivity2 InterventionActProcedureActivityAct2 InterventionActProcedureActivityObservation2 InterventionActProcedureActivityProcedure2 InterventionActEncounterActivity2 InterventionActNonMedicinalSupplyActivity2 InterventionActInstruction2 InterventionActHandoffCommunicationParticipants InterventionActPlannedInterventionAct InterventionActReference' constraints.validation.query='InterventionActReferenceTypeCode InterventionActReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolInterventionActReference typeCode='REFR' constraints.validation.error='InterventionActReferenceTypeCode InterventionActReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uaCtAN6jEee0kIKIEebuqA" base_Class="_QcUL8JBGEeOZX935IVJfOg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ExternalDocumentReferenceTemplateId ExternalDocumentReferenceClassCode ExternalDocumentReferenceMoodCode ExternalDocumentReferenceId ExternalDocumentReferenceCode' templateId.root='2.16.840.1.113883.10.20.22.4.115' classCode='DOCCLIN' moodCode='EVN' constraints.validation.warning='ExternalDocumentReferenceSetId ExternalDocumentReferenceVersionNumber'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uaW2EN6jEee0kIKIEebuqA" base_Class="_KRcPwJXFEeOgXcDbh8Igkw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedImmunizationActivityTemplateId PlannedImmunizationActivityClassCode PlannedImmunizationActivityMoodCode PlannedImmunizationActivityMoodCodeP PlannedImmunizationActivityId PlannedImmunizationActivityStatusCode PlannedImmunizationActivityStatusCodeP PlannedImmunizationActivityEffectiveTime PlannedImmunizationActivityRouteCode PlannedImmunizationActivityApproachSiteCode PlannedImmunizationActivityConsumable PlannedImmunizationActivityConsumableImmunizationMedicationInformation2 PlannedImmunizationActivityPreconditionTypeCode PlannedImmunizationActivityPreconditionPreconditionForSubstanceAdministration2' templateId.root='2.16.840.1.113883.10.20.22.4.120' classCode='SBADM' constraints.validation.dependOn.PlannedImmunizationActivityMoodCode='PlannedImmunizationActivityMoodCodeP' statusCode.code='active' constraints.validation.info='PlannedImmunizationActivityRepeatNumber PlannedImmunizationActivityRouteCodeP PlannedImmunizationActivityApproachSiteCodeP PlannedImmunizationActivityDoseQuantity PlannedImmunizationActivityPerformer PlannedImmunizationActivityAuthorParticipation PlannedImmunizationActivityPriorityPreference PlannedImmunizationActivityIndication2 PlannedImmunizationActivityInstruction2 PlannedImmunizationActivityPrecondition' routeCode.codeSystem='2.16.840.1.113883.3.26.1.1' routeCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.PlannedImmunizationActivityRouteCode='PlannedImmunizationActivityRouteCodeP' approachSiteCode.codeSystem='2.16.840.1.113883.6.96' approachSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PlannedImmunizationActivityApproachSiteCode='PlannedImmunizationActivityApproachSiteCodeP' constraints.validation.warning='PlannedImmunizationActivityIVLPQUnit' constraints.validation.query='PlannedImmunizationActivityIVLPQUnit PlannedImmunizationActivityConsumableImmunizationMedicationInformation2 PlannedImmunizationActivityPreconditionTypeCode PlannedImmunizationActivityPreconditionPreconditionForSubstanceAdministration2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedImmunizationActivityIVLPQ unit='1' constraints.validation.warning='PlannedImmunizationActivityIVLPQUnit'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedImmunizationActivityPrecondition typeCode='PRCN' constraints.validation.error='PlannedImmunizationActivityPreconditionTypeCode PlannedImmunizationActivityPreconditionPreconditionForSubstanceAdministration2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedImmunizationActivityConsumable constraints.validation.error='PlannedImmunizationActivityConsumableImmunizationMedicationInformation2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ud_Y4N6jEee0kIKIEebuqA" base_Class="_GXlxYJmLEeOeSLwbllPCyw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PrognosisObservationTemplateId PrognosisObservationClassCode PrognosisObservationMoodCode PrognosisObservationCode PrognosisObservationCodeP PrognosisObservationStatusCode PrognosisObservationStatusCodeP PrognosisObservationEffectiveTime PrognosisObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.113' classCode='OBS' moodCode='EVN' code.code='75328-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Prognosis' constraints.validation.dependOn.PrognosisObservationCode='PrognosisObservationCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ueg9UN6jEee0kIKIEebuqA" base_Class="_0NewYJmVEeOLJeQez13EkQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProgressTowardGoalObservationTemplateId ProgressTowardGoalObservationClassCode ProgressTowardGoalObservationMoodCode ProgressTowardGoalObservationId ProgressTowardGoalObservationCode ProgressTowardGoalObservationCodeP ProgressTowardGoalObservationStatusCode ProgressTowardGoalObservationStatusCodeP ProgressTowardGoalObservationValue ProgressTowardGoalObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.110' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.ProgressTowardGoalObservationCode='ProgressTowardGoalObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uf4PQN6jEee0kIKIEebuqA" base_Class="_ncafYJmaEeOLJeQez13EkQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PriorityPreferenceTemplateId PriorityPreferenceClassCode PriorityPreferenceMoodCode PriorityPreferenceId PriorityPreferenceCode PriorityPreferenceCodeP PriorityPreferenceValue PriorityPreferenceValueP' templateId.root='2.16.840.1.113883.10.20.22.4.143' classCode='OBS' moodCode='EVN' code.code='225773000' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Preference' constraints.validation.dependOn.PriorityPreferenceCode='PriorityPreferenceCodeP' constraints.validation.warning='PriorityPreferenceEffectiveTime PriorityPreferenceAuthorParticipation' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uhKosN6jEee0kIKIEebuqA" base_Class="_nC0xUJmzEeOLJeQez13EkQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SelfCareActivitiesTemplateId SelfCareActivitiesClassCode SelfCareActivitiesMoodCode SelfCareActivitiesCodeP SelfCareActivitiesStatusCode SelfCareActivitiesStatusCodeP SelfCareActivitiesEffectiveTime SelfCareActivitiesValueP' templateId.root='2.16.840.1.113883.10.20.22.4.128' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='SelfCareActivitiesCode SelfCareActivitiesValue SelfCareActivitiesAuthorParticipation' constraints.validation.dependOn.SelfCareActivitiesCode='SelfCareActivitiesCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ujMB8N6jEee0kIKIEebuqA" base_Class="_kyeGAJm4EeOLJeQez13EkQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SensoryStatusTemplateId SensoryStatusClassCode SensoryStatusMoodCode SensoryStatusCodeP SensoryStatusStatusCode SensoryStatusStatusCodeP SensoryStatusEffectiveTime SensoryStatusValueP SensoryStatusIVLTSLow' templateId.root='2.16.840.1.113883.10.20.22.4.127' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='SensoryStatusCode SensoryStatusValue SensoryStatusAuthorParticipation' constraints.validation.dependOn.SensoryStatusCode='SensoryStatusCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='SensoryStatusAssessmentScaleObservation SensoryStatusIVLTSHigh' constraints.validation.query='SensoryStatusIVLTSLow SensoryStatusIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSensoryStatusIVLTS constraints.validation.error='SensoryStatusIVLTSLow' constraints.validation.info='SensoryStatusIVLTSHigh'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ul0fMN6jEee0kIKIEebuqA" base_Class="_KTrEAJpdEeOK6dzbL4VoTA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubstanceAdministeredActTemplateId SubstanceAdministeredActClassCode SubstanceAdministeredActMoodCode SubstanceAdministeredActId SubstanceAdministeredActCode SubstanceAdministeredActCodeP SubstanceAdministeredActStatusCode SubstanceAdministeredActStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.118' classCode='ACT' moodCode='EVN' code.code='416118004' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='Administration' constraints.validation.dependOn.SubstanceAdministeredActCode='SubstanceAdministeredActCodeP' statusCode.code='completed' constraints.validation.info='SubstanceAdministeredActEffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_umTnYN6jEee0kIKIEebuqA" base_Class="_D6Lm0JpnEeOK6dzbL4VoTA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='WoundCharacteristicTemplateId WoundCharacteristicClassCode WoundCharacteristicMoodCode WoundCharacteristicId WoundCharacteristicCode WoundCharacteristicCodeP WoundCharacteristicStatusCode WoundCharacteristicStatusCodeP WoundCharacteristicEffectiveTime WoundCharacteristicValue WoundCharacteristicValueP' templateId.root='2.16.840.1.113883.10.20.22.4.134' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='assertion' constraints.validation.dependOn.WoundCharacteristicCode='WoundCharacteristicCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_unprMN6jEee0kIKIEebuqA" base_Class="_94MpsJp7EeOK6dzbL4VoTA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='WoundMeasurementObservationTemplateId WoundMeasurementObservationClassCode WoundMeasurementObservationMoodCode WoundMeasurementObservationId WoundMeasurementObservationCode WoundMeasurementObservationCodeP WoundMeasurementObservationStatusCode WoundMeasurementObservationStatusCodeP WoundMeasurementObservationEffectiveTime WoundMeasurementObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.133' classCode='OBS' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.WoundMeasurementObservationCode='WoundMeasurementObservationCodeP' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_uo7dkN6jEee0kIKIEebuqA" base_Generalization="_09uFMZp_EeOK6dzbL4VoTA"/>
  <Ecore:EClass xmi:id="_uo9SwN6jEee0kIKIEebuqA" base_Class="_09uFMJp_EeOK6dzbL4VoTA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId LongitudinalCareWoundObservationClassCode LongitudinalCareWoundObservationMoodCode LongitudinalCareWoundObservationCode LongitudinalCareWoundObservationCodeP LongitudinalCareWoundObservationValueP LongitudinalCareWoundObservationCDCRCDCode LongitudinalCareWoundObservationCDCRName LongitudinalCareWoundObservationCDCRNameP LongitudinalCareWoundObservationCDCRValue' templateId.root='2.16.840.1.113883.10.20.22.4.114' templateId.extension='2015-08-01' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='assertion' constraints.validation.dependOn.LongitudinalCareWoundObservationCode='LongitudinalCareWoundObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='LongitudinalCareWoundObservationValue LongitudinalCareWoundObservationTargetSiteCode LongitudinalCareWoundObservationTargetSiteCodeP LongitudinalCareWoundObservationWoundMeasurementObservation LongitudinalCareWoundObservationWoundCharacteristics LongitudinalCareWoundObservationAuthorParticipation LongitudinalCareWoundObservationCDCRCDValueTerminology' constraints.validation.dependOn.LongitudinalCareWoundObservationValue='LongitudinalCareWoundObservationValueP' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.info='LongitudinalCareWoundObservationHighestPressureUlcerStage LongitudinalCareWoundObservationNumberOfPressureUlcersObservation2 LongitudinalCareWoundObservationCDQualifier' constraints.validation.query='LongitudinalCareWoundObservationCDCRCDValueTerminology LongitudinalCareWoundObservationCDCRCDCode LongitudinalCareWoundObservationCDCRName LongitudinalCareWoundObservationCDCRNameP LongitudinalCareWoundObservationCDCRValue LongitudinalCareWoundObservationCDQualifier'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolLongitudinalCareWoundObservationCD constraints.validation.info='LongitudinalCareWoundObservationCDQualifier' constraints.validation.warning='CDCRLongitudinalCareWoundObservationCDCRCDValueTerminology' constraints.validation.query='CDCRLongitudinalCareWoundObservationCDCRCDValueTerminology LongitudinalCareWoundObservationCDCRCDCode LongitudinalCareWoundObservationCDCRName LongitudinalCareWoundObservationCDCRNameP LongitudinalCareWoundObservationCDCRValue' constraints.validation.error='LongitudinalCareWoundObservationCDCRCDCode LongitudinalCareWoundObservationCDCRName LongitudinalCareWoundObservationCDCRNameP LongitudinalCareWoundObservationCDCRValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolLongitudinalCareWoundObservationCDCR name.code='272741003' name.codeSystemName='' name.displayName='laterality' constraints.validation.error='LongitudinalCareWoundObservationCDCRName LongitudinalCareWoundObservationCDCRNameP LongitudinalCareWoundObservationCDCRValue LongitudinalCareWoundObservationCDCRCDCode' constraints.validation.warning='CRLongitudinalCareWoundObservationCDCRCDValueTerminology' constraints.validation.query='CRLongitudinalCareWoundObservationCDCRCDValueTerminology LongitudinalCareWoundObservationCDCRCDCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolLongitudinalCareWoundObservationCDCRCD constraints.validation.warning='LongitudinalCareWoundObservationCDCRCDValueTerminology' constraints.validation.error='LongitudinalCareWoundObservationCDCRCDCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_utBTYN6jEee0kIKIEebuqA" base_Class="_YPOXoJ14EeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GoalsSectionTemplateId GoalsSectionCode GoalsSectionCodeP GoalsSectionTitle GoalsSectionText GoalsSectionGoalObservation' templateId.root='2.16.840.1.113883.10.20.22.2.60' nullFlavor='NI' constraints.validation.info='GoalsSectionNullFlavor' code.code='61146-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Goals'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_utvFEN6jEee0kIKIEebuqA" base_Class="_2umuYJ18EeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthConcernsSectionTemplateId HealthConcernsSectionCode HealthConcernsSectionCodeP HealthConcernsSectionTitle HealthConcernsSectionText HealthConcernsSectionHealthConcernAct' templateId.root='2.16.840.1.113883.10.20.22.2.58' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='HealthConcernsSectionNullFlavor HealthConcernsSectionRiskConcernAct' code.code='75310-3' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Health concerns document' constraints.validation.warning='HealthConcernsSectionHealthStatusObservation2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uucPsN6jEee0kIKIEebuqA" base_Class="_EHgh0J2AEeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthStatusEvaluationsAndOutcomesSectionTemplateId HealthStatusEvaluationsAndOutcomesSectionCode HealthStatusEvaluationsAndOutcomesSectionCodeP HealthStatusEvaluationsAndOutcomesSectionTitle HealthStatusEvaluationsAndOutcomesSectionText HealthStatusEvaluationsAndOutcomesSectionOutcomeObservation' templateId.root='2.16.840.1.113883.10.20.22.2.61' nullFlavor='NI' constraints.validation.info='HealthStatusEvaluationsAndOutcomesSectionNullFlavor' code.code='11383-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Patient Problem Outcome'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uvIzQN6jEee0kIKIEebuqA" base_Class="_4tfOMJ2CEeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MentalStatusSectionTemplateId MentalStatusSectionCode MentalStatusSectionCodeP MentalStatusSectionTitle MentalStatusSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.56' templateId.extension='2015-08-01' code.code='10190-7' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Mental Status' constraints.validation.info='MentalStatusSectionAssessmentScaleObservation MentalStatusSectionMentalStatusOrganizer2 MentalStatusSectionMentalStatusObservation2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uv3zEN6jEee0kIKIEebuqA" base_Class="_MlM4IJ2GEeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NutritionSectionTemplateId NutritionSectionCode NutritionSectionCodeP NutritionSectionTitle NutritionSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.57' code.code='61144-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Diet and nutrition' constraints.validation.warning='NutritionSectionNutritionalStatusObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uwh6YN6jEee0kIKIEebuqA" base_Class="_CDn9gJ2LEeORR8_YW0n_jQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicalFindingsOfSkinSectionTemplateId PhysicalFindingsOfSkinSectionCode PhysicalFindingsOfSkinSectionCodeP PhysicalFindingsOfSkinSectionTitle PhysicalFindingsOfSkinSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.62' code.code='10206-1' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Physical findings of Skin Narrative' constraints.validation.info='PhysicalFindingsOfSkinSectionWoundObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_uxMBsN6jEee0kIKIEebuqA" base_Class="_dduXkJ5OEeOr4eM3k36wAg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId GeneralHeaderConstraintsRealmCode GeneralHeaderConstraintsTitle GeneralHeaderConstraintsRecordTarget GeneralHeaderConstraintsAuthor GeneralHeaderConstraintsCustodian GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsDataEntererAssignedEntity GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsInformationRecipientIntendedRecipient USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity USRealmHeader2GeneralHeaderConstraintsInformantAssignedEntity USRealmHeader2GeneralHeaderConstraintsInformantRelatedEntity GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity GeneralHeaderConstraintsDocumentationOfServiceEvent' templateId.root='2.16.840.1.113883.10.20.22.1.1' templateId.extension='2015-08-01' constraints.validation.info='GeneralHeaderConstraintsDataEnterer GeneralHeaderConstraintsInformationRecipient GeneralHeaderConstraintsAuthenticator GeneralHeaderConstraintsInformant GeneralHeaderConstraintsInFulfillmentOf GeneralHeaderConstraintsComponentOf GeneralHeaderConstraintsSupportParticipant GeneralHeaderConstraintsDocumentationOf GeneralHeaderConstraintsAuthorization GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty USRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsDataEntererAssignedEntityCodeP USRealmHeader2InformationRecipientIntendedRecipientId USRealmHeader2LegalAuthenticatorSDTCSignatureText USRealmHeader2AuthenticatorSDTCSignatureText GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP' constraints.validation.warning='GeneralHeaderConstraintsLegalAuthenticator GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication USRealmHeader2AuthorAssignedAuthorIfAssignedPersonThenContainsCode USRealmHeader2AuthorAssignedAuthorCodeTerminology USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay USRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsDataEntererAssignedEntityCodeP GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsDataEntererAssignedEntity USRealmHeader2AuthorAssignedAuthorIfAssignedPersonThenContainsCode USRealmHeader2AuthorAssignedAuthorCodeTerminology GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthor USRealmHeader2InformationRecipientIntendedRecipientId GeneralHeaderConstraintsInformationRecipientIntendedRecipient USRealmHeader2LegalAuthenticatorSDTCSignatureText USRealmHeader2AuthenticatorSDTCSignatureText USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode USRealmHeader2InformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity USRealmHeader2GeneralHeaderConstraintsInformantAssignedEntity USRealmHeader2GeneralHeaderConstraintsInformantRelatedEntity GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity GeneralHeaderConstraintsDocumentationOfServiceEventPerformer GeneralHeaderConstraintsDocumentationOfServiceEvent' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP' constraints.validation.dependOn.USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode='USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityCode='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorCode='GeneralHeaderConstraintsAuthorAssignedAuthorCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityCode='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTarget constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRole constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatient raceCode.codeSystem='2.16.840.1.113883.6.238' raceCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue' ethnicGroupCode.codeSystem='2.16.840.1.113883.6.238' ethnicGroupCode.codeSystemName='Race and Ethnicity - CDC' sDTCEthnicGroupCode.codeSystem='2.16.840.1.113883.6.238' sDTCEthnicGroupCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.info='USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace PatientUSRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute' constraints.validation.dependOn.USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCode='USRealmHeader2RecordTargetPatientRolePatientSDTCEthnicGroupCodeP' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay PatientUSRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatientGuardian constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeP' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatientLanguageCommunication constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatientTS constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay' constraints.validation.info='USRealmHeader2RecordTargetPatientRolePatientTSBirthTimePreciseToMinute'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatientBirthplace constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2RecordTargetPatientRolePatientBirthplacePlace constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceHasState'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DataEnterer constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DataEntererAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntityCode' constraints.validation.info='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityCode='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2Author constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2AuthorAssignedAuthor constraints.validation.warning='USRealmHeader2AuthorAssignedAuthorIfAssignedPersonThenContainsCode USRealmHeader2AuthorAssignedAuthorCodeTerminology' constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorCode='GeneralHeaderConstraintsAuthorAssignedAuthorCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2InformationRecipient constraints.validation.error='GeneralHeaderConstraintsInformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2InformationRecipientIntendedRecipient constraints.validation.info='USRealmHeader2InformationRecipientIntendedRecipientId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2LegalAuthenticator constraints.validation.info='USRealmHeader2LegalAuthenticatorSDTCSignatureText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2Authenticator constraints.validation.info='USRealmHeader2AuthenticatorSDTCSignatureText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2Informant constraints.validation.error='GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity GeneralHeaderConstraintsInformantAssignedEntity GeneralHeaderConstraintsInformantRelatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2InformantAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityAddr AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.info='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityCode='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.query='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet AssignedEntityGeneralHeaderConstraintsUSRealmAddressUse AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressCity AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode AssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='AssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP AssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry AssignedEntityGeneralHeaderConstraintsUSRealmAddressState AssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2InformantRelatedEntity constraints.validation.error='GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2ComponentOf constraints.validation.error='GeneralHeaderConstraintsComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2ParticipantSupport constraints.validation.error='GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DocumentationOf constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DocumentationOfServiceEvent constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DocumentationOfServiceEventPerformer1 functionCode.codeSystem='2.16.840.1.113883.5.88' functionCode.codeSystemName='ParticipationFunction' constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode' constraints.validation.info='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP' constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeader2DocumentationOfServiceEventPerformer1AssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_u6hj4N6jEee0kIKIEebuqA" base_Class="_2jWfwJ5wEeOr4eM3k36wAg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId CarePlanDoesNotHavePlanOfTreatmentSectionV2 CarePlanCode CarePlanCodeP CarePlanDocumentationOf CarePlanHealthConcernsSection CarePlanGoalsSection CarePlanInformationRecipientIntendedRecipientInformationRecipientName CarePlanInformationRecipientIntendedRecipientReceivedOrganizationName CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode CarePlanInformationRecipientIntendedRecipientId CarePlanInformationRecipientIntendedRecipient CarePlanAuthenticatorAssignedEntityId CarePlanAuthenticatorAssignedEntityCode CarePlanAuthenticatorAssignedEntityCodeP CarePlanAuthenticatorTime CarePlanAuthenticatorSignatureCode CarePlanAuthenticatorAssignedEntity CarePlanParticipantCarePlanReviewAssociatedEntityClassCode CarePlanParticipantCarePlanReviewAssociatedEntityId CarePlanParticipantCarePlanReviewAssociatedEntityCode CarePlanParticipantCarePlanReviewTypeCode CarePlanParticipantCarePlanReviewFunctionCode CarePlanParticipantCarePlanReviewFunctionCodeP CarePlanParticipantCarePlanReviewTime CarePlanParticipantCarePlanReviewAssociatedEntity CarePlanParticipantCaregiverAssociatedEntityAssociatedPersonName CarePlanParticipantCaregiverAssociatedEntityClassCodeP CarePlanParticipantCaregiverAssociatedEntityClassCode CarePlanParticipantCaregiverAssociatedEntityAssociatedPerson CarePlanParticipantCaregiverTypeCode CarePlanParticipantCaregiverAssociatedEntity CarePlanDocumentationOfServiceEventIVLTSLow CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPersonName CarePlanDocumentationOfServiceEventPerformerAssignedEntityId CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPerson CarePlanDocumentationOfServiceEventPerformerAssignedEntity CarePlanDocumentationOfServiceEventClassCode CarePlanDocumentationOfServiceEventEffectiveTime CarePlanDocumentationOfServiceEventPerformer1 CarePlanDocumentationOfServiceEvent CarePlanRelatedDocumentParentDocumentSetId CarePlanRelatedDocumentParentDocumentVersionNumber CarePlanRelatedDocumentTypeCodeP CarePlanRelatedDocumentTypeCode CarePlanRelatedDocumentParentDocument CarePlanComponentOfEncompassingEncounterEffectiveTime CarePlanComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.15' templateId.extension='2015-08-01' code.code='52521-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Overall Plan of Care / Advance Care Directives' constraints.validation.dependOn.CarePlanCode='CarePlanCodeP' constraints.validation.warning='CarePlanSetId CarePlanVersionNumber CarePlanInformationRecipient CarePlanAuthenticator CarePlanParticipantCarePlanReview CarePlanParticipantCaregiver CarePlanComponentOf CarePlanHealthStatusEvaluationsOutcomesSection CarePlanInterventionsSection2 CarePlanInformationRecipientIntendedRecipientReceivedOrganizationId CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP CarePlanInformationRecipientIntendedRecipientAddr CarePlanInformationRecipientIntendedRecipientTelecom CarePlanInformationRecipientIntendedRecipientInformationRecipient CarePlanInformationRecipientIntendedRecipientReceivedOrganization CarePlanParticipantCarePlanReviewAssociatedEntityCodeP' constraints.validation.info='CarePlanRelatedDocument CarePlanAuthenticatorSDTCSignatureText CarePlanDocumentationOfServiceEventIVLTSHigh CarePlanDocumentationOfServiceEventPerformerAssignedEntityCode' constraints.validation.query='CarePlanInformationRecipientIntendedRecipientInformationRecipientName CarePlanInformationRecipientIntendedRecipientReceivedOrganizationId CarePlanInformationRecipientIntendedRecipientReceivedOrganizationName CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode CarePlanInformationRecipientIntendedRecipientId CarePlanInformationRecipientIntendedRecipientAddr CarePlanInformationRecipientIntendedRecipientTelecom CarePlanInformationRecipientIntendedRecipientInformationRecipient CarePlanInformationRecipientIntendedRecipientReceivedOrganization CarePlanInformationRecipientIntendedRecipient CarePlanAuthenticatorAssignedEntityId CarePlanAuthenticatorAssignedEntityCode CarePlanAuthenticatorAssignedEntityCodeP CarePlanAuthenticatorTime CarePlanAuthenticatorSignatureCode CarePlanAuthenticatorSDTCSignatureText CarePlanAuthenticatorAssignedEntity CarePlanParticipantCarePlanReviewAssociatedEntityClassCode CarePlanParticipantCarePlanReviewAssociatedEntityId CarePlanParticipantCarePlanReviewAssociatedEntityCodeP CarePlanParticipantCarePlanReviewAssociatedEntityCode CarePlanParticipantCarePlanReviewTypeCode CarePlanParticipantCarePlanReviewFunctionCode CarePlanParticipantCarePlanReviewFunctionCodeP CarePlanParticipantCarePlanReviewTime CarePlanParticipantCarePlanReviewAssociatedEntity CarePlanParticipantCaregiverAssociatedEntityAssociatedPersonName CarePlanParticipantCaregiverAssociatedEntityClassCodeP CarePlanParticipantCaregiverAssociatedEntityClassCode CarePlanParticipantCaregiverAssociatedEntityAssociatedPerson CarePlanParticipantCaregiverTypeCode CarePlanParticipantCaregiverAssociatedEntity CarePlanDocumentationOfServiceEventIVLTSLow CarePlanDocumentationOfServiceEventIVLTSHigh CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPersonName CarePlanDocumentationOfServiceEventPerformerAssignedEntityId CarePlanDocumentationOfServiceEventPerformerAssignedEntityCode CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPerson CarePlanDocumentationOfServiceEventPerformerAssignedEntity CarePlanDocumentationOfServiceEventClassCode CarePlanDocumentationOfServiceEventEffectiveTime CarePlanDocumentationOfServiceEventPerformer1 CarePlanDocumentationOfServiceEvent CarePlanRelatedDocumentParentDocumentSetId CarePlanRelatedDocumentParentDocumentVersionNumber CarePlanRelatedDocumentTypeCodeP CarePlanRelatedDocumentTypeCode CarePlanRelatedDocumentParentDocument CarePlanComponentOfEncompassingEncounterEffectiveTime CarePlanComponentOfEncompassingEncounter' constraints.validation.dependOn.CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode='CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP' constraints.validation.dependOn.CarePlanParticipantCarePlanReviewAssociatedEntityCode='CarePlanParticipantCarePlanReviewAssociatedEntityCodeP' constraints.validation.dependOn.CarePlanParticipantCaregiverAssociatedEntityClassCode='CarePlanParticipantCaregiverAssociatedEntityClassCodeP' constraints.validation.dependOn.CarePlanRelatedDocumentTypeCode='CarePlanRelatedDocumentTypeCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanInformationRecipient constraints.validation.error='CarePlanInformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanInformationRecipientIntendedRecipient constraints.validation.error='CarePlanInformationRecipientIntendedRecipientId' constraints.validation.warning='CarePlanInformationRecipientIntendedRecipientAddr CarePlanInformationRecipientIntendedRecipientTelecom CarePlanInformationRecipientIntendedRecipientInformationRecipient CarePlanInformationRecipientIntendedRecipientReceivedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanInformationRecipientIntendedRecipientInformationRecipient constraints.validation.error='CarePlanInformationRecipientIntendedRecipientInformationRecipientName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanInformationRecipientIntendedRecipientReceivedOrganization constraints.validation.warning='CarePlanInformationRecipientIntendedRecipientReceivedOrganizationId CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP' constraints.validation.error='CarePlanInformationRecipientIntendedRecipientReceivedOrganizationName CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode' standardIndustryClassCode.codeSystem='2.16.840.1.113883.6.101' standardIndustryClassCode.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.dependOn.CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCode='CarePlanInformationRecipientIntendedRecipientReceivedOrganizationStandardIndustryClassCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanAuthenticator constraints.validation.error='CarePlanAuthenticatorTime CarePlanAuthenticatorSignatureCode CarePlanAuthenticatorAssignedEntity' constraints.validation.info='CarePlanAuthenticatorSDTCSignatureText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanAuthenticatorAssignedEntity constraints.validation.error='CarePlanAuthenticatorAssignedEntityId CarePlanAuthenticatorAssignedEntityCode CarePlanAuthenticatorAssignedEntityCodeP' code.code='ONESELF' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' code.displayName='Self'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanParticipantCarePlanReview typeCode='VRF' constraints.validation.error='CarePlanParticipantCarePlanReviewTypeCode CarePlanParticipantCarePlanReviewFunctionCode CarePlanParticipantCarePlanReviewFunctionCodeP CarePlanParticipantCarePlanReviewTime CarePlanParticipantCarePlanReviewAssociatedEntity' functionCode.code='425268008' functionCode.codeSystem='2.16.840.1.113883.6.96' functionCode.codeSystemName='SNOMEDCT' functionCode.displayName='Review of Care Plan'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanParticipantCarePlanReviewAssociatedEntity classCode='ASSIGNED' constraints.validation.error='CarePlanParticipantCarePlanReviewAssociatedEntityClassCode CarePlanParticipantCarePlanReviewAssociatedEntityId CarePlanParticipantCarePlanReviewAssociatedEntityCode' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='CarePlanParticipantCarePlanReviewAssociatedEntityCodeP' constraints.validation.dependOn.CarePlanParticipantCarePlanReviewAssociatedEntityCode='CarePlanParticipantCarePlanReviewAssociatedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanParticipantCaregiver typeCode='IND' constraints.validation.error='CarePlanParticipantCaregiverTypeCode CarePlanParticipantCaregiverAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanParticipantCaregiverAssociatedEntity constraints.validation.error='CarePlanParticipantCaregiverAssociatedEntityClassCode CarePlanParticipantCaregiverAssociatedEntityClassCodeP CarePlanParticipantCaregiverAssociatedEntityAssociatedPerson' constraints.validation.dependOn.CarePlanParticipantCaregiverAssociatedEntityClassCode='CarePlanParticipantCaregiverAssociatedEntityClassCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanParticipantCaregiverAssociatedEntityAssociatedPerson constraints.validation.error='CarePlanParticipantCaregiverAssociatedEntityAssociatedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOf constraints.validation.error='CarePlanDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOfServiceEvent classCode='PCPR' constraints.validation.error='CarePlanDocumentationOfServiceEventClassCode CarePlanDocumentationOfServiceEventEffectiveTime CarePlanDocumentationOfServiceEventPerformer1 CarePlanDocumentationOfServiceEventIVLTSLow' constraints.validation.query='CarePlanDocumentationOfServiceEventIVLTSLow CarePlanDocumentationOfServiceEventIVLTSHigh' constraints.validation.info='CarePlanDocumentationOfServiceEventIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOfServiceEventPerformer constraints.validation.error='CarePlanDocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOfServiceEventPerformerAssignedEntity constraints.validation.error='CarePlanDocumentationOfServiceEventPerformerAssignedEntityId CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPerson' constraints.validation.info='CarePlanDocumentationOfServiceEventPerformerAssignedEntityCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPerson constraints.validation.error='CarePlanDocumentationOfServiceEventPerformerAssignedEntityAssignedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanDocumentationOfServiceEventIVLTS constraints.validation.error='CarePlanDocumentationOfServiceEventIVLTSLow' constraints.validation.info='CarePlanDocumentationOfServiceEventIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanRelatedDocument constraints.validation.error='CarePlanRelatedDocumentTypeCode CarePlanRelatedDocumentTypeCodeP CarePlanRelatedDocumentParentDocument' constraints.validation.dependOn.CarePlanRelatedDocumentTypeCode='CarePlanRelatedDocumentTypeCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanRelatedDocumentParentDocument constraints.validation.error='CarePlanRelatedDocumentParentDocumentSetId CarePlanRelatedDocumentParentDocumentVersionNumber'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanComponentOf constraints.validation.error='CarePlanComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCarePlanComponentOfEncompassingEncounter constraints.validation.error='CarePlanComponentOfEncompassingEncounterEffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_vIbdAN6jEee0kIKIEebuqA" base_Class="_itRPkKAEEeOQs7VC4HptuQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ReferralNoteHasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 ReferralNoteDoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent ReferralNoteCode ReferralNoteCodeP ReferralNoteInformationRecipient ReferralNoteProblemSection2 ReferralNoteAllergiesSection2 ReferralNoteMedicationsSection2 ReferralNoteReasonForReferralSection2 ReferralNoteInformationRecipientIntendedRecipientPersonName ReferralNoteInformationRecipientIntendedRecipientInformationRecipient ReferralNoteInformationRecipientIntendedRecipient ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPersonName ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP ReferralNoteParticipantCaregiverAssociatedEntityClassCode ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPerson ReferralNoteParticipantCaregiverTypeCode ReferralNoteParticipantCaregiverAssociatedEntity ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPersonName ReferralNoteParticipantCallbackContactAssociatedEntityId ReferralNoteParticipantCallbackContactAssociatedEntityTelecom ReferralNoteParticipantCallbackContactAssociatedEntityClassCode ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPerson ReferralNoteParticipantCallbackContactTypeCode ReferralNoteParticipantCallbackContactAssociatedEntity' templateId.root='2.16.840.1.113883.10.20.22.1.14' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ReferralNoteCode='ReferralNoteCodeP' constraints.validation.warning='ReferralNoteParticipantCaregiver ReferralNoteParticipantCallbackContact ReferralNotePlanOfTreatmentSection2 ReferralNoteResultsSection2 ReferralNoteFunctionalStatusSection2 ReferralNoteNutritionSection ReferralNoteMentalStatusSection ReferralNoteInformationRecipientIntendedRecipientAddr ReferralNoteInformationRecipientIntendedRecipientTelecom ReferralNoteParticipantCallbackContactAssociatedEntityAddr' constraints.validation.info='ReferralNoteAdvanceDirectivesSectionEntriesOptional2 ReferralNoteHistoryOfPresentIllnessSection ReferralNoteImmunizationsSection2 ReferralNoteProceduresSectionEntriesOptional2 ReferralNoteReviewOfSystemsSection ReferralNoteSocialHistorySection2 ReferralNoteVitalSignsSection2 ReferralNotePhysicalExamSection2 ReferralNoteAdvanceDirectivesSectionEntriesOptional2b ReferralNoteMedicalEquipmentSection2 ReferralNoteAssessmentSection ReferralNoteAssessmentAndPlanSection2 ReferralNoteHistoryOfPastIllnessSection2 ReferralNoteGeneralStatusSection ReferralNoteFamilyHistorySection2 ReferralNoteParticipantCallbackContactAssociatedEntityScopingOrganization' constraints.validation.query='ReferralNoteInformationRecipientIntendedRecipientPersonName ReferralNoteInformationRecipientIntendedRecipientAddr ReferralNoteInformationRecipientIntendedRecipientTelecom ReferralNoteInformationRecipientIntendedRecipientInformationRecipient ReferralNoteInformationRecipientIntendedRecipient ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPersonName ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP ReferralNoteParticipantCaregiverAssociatedEntityClassCode ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPerson ReferralNoteParticipantCaregiverTypeCode ReferralNoteParticipantCaregiverAssociatedEntity ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPersonName ReferralNoteParticipantCallbackContactAssociatedEntityId ReferralNoteParticipantCallbackContactAssociatedEntityAddr ReferralNoteParticipantCallbackContactAssociatedEntityTelecom ReferralNoteParticipantCallbackContactAssociatedEntityClassCode ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPerson ReferralNoteParticipantCallbackContactAssociatedEntityScopingOrganization ReferralNoteParticipantCallbackContactTypeCode ReferralNoteParticipantCallbackContactAssociatedEntity' constraints.validation.dependOn.ReferralNoteParticipantCaregiverAssociatedEntityClassCode='ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteInformationRecipient constraints.validation.error='ReferralNoteInformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteInformationRecipientIntendedRecipient constraints.validation.warning='ReferralNoteInformationRecipientIntendedRecipientAddr ReferralNoteInformationRecipientIntendedRecipientTelecom' constraints.validation.error='ReferralNoteInformationRecipientIntendedRecipientInformationRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteInformationRecipientIntendedRecipientPerson constraints.validation.error='ReferralNoteInformationRecipientIntendedRecipientPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCaregiver typeCode='IND' constraints.validation.error='ReferralNoteParticipantCaregiverTypeCode ReferralNoteParticipantCaregiverAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCaregiverAssociatedEntity constraints.validation.error='ReferralNoteParticipantCaregiverAssociatedEntityClassCode ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPerson' constraints.validation.dependOn.ReferralNoteParticipantCaregiverAssociatedEntityClassCode='ReferralNoteParticipantCaregiverAssociatedEntityClassCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCaregiverAssociatedEntityAssociatedPerson constraints.validation.error='ReferralNoteParticipantCaregiverAssociatedEntityAssociatedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCallbackContact typeCode='CALLBCK' constraints.validation.error='ReferralNoteParticipantCallbackContactTypeCode ReferralNoteParticipantCallbackContactAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCallbackContactAssociatedEntity constraints.validation.error='ReferralNoteParticipantCallbackContactAssociatedEntityId ReferralNoteParticipantCallbackContactAssociatedEntityTelecom ReferralNoteParticipantCallbackContactAssociatedEntityClassCode ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPerson' constraints.validation.warning='ReferralNoteParticipantCallbackContactAssociatedEntityAddr' classCode='ASSIGNED' constraints.validation.info='ReferralNoteParticipantCallbackContactAssociatedEntityScopingOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPerson constraints.validation.error='ReferralNoteParticipantCallbackContactAssociatedEntityAssociatedPersonName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_vOqn4N6jEee0kIKIEebuqA" base_Class="_mgnrsKDQEeOPqKnBFQcY_A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId TransferSummaryHasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 TransferSummaryDoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent TransferSummaryCode TransferSummaryCodeP TransferSummaryTitle TransferSummaryDocumentationOf TransferSummaryAllergiesSection2 TransferSummaryMedicationsSection2 TransferSummaryProblemSection2 TransferSummaryResultsSection2 TransferSummaryVitalSignsSection2 TransferSummaryReasonForReferralSection2 TransferSummaryParticipantSupportAssociatedEntityAssociatedPersonName TransferSummaryParticipantSupportAssociatedEntityClassCodeP TransferSummaryParticipantSupportAssociatedEntityClassCode TransferSummaryParticipantSupportAssociatedEntityAssociatedPerson TransferSummaryParticipantSupportTypeCode TransferSummaryParticipantSupportAssociatedEntity TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPersonName TransferSummaryParticipantCallbackContactAssociatedEntityClassCode TransferSummaryParticipantCallbackContactAssociatedEntityId TransferSummaryParticipantCallbackContactAssociatedEntityTelecom TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPerson TransferSummaryParticipantCallbackContactTypeCode TransferSummaryParticipantCallbackContactAssociatedEntity TransferSummaryDocumentationOfServiceEventPerformerTypeCode TransferSummaryDocumentationOfServiceEventClassCode TransferSummaryDocumentationOfServiceEventPerformer1 TransferSummaryDocumentationOfServiceEvent' templateId.root='2.16.840.1.113883.10.20.22.1.13' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.TransferSummaryCode='TransferSummaryCodeP' constraints.validation.warning='TransferSummaryParticipantSupport TransferSummaryParticipantCallbackContact TransferSummaryAdvanceDirectivesSection2 TransferSummaryFunctionalStatusSection2 TransferSummaryProceduresSection2 TransferSummarySocialHistorySection2 TransferSummaryMentalStatusSection TransferSummaryNutritionSection TransferSummaryHistoryOfPresentIllnessSection TransferSummaryDischargeDiagnosisSection2 TransferSummaryParticipantCallbackContactAssociatedEntityAddr TransferSummaryDocumentationOfServiceEventPerformerFunctionCode' constraints.validation.info='TransferSummaryPhysicalExamSection2 TransferSummaryEncountersSection2 TransferSummaryFamilyHistorySection TransferSummaryImmunizationsSectionEntriesOptional2 TransferSummaryMedicalEquipmentSection2 TransferSummaryPayersSection2 TransferSummaryPlanOfTreatmentSection2 TransferSummaryGeneralStatusSection TransferSummaryReviewOfSystemsSection TransferSummaryHistoryOfPastIllnessSection2 TransferSummaryAssessmentAndPlanSection2 TransferSummaryAssessmentSection TransferSummaryAdmissionMedicationsSectionEntriesOptional2 TransferSummaryAdmissionDiagnosisSection2 TransferSummaryCourseOfCareSection TransferSummaryParticipantCallbackContactAssociatedEntityScopingOrganization TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP TransferSummaryDocumentationOfServiceEventCode' constraints.validation.query='TransferSummaryParticipantSupportAssociatedEntityAssociatedPersonName TransferSummaryParticipantSupportAssociatedEntityClassCodeP TransferSummaryParticipantSupportAssociatedEntityClassCode TransferSummaryParticipantSupportAssociatedEntityAssociatedPerson TransferSummaryParticipantSupportTypeCode TransferSummaryParticipantSupportAssociatedEntity TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPersonName TransferSummaryParticipantCallbackContactAssociatedEntityClassCode TransferSummaryParticipantCallbackContactAssociatedEntityId TransferSummaryParticipantCallbackContactAssociatedEntityAddr TransferSummaryParticipantCallbackContactAssociatedEntityTelecom TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPerson TransferSummaryParticipantCallbackContactAssociatedEntityScopingOrganization TransferSummaryParticipantCallbackContactTypeCode TransferSummaryParticipantCallbackContactAssociatedEntity TransferSummaryDocumentationOfServiceEventPerformerTypeCode TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP TransferSummaryDocumentationOfServiceEventPerformerFunctionCode TransferSummaryDocumentationOfServiceEventClassCode TransferSummaryDocumentationOfServiceEventCode TransferSummaryDocumentationOfServiceEventPerformer1 TransferSummaryDocumentationOfServiceEvent' constraints.validation.dependOn.TransferSummaryParticipantSupportAssociatedEntityClassCode='TransferSummaryParticipantSupportAssociatedEntityClassCodeP' constraints.validation.dependOn.TransferSummaryDocumentationOfServiceEventPerformerFunctionCode='TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantSupport typeCode='IND' constraints.validation.error='TransferSummaryParticipantSupportTypeCode TransferSummaryParticipantSupportAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantSupportAssociatedEntity constraints.validation.error='TransferSummaryParticipantSupportAssociatedEntityClassCode TransferSummaryParticipantSupportAssociatedEntityClassCodeP TransferSummaryParticipantSupportAssociatedEntityAssociatedPerson' constraints.validation.dependOn.TransferSummaryParticipantSupportAssociatedEntityClassCode='TransferSummaryParticipantSupportAssociatedEntityClassCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantSupportAssociatedEntityAssociatedPerson constraints.validation.error='TransferSummaryParticipantSupportAssociatedEntityAssociatedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantCallbackContact typeCode='CALLBCK' constraints.validation.error='TransferSummaryParticipantCallbackContactTypeCode TransferSummaryParticipantCallbackContactAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantCallbackContactAssociatedEntity classCode='ASSIGNED' constraints.validation.error='TransferSummaryParticipantCallbackContactAssociatedEntityClassCode TransferSummaryParticipantCallbackContactAssociatedEntityId TransferSummaryParticipantCallbackContactAssociatedEntityTelecom TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPerson' constraints.validation.warning='TransferSummaryParticipantCallbackContactAssociatedEntityAddr' constraints.validation.info='TransferSummaryParticipantCallbackContactAssociatedEntityScopingOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPerson constraints.validation.error='TransferSummaryParticipantCallbackContactAssociatedEntityAssociatedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryDocumentationOf constraints.validation.error='TransferSummaryDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryDocumentationOfServiceEvent classCode='PCPR' constraints.validation.error='TransferSummaryDocumentationOfServiceEventClassCode TransferSummaryDocumentationOfServiceEventPerformer1 TransferSummaryDocumentationOfServiceEventPerformerTypeCode' constraints.validation.info='TransferSummaryDocumentationOfServiceEventCode TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP' constraints.validation.query='TransferSummaryDocumentationOfServiceEventPerformerTypeCode TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP TransferSummaryDocumentationOfServiceEventPerformerFunctionCode' constraints.validation.warning='TransferSummaryDocumentationOfServiceEventPerformerFunctionCode' constraints.validation.dependOn.TransferSummaryDocumentationOfServiceEventPerformerFunctionCode='TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTransferSummaryDocumentationOfServiceEventPerformer typeCode='PRF' constraints.validation.error='TransferSummaryDocumentationOfServiceEventPerformerTypeCode' functionCode.codeSystem='2.16.840.1.113883.6.101' functionCode.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='TransferSummaryDocumentationOfServiceEventPerformerFunctionCode' constraints.validation.info='TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP' constraints.validation.dependOn.TransferSummaryDocumentationOfServiceEventPerformerFunctionCode='TransferSummaryDocumentationOfServiceEventPerformerFunctionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_vWZAgN6jEee0kIKIEebuqA" base_Class="_OA1xkKi8EeOTwZftO6CV5g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId USRealmHeaderPatientGeneratedDocumentRecordTarget USRealmHeaderPatientGeneratedDocumentAuthor USRealmHeaderPatientGeneratedDocumentCustodian USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientIfMoreThanOneLangComm USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatient USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRole USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorId USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthor USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntity USRealmHeaderPatientGeneratedDocumentInformantHasRelatedEntityOrAssignedEntity USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganizationId USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganization USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodian USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipient USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityId USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntity USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityId USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntity USRealmHeaderPatientGeneratedDocumentParticipantTypeCode USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntity USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrderId USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrder USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityId USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntity USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEvent' templateId.root='2.16.840.1.113883.10.20.29.1' templateId.extension='2015-08-01' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentDataEnterer USRealmHeaderPatientGeneratedDocumentInformant USRealmHeaderPatientGeneratedDocumentInformationRecipient USRealmHeaderPatientGeneratedDocumentLegalAuthenticator USRealmHeaderPatientGeneratedDocumentAuthenticator USRealmHeaderPatientGeneratedDocumentParticipant USRealmHeaderPatientGeneratedDocumentInFulfillmentOf USRealmHeaderPatientGeneratedDocumentDocumentationOf USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardian USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleProviderOrganization USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP USRealmHeaderPatientGeneratedDocumentInformantRelatedEntity USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunication USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCode USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientId USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode USRealmHeaderPatientGeneratedDocumentParticipantIfTypeCodeINDThenAEClassCodeFromINDRoleclassCodes USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformer' constraints.validation.query='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientIfMoreThanOneLangComm USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardian USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunication USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatient USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleProviderOrganization USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRole USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorId USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCode USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthor USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntity USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode USRealmHeaderPatientGeneratedDocumentInformantHasRelatedEntityOrAssignedEntity USRealmHeaderPatientGeneratedDocumentInformantRelatedEntity USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganizationId USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganization USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodian USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientId USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipient USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityId USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCode USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntity USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityId USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntity USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode USRealmHeaderPatientGeneratedDocumentParticipantIfTypeCodeINDThenAEClassCodeFromINDRoleclassCodes USRealmHeaderPatientGeneratedDocumentParticipantTypeCode USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntity USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrderId USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrder USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityId USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntity USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformer USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEvent' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode='USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode='USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentRecordTarget constraints.validation.error='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentRecordTargetPatientRole constraints.validation.error='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatient' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRoleProviderOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatient constraints.validation.error='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientIfMoreThanOneLangComm' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardian' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunication'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardian constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianId USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.error='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCode='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientGuardianCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunication constraints.validation.info='USRealmHeaderPatientGeneratedDocumentRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentAuthor constraints.validation.error='USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthor constraints.validation.error='USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorId AssignedAuthorUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCode AssignedAuthorUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology' constraints.validation.query='AssignedAuthorUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology AssignedAuthorUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCE constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECodeSystemAndTerminology' constraints.validation.error='USRealmHeaderPatientGeneratedDocumentAuthorAssignedAuthorCECode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDataEnterer constraints.validation.error='USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntity code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentDataEntererAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInformant constraints.validation.error='USRealmHeaderPatientGeneratedDocumentInformantHasRelatedEntityOrAssignedEntity' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentInformantRelatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInformantRelatedEntity code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCode='USRealmHeaderPatientGeneratedDocumentInformantRelatedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentCustodian constraints.validation.error='USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodian'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodian constraints.validation.error='USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganization constraints.validation.error='USRealmHeaderPatientGeneratedDocumentCustodianAssignedCustodianRepresentedCustodianOrganizationId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInformationRecipient constraints.validation.error='USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipient constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientId USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot' constraints.validation.query='USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientII constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentInformationRecipientIntendedRecipientIIRoot'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentLegalAuthenticator constraints.validation.error='USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntity constraints.validation.error='USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityId' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCode AssignedEntityUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode' constraints.validation.warning='AssignedEntityUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology' constraints.validation.query='AssignedEntityUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology AssignedEntityUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCE constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECodeSystemAndTerminology' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentLegalAuthenticatorAssignedEntityCECode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentAuthenticator constraints.validation.error='USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntity constraints.validation.error='USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityId' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentAuthenticatorAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentParticipant constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentParticipantIfTypeCodeINDThenAEClassCodeFromINDRoleclassCodes' constraints.validation.error='USRealmHeaderPatientGeneratedDocumentParticipantTypeCode USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntity code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCode='USRealmHeaderPatientGeneratedDocumentParticipantAssociatedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInFulfillmentOf constraints.validation.error='USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrder constraints.validation.error='USRealmHeaderPatientGeneratedDocumentInFulfillmentOfOrderId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDocumentationOf constraints.validation.error='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEvent constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformer'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformer functionCode.codeSystem='2.16.840.1.113883.5.90' functionCode.codeSystemName='HL7ParticipationType' constraints.validation.error='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntity' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCode='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerFunctionCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUSRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntity constraints.validation.error='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityId' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode' constraints.validation.info='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP' constraints.validation.dependOn.USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCode='USRealmHeaderPatientGeneratedDocumentDocumentationOfServiceEventPerformerAssignedEntityCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_vp-q4N6jEee0kIKIEebuqA" base_Class="_7jqj4KrlEeOxqJAXCMXUYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthorParticipationTemplateId AuthorParticipationTime AuthorParticipationAssignedAuthor AuthorParticipationAssignedAuthorId' templateId.root='2.16.840.1.113883.10.20.22.4.119' constraints.validation.info='AuthorParticipationAssignedAuthorAssignedPersonName AuthorParticipationAssignedAuthorRepresentedOrganizationId AuthorParticipationAssignedAuthorRepresentedOrganizationName AuthorParticipationAssignedAuthorRepresentedOrganizationTelecom AuthorParticipationAssignedAuthorRepresentedOrganizationAddr AuthorParticipationAssignedAuthorAssignedPerson AuthorParticipationAssignedAuthorRepresentedOrganization' constraints.validation.query='AuthorParticipationAssignedAuthorAssignedPersonName AuthorParticipationAssignedAuthorRepresentedOrganizationId AuthorParticipationAssignedAuthorRepresentedOrganizationName AuthorParticipationAssignedAuthorRepresentedOrganizationTelecom AuthorParticipationAssignedAuthorRepresentedOrganizationAddr AuthorParticipationAssignedAuthorCodeTerminology AuthorParticipationAssignedAuthorId AuthorParticipationAssignedAuthorCode AuthorParticipationAssignedAuthorAssignedPerson AuthorParticipationAssignedAuthorRepresentedOrganization' constraints.validation.warning='AuthorParticipationAssignedAuthorCodeTerminology AuthorParticipationAssignedAuthorCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAuthorParticipationAssignedAuthor constraints.validation.warning='AuthorParticipationAssignedAuthorCodeTerminology AuthorParticipationAssignedAuthorCode' constraints.validation.error='AuthorParticipationAssignedAuthorId' constraints.validation.info='AuthorParticipationAssignedAuthorAssignedPerson AuthorParticipationAssignedAuthorRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAuthorParticipationAssignedAuthorAssignedPerson constraints.validation.info='AuthorParticipationAssignedAuthorAssignedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAuthorParticipationAssignedAuthorRepresentedOrganization constraints.validation.info='AuthorParticipationAssignedAuthorRepresentedOrganizationId AuthorParticipationAssignedAuthorRepresentedOrganizationName AuthorParticipationAssignedAuthorRepresentedOrganizationTelecom AuthorParticipationAssignedAuthorRepresentedOrganizationAddr'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_v0MW0N6jEee0kIKIEebuqA" base_Class="_ZQpEwK-1EeO8duI_7f6kZw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdmissionMedicationTemplateId AdmissionMedicationCode AdmissionMedicationCodeP AdmissionMedicationMedicationActivity' templateId.root='2.16.840.1.113883.10.20.22.4.36' templateId.extension='2014-06-09' constraints.validation.dependOn.AdmissionMedicationCode='AdmissionMedicationCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_v0ZLIN6jEee0kIKIEebuqA" base_Class="_GnllUK-9EeO8duI_7f6kZw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectiveObservationTemplateId AdvanceDirectiveObservationHasEndingTime AdvanceDirectiveObservationCodeP AdvanceDirectiveObservationEffectiveTime AdvanceDirectiveObservation2Value AdvanceDirectiveObservation2CDTranslation AdvanceDirectiveObservation2CDTranslationP AdvanceDirectiveObservation2IVLTSLow AdvanceDirectiveObservation2IVLTSHigh AdvanceDirectiveObservation2VerifierTemplateId AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole AdvanceDirectiveObservationReferenceExternalDocumentId AdvanceDirectiveObservationReferenceTypeCode AdvanceDirectiveObservation2AdvanceDirectiveObservationReferenceExternalDocument' templateId.root='2.16.840.1.113883.10.20.22.4.48' templateId.extension='2015-08-01' constraints.validation.info='AdvanceDirectiveObservationHasStartingTime AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityName AdvanceDirectiveObservation2VerifierParticipantRoleAddr AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntity AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextMediaType AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextReference AdvanceDirectiveObservationReferenceExternalDocumentText' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='AdvanceDirectiveObservationCode AdvanceDirectiveObservationVerifier AdvanceDirectiveObservationCustodian AdvanceDirectiveObservationReference AdvanceDirectiveObservation2AuthorParticipation AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode AdvanceDirectiveObservation2VerifierParticipantRoleCodeP AdvanceDirectiveObservation2VerifierParticipantRoleCode AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode AdvanceDirectiveObservation2CustodianCustodianRoleCodeP AdvanceDirectiveObservation2CustodianCustodianRoleCode AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom' constraints.validation.dependOn.AdvanceDirectiveObservationCode='AdvanceDirectiveObservationCodeP' constraints.validation.query='AdvanceDirectiveObservation2CDTranslation AdvanceDirectiveObservation2CDTranslationP AdvanceDirectiveObservation2IVLTSLow AdvanceDirectiveObservation2IVLTSHigh AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityName AdvanceDirectiveObservation2VerifierParticipantRoleCodeP AdvanceDirectiveObservation2VerifierParticipantRoleCode AdvanceDirectiveObservation2VerifierParticipantRoleAddr AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntity AdvanceDirectiveObservation2VerifierTemplateId AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservation2CustodianCustodianRoleCodeP AdvanceDirectiveObservation2CustodianCustodianRoleCode AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextMediaType AdvanceDirectiveObservation2ReferenceAdvanceDirectiveObservationReferenceExternalDocumentTextReference AdvanceDirectiveObservationReferenceExternalDocumentId AdvanceDirectiveObservationReferenceExternalDocumentText AdvanceDirectiveObservationReferenceTypeCode AdvanceDirectiveObservation2AdvanceDirectiveObservationReferenceExternalDocument' constraints.validation.dependOn.AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode='AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2VerifierParticipantRoleCode='AdvanceDirectiveObservation2VerifierParticipantRoleCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode='AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2CustodianCustodianRoleCode='AdvanceDirectiveObservation2CustodianCustodianRoleCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2IVLTS constraints.validation.error='AdvanceDirectiveObservation2IVLTSLow AdvanceDirectiveObservation2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2Custodian constraints.validation.error='AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2CustodianCustodianRole code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='AdvanceDirectiveObservation2CustodianCustodianRoleCode AdvanceDirectiveObservation2CustodianCustodianRoleCodeP AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom' constraints.validation.dependOn.AdvanceDirectiveObservation2CustodianCustodianRoleCode='AdvanceDirectiveObservation2CustodianCustodianRoleCodeP' constraints.validation.error='AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntity code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCode='AdvanceDirectiveObservation2CustodianCustodianRoleCustodianEntityCodeP' constraints.validation.error='AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2Verifier constraints.validation.error='AdvanceDirectiveObservation2VerifierTemplateId AdvanceDirectiveObservationVerifierParticipantRole' templateId.root='2.16.840.1.113883.10.20.1.58' constraints.validation.warning='AdvanceDirectiveObservationVerifierTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2VerifierParticipantRole code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='AdvanceDirectiveObservation2VerifierParticipantRoleCode AdvanceDirectiveObservation2VerifierParticipantRoleCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2VerifierParticipantRoleCode='AdvanceDirectiveObservation2VerifierParticipantRoleCodeP' constraints.validation.info='AdvanceDirectiveObservation2VerifierParticipantRoleAddr AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2VerifierParticipantRolePlayingEntity code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP' constraints.validation.dependOn.AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCode='AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityCodeP' constraints.validation.info='AdvanceDirectiveObservation2VerifierParticipantRolePlayingEntityName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectiveObservation2CD translation.code='75320-2' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Advance directive' constraints.validation.error='AdvanceDirectiveObservation2CDTranslation AdvanceDirectiveObservation2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_v8xrEN6jEee0kIKIEebuqA" base_Class="_uCiIYLNwEeOtlapy2HWYww">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergyProblemActTemplateId AllergyProblemActCode AllergyProblemActAllergyObservation AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem' templateId.root='2.16.840.1.113883.10.20.22.4.30' templateId.extension='2015-08-01' constraints.validation.warning='AllergyConcernAct2AuthorParticipation' constraints.validation.query='AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyConcernAct2CD constraints.validation.error='AllergyProblemActCDCodeAndCodeSystemValues AllergyProblemActCDCode AllergyProblemActCDCodeSystem'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_v9Z9MN6jEee0kIKIEebuqA" base_Class="_uVJogLj5EeODDJAC5t5vpw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubstanceOrDeviceAllergyObservationTemplateId SubstanceOrDeviceAllergyObservationReactionInversionIndicator AllergyObservationCode AllergyObservationCodeP AllergyObservationValue AllergyObservationValueP AllergyObservationStatusCode AllergyObservationStatusCodeP AllergyObservationEffectiveTime AllergyObservationAllergyStatusObservation AllergyObservationParticipant AllergyObservation2IVLTSLow AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation AllergyObservationParticipantParticipantRolePlayingEntityCode AllergyObservationParticipantParticipantRolePlayingEntity AllergyObservationParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.7' templateId.extension='2014-06-09' constraints.validation.info='AllergyObservationValueOriginalText AllergyObservationOriginalTextReference AllergyObservationOriginalTextReferenceValue AllergyObservationReferenceValue SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator AllergyObservation2NegationInd AllergyObservation2IVLTSHigh AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference' constraints.validation.warning='SubstanceOrDeviceAllergyObservationSeverityInversionIndicator AllergyObservation2CriticalityInversionIndicator AllergyObservation2AuthorParticipation AllergyObservationReactionObservation AllergyObservationSeverityObservation AllergyObservation2CriticalityObservation' constraints.validation.dependOn.AllergyObservationCode='AllergyObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.AllergyObservationValue='AllergyObservationValueP' constraints.validation.dependOn.AllergyObservationStatusCode='AllergyObservationStatusCodeP' constraints.validation.query='AllergyObservation2IVLTSLow AllergyObservation2IVLTSHigh AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference AllergyObservationParticipantParticipantRolePlayingEntityCode AllergyObservationParticipantParticipantRolePlayingEntity AllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservation2IVLTS constraints.validation.error='AllergyObservation2IVLTSLow' constraints.validation.info='AllergyObservation2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservation2Participant constraints.validation.error='AllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservation2ParticipantParticipantRole constraints.validation.error='AllergyObservationParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservation2ParticipantParticipantRolePlayingEntity constraints.validation.info='AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication AllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance AllergyObservationParticipantParticipantRolePlayingEntityReferenceValue AllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference' constraints.validation.error='AllergyObservationParticipantParticipantRolePlayingEntityCode AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation' constraints.validation.query='AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservation2ParticipantParticipantRolePlayingEntityCE constraints.validation.error='AllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText AllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_wAyBVd6jEee0kIKIEebuqA" base_Generalization="_6LYrUbkoEeODDJAC5t5vpw"/>
  <Ecore:EClass xmi:id="_wAz2gN6jEee0kIKIEebuqA" base_Class="_6LYrULkoEeODDJAC5t5vpw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId MentalStatusOrganizer2HasCodeOrEffectiveTime ResultOrganizerCode ResultOrganizerResultObservation MentalStatusOrganizer2CDCode' templateId.root='2.16.840.1.113883.10.20.22.4.75' templateId.extension='2015-08-01' constraints.validation.warning='CognitiveStatusResultOrganizerCodeCodeSystem MentalStatusOrganizer2EffectiveTime' constraints.validation.query='MentalStatusOrganizer2CDCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMentalStatusOrganizer2CD constraints.validation.error='MentalStatusOrganizer2CDCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wBEVMN6jEee0kIKIEebuqA" base_Class="_aJr6ULkxEeODDJAC5t5vpw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CoverageActivityTemplateId CoverageActivityCode CoverageActivityCodeP CoverageActivityPolicyActivity CoverageActivity2EntryRelationship CoverageActivity2EntryRelationshipINTValue CoverageActivity2EntryRelationshipTypeCode CoverageActivity2EntryRelationshipPolicyActivity2' templateId.root='2.16.840.1.113883.10.20.22.4.60' templateId.extension='2015-08-01' constraints.validation.info='CoverageActivityCoverageActivityRelationshipSequenceNumber CoverageActivity2EntryRelationshipSequenceNumber' constraints.validation.dependOn.CoverageActivityCode='CoverageActivityCodeP' constraints.validation.query='CoverageActivity2EntryRelationshipINTValue CoverageActivity2EntryRelationshipTypeCode CoverageActivity2EntryRelationshipSequenceNumber CoverageActivity2EntryRelationshipPolicyActivity2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCoverageActivity2EntryRelationship typeCode='COMP' constraints.validation.error='CoverageActivity2EntryRelationshipTypeCode CoverageActivity2EntryRelationshipPolicyActivity2 CoverageActivity2EntryRelationshipINTValue' constraints.validation.info='CoverageActivity2EntryRelationshipSequenceNumber' constraints.validation.query='CoverageActivity2EntryRelationshipINTValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCoverageActivity2EntryRelationshipINT constraints.validation.error='CoverageActivity2EntryRelationshipINTValue'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wBcIoN6jEee0kIKIEebuqA" base_Class="_Hl3ScLk0EeODDJAC5t5vpw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SmokingStatusObservationTemplateId SmokingStatusMeaningfulUse2Id SmokingStatusObservationCode SmokingStatusObservationCodeP SmokingStatusObservationValue SmokingStatusObservationValueP SmokingStatusObservationEffectiveTime SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth' templateId.root='2.16.840.1.113883.10.20.22.4.78' templateId.extension='2014-06-09' code.code='72166-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Tobacco smoking status NHIS' constraints.validation.dependOn.SmokingStatusObservationCode='SmokingStatusObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.SmokingStatusObservationValue='SmokingStatusObservationValueP' constraints.validation.warning='SmokingStatusMeaningfulUse2AuthorParticipation' constraints.validation.info='SmokingStatusMeaningfulUse2CDCodeTermAssertionOrLoinc' constraints.validation.query='SmokingStatusMeaningfulUse2CDCodeTermAssertionOrLoinc SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSmokingStatusMeaningfulUse2IVLTS constraints.validation.error='SmokingStatusObservationIVLTSCenter SmokingStatusObservationIVLTSHigh SmokingStatusObservationIVLTSLow SmokingStatusObservationIVLTSWidth'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSmokingStatusMeaningfulUse2CD constraints.validation.info='SmokingStatusMeaningfulUse2CDCodeTermAssertionOrLoinc'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wDU_AN6jEee0kIKIEebuqA" base_Class="_4iF6IL86EeOS5KuvmCHHew">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DeceasedObservationTemplateId DeceasedObservationCode DeceasedObservationCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.79' templateId.extension='2015-08-01' constraints.validation.dependOn.DeceasedObservationCode='DeceasedObservationCodeP' constraints.validation.warning='DeceasedObservationProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wDldsN6jEee0kIKIEebuqA" base_Class="_EIeu8MyjEeO93sHu8pHB2g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DischargeMedicationTemplateId DischargeMedicationCode DischargeMedicationCodeP DischargeMedication2StatusCode DischargeMedication2StatusCodeP DischargeMedicationMedicationActivity DischargeMedication2CDTranslation DischargeMedication2CDTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.35' templateId.extension='2016-03-01' constraints.validation.dependOn.DischargeMedicationCode='DischargeMedicationCodeP' statusCode.code='completed' constraints.validation.query='DischargeMedication2CDTranslation DischargeMedication2CDTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeMedication2CD translation.code='75311-1' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Discharge medication' constraints.validation.error='DischargeMedication2CDTranslation DischargeMedication2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wEHCIN6jEee0kIKIEebuqA" base_Class="_RGU34MzDEeO93sHu8pHB2g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterActivitiesTemplateId EncounterActivitiesSdtcDDCFromNUBCOrDD EncounterActivitiesCodeP EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.49' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.12' code.codeSystemName='CPT-4' constraints.validation.warning='EncounterActivitiesCode EncounterActivitiesServiceDeliveryLocation EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode' constraints.validation.info='EncounterActivitiesSDTCDischargeDispositionCode EncounterActivitiesIndication EncounterActivitiesEncounterDiagnosis EncounterActivitiesEncounterPerformer EncounterActivity2CDTranslation EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP' constraints.validation.query='EncounterActivity2CDTranslation EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity' constraints.validation.dependOn.EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEncounterActivity2EncounterPerformer constraints.validation.error='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEncounterActivity2EncounterPerformerEncounterPerformerAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode' constraints.validation.info='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP' constraints.validation.dependOn.EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode='EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolEncounterActivity2CD constraints.validation.info='EncounterActivity2CDTranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wGY6EN6jEee0kIKIEebuqA" base_Class="_jH6CcMzNEeO93sHu8pHB2g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterDiagnosisTemplateId EncounterDiagnosisCode EncounterDiagnosisCodeP EncounterDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.80' templateId.extension='2015-08-01' constraints.validation.dependOn.EncounterDiagnosisCode='EncounterDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wGm8gN6jEee0kIKIEebuqA" base_Class="_3WqogMzSEeO93sHu8pHB2g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationCode ResultObservationCodeP ResultObservationText ResultObservationInterpretationCode ResultObservationMethodCode ResultObservationTargetSiteCode FunctionalStatusResultObservationAuthor FunctionalStatusResultObservationReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.67' templateId.extension='2014-06-09' constraints.validation.info='ResultObservationTextReference ResultObservationTextReferenceValue FunctionalStatusResultObservationReferenceRange FunctionalStatusResultObservationNonMedicinalSupplyActivity FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode' code.code='54522-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Functional status' constraints.validation.dependOn.ResultObservationCode='ResultObservationCodeP' constraints.validation.warning='FunctionalStatusObservation2AuthorParticipation' constraints.validation.query='FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode FunctionalStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFunctionalStatusObservation2ReferenceRange constraints.validation.error='FunctionalStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFunctionalStatusObservation2ReferenceRangeObservationRange constraints.validation.info='FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wJeDQN6jEee0kIKIEebuqA" base_Class="_mgny4NF8EeOHUokOVP95oQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubstanceOrDeviceAllergyObservationTemplateId SubstanceOrDeviceAllergyObservationAllergyStatusInversionIndicator SubstanceOrDeviceAllergyObservationReactionInversionIndicator SubstanceOrDeviceAllergyObservationSeverityInversionIndicator SubstanceOrDeviceAllergyObservationClassCode SubstanceOrDeviceAllergyObservationMoodCode SubstanceOrDeviceAllergyObservationId SubstanceOrDeviceAllergyObservationCode SubstanceOrDeviceAllergyObservationCodeP SubstanceOrDeviceAllergyObservationStatusCode SubstanceOrDeviceAllergyObservationStatusCodeP SubstanceOrDeviceAllergyObservationEffectiveTime SubstanceOrDeviceAllergyObservationValue SubstanceOrDeviceAllergyObservationValueP SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode SubstanceOrDeviceAllergyObservationParticipantParticipantRoleClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity SubstanceOrDeviceAllergyObservationParticipantTypeCode SubstanceOrDeviceAllergyObservationParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.24.3.90' classCode='OBS' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.SubstanceOrDeviceAllergyObservationCode='SubstanceOrDeviceAllergyObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.info='SubstanceOrDeviceAllergyObservationAllergyStatusObservation SubstanceOrDeviceAllergyObservationSeverityObservation SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI' constraints.validation.warning='SubstanceOrDeviceAllergyObservationReactionObservation SubstanceOrDeviceAllergyObservationParticipant SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference' constraints.validation.query='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode SubstanceOrDeviceAllergyObservationParticipantParticipantRoleClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity SubstanceOrDeviceAllergyObservationParticipantTypeCode SubstanceOrDeviceAllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservationParticipant typeCode='CSM' constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantTypeCode SubstanceOrDeviceAllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservationParticipantParticipantRole classCode='MANU' constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRoleClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityClassCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode' constraints.validation.warning='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference PlayingEntitySubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText' constraints.validation.info='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCodeTerminologyValueSetGroupSRFI PlayingEntitySubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation' classCode='MMAT' constraints.validation.query='PlayingEntitySubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText PlayingEntitySubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCE constraints.validation.warning='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText' constraints.validation.info='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wOaNoN6jEee0kIKIEebuqA" base_Class="_yU2tgOD0EeOmBMTtnrPqww">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerCode ResultOrganizerStatusCode ResultOrganizerStatusCodeP FunctionalStatusResultOrganizerFunctionalStatusResultObservation FunctionalStatusOrganizer2SelfCareActivities' templateId.root='2.16.840.1.113883.10.20.22.4.66' templateId.extension='2014-06-09' constraints.validation.warning='ResultOrganizerCodeValue FunctionalStatusOrganizer2AuthorParticipation' constraints.validation.dependOn.ResultOrganizerStatusCode='ResultOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wQMWUN6jEee0kIKIEebuqA" base_Class="_DMvdYOEFEeOmBMTtnrPqww">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthStatusObservationTemplateId HealthStatusObservation2Id HealthStatusObservationCode HealthStatusObservationCodeP HealthStatusObservationText HealthStatusObservationStatusCode HealthStatusObservationStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.5' templateId.extension='2014-06-09' constraints.validation.info='HealthStatusObservationHasTextReference HealthStatusObservationTextReferenceValue HealthStatusObservationHasTextReferenceValue' constraints.validation.dependOn.HealthStatusObservationCode='HealthStatusObservationCodeP' constraints.validation.dependOn.HealthStatusObservationStatusCode='HealthStatusObservationStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wQyMMN6jEee0kIKIEebuqA" base_Class="_GM6icOEIEeOmBMTtnrPqww">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionDiagnosisTemplateId HospitalAdmissionDiagnosisCode HospitalAdmissionDiagnosisCodeP HospitalAdmissionDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.34' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalAdmissionDiagnosisCode='HospitalAdmissionDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wRA1sN6jEee0kIKIEebuqA" base_Class="_Trd1cOEMEeOmBMTtnrPqww">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeDiagnosisTemplateId HospitalDischargeDiagnosisCode HospitalDischargeDiagnosisCodeP HospitalDischargeDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.33' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalDischargeDiagnosisCode='HospitalDischargeDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wRPfMN6jEee0kIKIEebuqA" base_Class="_zI6vcOE7EeOTq9XEMvvkWw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationActivityTemplateId ImmunizationActivityInstructionInversion ImmunizationActivityStatusCode ImmunizationActivityStatusCodeP ImmunizationActivityAdministrationUnitCode ImmunizationActivityText ImmunizationActivityConsumable ImmunizationActivityConsumableImmunizationMedicationInformation ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration' templateId.root='2.16.840.1.113883.10.20.22.4.52' templateId.extension='2015-08-01' constraints.validation.info='ImmunizationActivityTextReference ImmunizationActivityReferenceValue ImmunizationActivityTextReferenceValue ImmunizationActivityCode ImmunizationActivityRepeatNumber ImmunizationActivityAdministrationUnitCodeP ImmunizationActivityDrugVehicle ImmunizationActivityIndication ImmunizationActivityMedicationSupplyOrder ImmunizationActivityMedicationDispense ImmunizationActivityReactionObservation ImmunizationActivityInstructions ImmunizationActivityPrecondition ImmunizationActivity2EntryRelationshipSequenceNumber' constraints.validation.dependOn.ImmunizationActivityStatusCode='ImmunizationActivityStatusCodeP' administrationUnitCode.codeSystem='2.16.840.1.113883.5.85' administrationUnitCode.codeSystemName='orderableDrugForm' constraints.validation.dependOn.ImmunizationActivityAdministrationUnitCode='ImmunizationActivityAdministrationUnitCodeP' constraints.validation.warning='ImmunizationActivity2AuthorParticipation ImmunizationActivity2EntryRelationshipForSubAdminAct ImmunizationActivity2EntryRelationshipTypeCode ImmunizationActivity2EntryRelationshipInversionInd ImmunizationActivity2EntryRelationshipSubstanceAdministeredAct' constraints.validation.query='ImmunizationActivity2EntryRelationshipTypeCode ImmunizationActivity2EntryRelationshipInversionInd ImmunizationActivity2EntryRelationshipSequenceNumber ImmunizationActivity2EntryRelationshipSubstanceAdministeredAct ImmunizationActivityConsumableImmunizationMedicationInformation ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivity2Consumable constraints.validation.error='ImmunizationActivityConsumableImmunizationMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivity2Precondition typeCode='PRCN' constraints.validation.error='ImmunizationActivityPreconditionTypeCode ImmunizationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivity2EntryRelationship typeCode='COMP' constraints.validation.warning='ImmunizationActivity2EntryRelationshipTypeCode ImmunizationActivity2EntryRelationshipInversionInd ImmunizationActivity2EntryRelationshipSubstanceAdministeredAct' inversionInd='true' constraints.validation.info='ImmunizationActivity2EntryRelationshipSequenceNumber'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wVGrgN6jEee0kIKIEebuqA" base_Class="_Rx8LIOHUEeO04sHNODkHmQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationMedicationInformationTemplateId ImmunizationMedicationInformationManufacturedMaterial ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode' templateId.root='2.16.840.1.113883.10.20.22.4.54' templateId.extension='2014-06-09' constraints.validation.info='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation' constraints.validation.query='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText' constraints.validation.dependOn.ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP' constraints.validation.dependOn.ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP' constraints.validation.warning='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterial constraints.validation.info='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReferenceValue ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation ImmunizationMedicationInformationManufacturedMaterialImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP ImmunizationMedicationInformationManufacturedMaterialImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation' code.codeSystem='2.16.840.1.113883.12.292' code.codeSystemName='Vaccines administered (CVX)' constraints.validation.error='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP' constraints.validation.dependOn.ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeP' constraints.validation.warning='ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText' constraints.validation.query='ImmunizationMedicationInformationManufacturedMaterialImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP ImmunizationMedicationInformationManufacturedMaterialImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation' constraints.validation.dependOn.ImmunizationMedicationInformationManufacturedMaterialImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCE constraints.validation.info='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP' constraints.validation.dependOn.ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslation='ImmunizationMedicationInformation2ImmunizationMedicationInformationManufacturedMaterialCETranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wW6pYN6jEee0kIKIEebuqA" base_Class="_PrEOIOHoEeO04sHNODkHmQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='IndicationTemplateId IndicationId IndicationCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.19' templateId.extension='2014-06-09' constraints.validation.info='IndicationProblemIndication IndicationCodeNullFlavor IndicationCodeNullFlavorValue IndicationCode IndicationValueP' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.IndicationCode='IndicationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='IndicationValue' constraints.validation.dependOn.IndicationValue='IndicationValueP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wZajwN6jEee0kIKIEebuqA" base_Class="_D62NwOH7EeO04sHNODkHmQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InstructionsTemplateId InstructionsText' templateId.root='2.16.840.1.113883.10.20.22.4.20' templateId.extension='2014-06-09'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wZh4gN6jEee0kIKIEebuqA" base_Class="_WnSCMOLAEeOc7-TVP7Wi6w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationActivityTemplateId MedicationActivityInstructionsInversionInd MedicationActivity2SubstanceAdministeredActInversionInd MedicationActivityEffectiveTimeIVLTSorTS MedicationActivity2EffectiveTimeIVLTSLowXorValue MedicationActivityStatusCode MedicationActivityStatusCodeP MedicationActivityRouteCode MedicationActivityDoseQuantity MedicationActivityAdministrationUnitCode MedicationActivityText MedicationActivityConsumable MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration MedicationActivityConsumableMedicationInformation' templateId.root='2.16.840.1.113883.10.20.22.4.16' templateId.extension='2014-06-09' constraints.validation.info='MedicationActivityTextReference MedicationActivityReferenceValue MedicationActivityTextReferenceValue MedicationActivity2SubstanceAdministeredActSequenceNumber MedicationActivityEffectiveTimeIVLTSHigh MedicationActivityCode MedicationActivityRepeatNumber MedicationActivityAdministrationUnitCodeP MedicationActivity2DrugMonitoringAct MedicationActivityInstructions MedicationActivity2SubstanceAdministeredAct MedicationActivityIndication MedicationActivityMedicationSupplyOrder MedicationActivityMedicationDispense MedicationActivityReactionObservation MedicationActivityPrecondition MedicationActivity2MedicationFreeTextSig' constraints.validation.warning='MedicationActivityDoseQuantityorrateQuantity MedicationActivityEffectiveTimeIVLTSLow MedicationActivityEffectiveTimePIVLTS MedicationActivityRouteCodeP MedicationActivity2AuthorParticipation' constraints.validation.dependOn.MedicationActivityStatusCode='MedicationActivityStatusCodeP' routeCode.codeSystem='2.16.840.1.113883.3.26.1.1' routeCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.MedicationActivityRouteCode='MedicationActivityRouteCodeP' administrationUnitCode.codeSystem='2.16.840.1.113883.3.26.1.1' administrationUnitCode.codeSystemName='FDA RouteOfAdministration' constraints.validation.dependOn.MedicationActivityAdministrationUnitCode='MedicationActivityAdministrationUnitCodeP' constraints.validation.query='MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration MedicationActivityConsumableMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationActivity2Consumable constraints.validation.error='MedicationActivityConsumableMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationActivity2Precondition typeCode='PRCN' constraints.validation.error='MedicationActivityPreconditionTypeCode MedicationActivityPreconditionPreconditionForSubstanceAdministration'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wgNvUN6jEee0kIKIEebuqA" base_Class="_qH-ckOXfEeOkFcFJ9uzEEw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationDispenseTemplateId MedicationDispenseContainsMedicationOrImmunization MedicationDispenseStatusCode MedicationDispenseStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.18' templateId.extension='2014-06-09' constraints.validation.info='MedicationDispense2ContainsMedicationInformation2 MedicationDispense2ContainsImmunizationMedicationInformation2 MedicationDispenseMedicationSupplyOrder' constraints.validation.dependOn.MedicationDispenseStatusCode='MedicationDispenseStatusCodeP' constraints.validation.warning='MedicationDispenseRepeatNumber'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_whceYN6jEee0kIKIEebuqA" base_Class="_Hz__kOXrEeOkFcFJ9uzEEw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationInformationTemplateId MedicationInformationManufacturedMaterial MedicationInformationMedicationInformationManufacturedMaterialCodeP MedicationInformationMedicationInformationManufacturedMaterialCode' templateId.root='2.16.840.1.113883.10.20.22.4.23' templateId.extension='2014-06-09' constraints.validation.info='MedicationInformation2MedicationInformationManufacturedMaterialCETranslation MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue MedicationInformationMedicationInformationManufacturedMaterialReferenceValue' constraints.validation.query='MedicationInformation2MedicationInformationManufacturedMaterialCETranslation MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue MedicationInformationMedicationInformationManufacturedMaterialReferenceValue MedicationInformationMedicationInformationManufacturedMaterialCodeP MedicationInformationMedicationInformationManufacturedMaterialCode' constraints.validation.dependOn.MedicationInformationMedicationInformationManufacturedMaterialCode='MedicationInformationMedicationInformationManufacturedMaterialCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationInformation2MedicationInformationManufacturedMaterial constraints.validation.info='MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation MedicationInformationMedicationInformationManufacturedMaterialReference MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue MedicationInformationMedicationInformationManufacturedMaterialReferenceValue MedicationInformationManufacturedMaterialMedicationInformation2MedicationInformationManufacturedMaterialCETranslation' code.codeSystem='2.16.840.1.113883.6.88' code.codeSystemName='RxNorm' constraints.validation.error='MedicationInformationMedicationInformationManufacturedMaterialCode MedicationInformationMedicationInformationManufacturedMaterialCodeP' constraints.validation.dependOn.MedicationInformationMedicationInformationManufacturedMaterialCode='MedicationInformationMedicationInformationManufacturedMaterialCodeP' constraints.validation.query='MedicationInformationManufacturedMaterialMedicationInformation2MedicationInformationManufacturedMaterialCETranslation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationInformation2MedicationInformationManufacturedMaterialCE constraints.validation.info='MedicationInformation2MedicationInformationManufacturedMaterialCETranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wjH5YN6jEee0kIKIEebuqA" base_Class="_InVpIOZ8EeOmzetP5oaH3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationSupplyOrderTemplateId MedicationSupplyOrderContainsMedicationOrImmunization MedicationSupplyOrderInstructionInversionInd MedicationSupplyOrderStatusCode MedicationSupplyOrderStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.17' templateId.extension='2014-06-09' constraints.validation.info='MedicationSupplyOrder2ContainsMedicationInformation2 MedicationSupplyOrder2ContainsImmunizationMedicationInformation2 MedicationSupplyOrderInstructions' constraints.validation.dependOn.MedicationSupplyOrderStatusCode='MedicationSupplyOrderStatusCodeP' constraints.validation.warning='MedicationSupplyOrderRepeatNumber'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wmjn4N6jEee0kIKIEebuqA" base_Class="_k_C20OaCEeOmzetP5oaH3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NonMedicinalSupplyActivityTemplateId NonMedicinalSupplyActivity2Instruction2InversionInd NonMedicinalSupplyActivityStatusCode NonMedicinalSupplyActivityStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.50' templateId.extension='2014-06-09' constraints.validation.dependOn.NonMedicinalSupplyActivityStatusCode='NonMedicinalSupplyActivityStatusCodeP' constraints.validation.info='NonMedicinalSupplyActivity2Instruction2 NonMedicinalSupplyActivityProductInstance'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_woYz4N6jEee0kIKIEebuqA" base_Class="_Ao2HkOaHEeOmzetP5oaH3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicianofRecordParticipantTemplateId PhysicianofRecordParticipantAssignedEntity PhysicianofRecordParticipantAssignedEntityAssignedPersonName' templateId.root='2.16.840.1.113883.10.20.6.2.2' templateId.extension='2014-06-09' constraints.validation.query='PhysicianofRecordParticipantAssignedEntityAssignedPersonName PhysicianofRecordParticipant2AssignedEntityRepresentedOrganizationName PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityAssignedPerson PhysicianofRecordParticipant2AssignedEntityRepresentedOrganization' constraints.validation.warning='PhysicianofRecordParticipant2AssignedEntityRepresentedOrganizationName PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityAssignedPerson' constraints.validation.info='PhysicianofRecordParticipant2AssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianofRecordParticipant2AssignedEntity constraints.validation.warning='PhysicianofRecordParticipantAssignedEntityHasNationalProviderId PhysicianofRecordParticipantAssignedEntityAssignedPerson' constraints.validation.info='PhysicianofRecordParticipant2AssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianofRecordParticipant2AssignedEntityAssignedPerson constraints.validation.error='PhysicianofRecordParticipantAssignedEntityAssignedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianofRecordParticipant2AssignedEntityRepresentedOrganization constraints.validation.warning='PhysicianofRecordParticipant2AssignedEntityRepresentedOrganizationName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wpzwMN6jEee0kIKIEebuqA" base_Class="_lLnRMOaYEeOmzetP5oaH3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityActTemplateId PlanOfCareActivityActMoodCode PlannedAct2Code PlannedAct2StatusCode PlannedAct2StatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.39' templateId.extension='2014-06-09' constraints.validation.warning='PlannedAct2CodeFromLoincOrSnomed PlannedAct2EffectiveTime PlannedAct2AuthorParticipation' statusCode.code='active' constraints.validation.info='PlannedAct2Indication2 PlannedAct2Instruction2 PlannedAct2Performer PlannedAct2PriorityPreference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wsQnQN6jEee0kIKIEebuqA" base_Class="_bDPFMOdXEeOqBOMhgDlycQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityEncounterTemplateId PlannedEncounter2ParticipantServiceDeliveryLocationTypeCode PlanOfCareActivityEncounterMoodCode PlannedEncounter2StatusCode PlannedEncounter2StatusCodeP PlannedEncounter2PerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.40' templateId.extension='2014-06-09' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='PlannedEncounter2Code PlannedEncounter2CodeP PlannedEncounter2EffectiveTime PlannedEncounter2AuthorParticipation' constraints.validation.dependOn.PlannedEncounter2Code='PlannedEncounter2CodeP' statusCode.code='active' constraints.validation.info='PlannedEncounter2Performer PlannedEncounter2ServiceDeliveryLocation PlannedEncounter2PriorityPreference PlannedEncounter2Indication2' constraints.validation.query='PlannedEncounter2PerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedEncounter2Performer constraints.validation.error='PlannedEncounter2PerformerAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_wwJowN6jEee0kIKIEebuqA" base_Class="_jKZssOdvEeOqBOMhgDlycQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityObservationTemplateId PlanOfCareActivityObservationMoodCode PlannedObservation2CodeP PlannedObservation2StatusCode PlannedObservation2StatusCodeP PlannedObservation2TargetSiteCode' templateId.root='2.16.840.1.113883.10.20.22.4.44' templateId.extension='2014-06-09' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='PlannedObservation2Code PlannedObservation2EffectiveTime PlannedObservation2TargetSiteCodeP PlannedObservation2AuthorParticipation' constraints.validation.dependOn.PlannedObservation2Code='PlannedObservation2CodeP' statusCode.code='active' constraints.validation.info='PlannedObservation2Value PlannedObservation2MethodCode PlannedObservation2Performer PlannedObservation2PriorityPreference PlannedObservation2Indication2 PlannedObservation2Instruction2 PlannedObservation2PlannedCoverage' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PlannedObservation2TargetSiteCode='PlannedObservation2TargetSiteCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_w3tpUN6jEee0kIKIEebuqA" base_Class="_cs0YsOeEEeOqBOMhgDlycQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivityProcedureTemplateId PlannedProcedure2Instruction2InversionInd PlanOfCareActivityProcedureMoodCode PlannedProcedure2Code PlannedProcedure2StatusCode PlannedProcedure2StatusCodeP PlannedProcedure2TargetSiteCode' templateId.root='2.16.840.1.113883.10.20.22.4.41' templateId.extension='2014-06-09' constraints.validation.warning='PlannedProcedure2CodeFromLoincOrSnomed PlannedProcedure2EffectiveTime PlannedProcedure2AuthorParticipation' constraints.validation.info='PlannedProcedure2CodeFromCptOrIcd PlannedProcedure2MethodCode PlannedProcedure2TargetSiteCodeP PlannedProcedure2Performer PlannedProcedure2PriorityPreference PlannedProcedure2Indication2 PlannedProcedure2Instruction2 PlannedProcedure2PlannedCoverage' statusCode.code='active' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PlannedProcedure2TargetSiteCode='PlannedProcedure2TargetSiteCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_w9dsAN6jEee0kIKIEebuqA" base_Class="_Yj45YOgREeO-iJTuAv7BKQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivitySubstanceAdministrationTemplateId PlannedMedicationActivity2EffectiveTimeIVLTSorTS PlannedMedicationActivity2EffectiveTimeIVLTSLowXorValue PlanOfCareActivitySubstanceAdministrationMoodCode PlannedMedicationActivity2StatusCode PlannedMedicationActivity2StatusCodeP PlannedMedicationActivity2RouteCode PlannedMedicationActivity2ApproachSiteCode PlannedMedicationActivity2AdministrationUnitCode PlannedMedicationActivity2Consumable PlannedMedicationActivity2ConsumableMedicationInformation2 PlannedMedicationActivity2PreconditionTypeCode PlannedMedicationActivity2PreconditionPreconditionForSubstanceAdministration2' templateId.root='2.16.840.1.113883.10.20.22.4.42' templateId.extension='2014-06-09' constraints.validation.warning='PlannedMedicationActivity2EffectiveTimeIVLTSLow PlannedMedicationActivity2EffectiveTimePIVLTS PlannedMedicationActivity2AuthorParticipation PlannedMedicationActivity2IVLPQdoseQuantityUnit PlannedMedicationActivity2IVLPQrateQuantityUnit' constraints.validation.info='PlannedMedicationActivity2EffectiveTimeIVLTSHigh PlannedMedicationActivity2RepeatNumber PlannedMedicationActivity2RouteCodeP PlannedMedicationActivity2ApproachSiteCodeP PlannedMedicationActivity2DoseQuantity PlannedMedicationActivity2RateQuantity PlannedMedicationActivity2MaxDoseQuantity PlannedMedicationActivity2AdministrationUnitCodeP PlannedMedicationActivity2Performer PlannedMedicationActivity2PriorityPreference PlannedMedicationActivity2Indication2 PlannedMedicationActivity2Instruction2 PlannedMedicationActivity2Precondition' statusCode.code='active' routeCode.codeSystem='2.16.840.1.113883.3.26.1.1' routeCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.PlannedMedicationActivity2RouteCode='PlannedMedicationActivity2RouteCodeP' approachSiteCode.codeSystem='2.16.840.1.113883.6.96' approachSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.PlannedMedicationActivity2ApproachSiteCode='PlannedMedicationActivity2ApproachSiteCodeP' administrationUnitCode.codeSystem='2.16.840.1.113883.5.85' administrationUnitCode.codeSystemName='orderableDrugForm' constraints.validation.dependOn.PlannedMedicationActivity2AdministrationUnitCode='PlannedMedicationActivity2AdministrationUnitCodeP' constraints.validation.query='PlannedMedicationActivity2IVLPQdoseQuantityUnit PlannedMedicationActivity2IVLPQrateQuantityUnit PlannedMedicationActivity2ConsumableMedicationInformation2 PlannedMedicationActivity2PreconditionTypeCode PlannedMedicationActivity2PreconditionPreconditionForSubstanceAdministration2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedMedicationActivity2IVLPQdoseQuantity unit='1' constraints.validation.warning='PlannedMedicationActivity2IVLPQdoseQuantityUnit'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedMedicationActivity2IVLPQrateQuantity unit='1' constraints.validation.warning='PlannedMedicationActivity2IVLPQrateQuantityUnit'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedMedicationActivity2Consumable constraints.validation.error='PlannedMedicationActivity2ConsumableMedicationInformation2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedMedicationActivity2Precondition typeCode='PRCN' constraints.validation.error='PlannedMedicationActivity2PreconditionTypeCode PlannedMedicationActivity2PreconditionPreconditionForSubstanceAdministration2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xFBFgN6jEee0kIKIEebuqA" base_Class="_vEd1cOg0EeO-iJTuAv7BKQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareActivitySupplyTemplateId PlannedSupply2MedInfoXorImmunXorProductInstance PlanOfCareActivitySupplyMoodCode PlannedSupply2StatusCode PlannedSupply2StatusCodeP PlannedSupply2ProductManufacturedProductMedInfo2XorImmunMedInfo2' templateId.root='2.16.840.1.113883.10.20.22.4.43' templateId.extension='2014-06-09' statusCode.code='active' constraints.validation.warning='PlannedSupply2EffectiveTime PlannedSupply2AuthorParticipation PlannedSupply2ProductRecommended' constraints.validation.info='PlannedSupply2RepeatNumber PlannedSupply2Quantity PlannedSupply2Product PlannedSupply2Performer PlannedSupply2ProductInstance PlannedSupply2PriorityPreference PlannedSupply2Indication2 PlannedSupply2Instruction2 PlannedSupply2PlannedCoverage PlannedSupply2ProductManufacturedProduct' constraints.validation.query='PlannedSupply2ProductManufacturedProductMedInfo2XorImmunMedInfo2 PlannedSupply2ProductManufacturedProduct'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedSupply2Product constraints.validation.info='PlannedSupply2ProductManufacturedProduct'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedSupply2ProductManufacturedProduct constraints.validation.error='PlannedSupply2ProductManufacturedProductMedInfo2XorImmunMedInfo2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xKYtsN6jEee0kIKIEebuqA" base_Class="_Q0ODkOwlEeOqa975IP2wug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PolicyActivityTemplateId PolicyActivityCodeP PolicyActivityStatusCode PolicyActivityStatusCodeP PolicyActivityPayer PolicyActivityCoverage PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerTemplateId PolicyActivityPayerPayerAssignedEntity PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorTemplateId PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivity2CoverageCoverageRoleCoveragePlayingEntitySDTCBirthTime PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageTemplateId PolicyActivityCoverageCoverageRole PolicyActivity2CDTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.61' templateId.extension='2015-08-01' code.codeSystemName='' constraints.validation.warning='PolicyActivityCode PolicyActivityGuarantor PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivity2CDTranslation' constraints.validation.dependOn.PolicyActivityCode='PolicyActivityCodeP' constraints.validation.dependOn.PolicyActivityStatusCode='PolicyActivityStatusCodeP' constraints.validation.query='PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivity2PayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityPayerTemplateId PolicyActivityPayerPayerAssignedEntity PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivity2GuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorTemplateId PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleCoveragePlayingEntityDateOfBirthInSDTCbirthTime PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivity2CoverageCoverageRoleCoveragePlayingEntitySDTCBirthTime PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageTemplateId PolicyActivityCoverageCoverageRole PolicyActivity2CDTranslation PolicyActivity2CDTranslationP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityCoverageCoverageRoleCoveragePlayingEntityDateOfBirthInSDTCbirthTime' constraints.validation.dependOn.PolicyActivityGuarantorGuarantorAssignedEntityCode='PolicyActivityGuarantorGuarantorAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2Payer constraints.validation.error='PolicyActivityPayerTemplateId PolicyActivityPayerPayerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.87'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2PayerPayerAssignedEntity constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom' constraints.validation.error='PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.query='PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.warning='PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2Guarantor constraints.validation.error='PolicyActivityGuarantorTemplateId PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.88' typeCode='PRF'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2GuarantorGuarantorAssignedEntity constraints.validation.error='PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine' constraints.validation.dependOn.PolicyActivityGuarantorGuarantorAssignedEntityCode='PolicyActivityGuarantorGuarantorAssignedEntityCodeP' constraints.validation.warning='PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode' constraints.validation.query='GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2Coverage constraints.validation.error='PolicyActivityCoverageTemplateId PolicyActivityCoverageCoverageRole' templateId.root='2.16.840.1.113883.10.20.22.4.89'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2CoverageCoverageRole constraints.validation.error='PolicyActivityCoverageCoverageRoleId' constraints.validation.warning='PolicyActivityCoverageCoverageRoleCoveragePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2CoverageCoverageRoleCoveragePlayingEntity constraints.validation.info='PolicyActivityCoverageCoverageRoleCoveragePlayingEntityDateOfBirthInSDTCbirthTime' constraints.validation.error='PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivity2CoverageCoverageRoleCoveragePlayingEntitySDTCBirthTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivity2CD translation.codeSystem='2.16.840.1.113883.3.221.5' translation.codeSystemName='Source of Payment Typology (PHDSC)' constraints.validation.warning='PolicyActivity2CDTranslation' constraints.validation.error='PolicyActivity2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xRZUoN6jEee0kIKIEebuqA" base_Class="__SgUwOwuEeOqa975IP2wug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostprocedureDiagnosisTemplateId PostprocedureDiagnosisCode PostprocedureDiagnosisCodeP PostprocedureDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.51' templateId.extension='2015-08-01' constraints.validation.dependOn.PostprocedureDiagnosisCode='PostprocedureDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xRn-IN6jEee0kIKIEebuqA" base_Class="_5l3g0OzYEeOnE-G4kptBiw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisTemplateId PreoperativeDiagnosisCode PreoperativeDiagnosisCodeP PreoperativeDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.65' templateId.extension='2015-08-01' constraints.validation.dependOn.PreoperativeDiagnosisCode='PreoperativeDiagnosisCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xR31wN6jEee0kIKIEebuqA" base_Class="_y5C8IOzbEeOnE-G4kptBiw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemConcernActTemplateId ProblemConcernActEffectiveTimeLow ProblemConcernActStatusCode ProblemConcernActStatusCodeP ProblemConcernActEffectiveTime ProblemConcernActCode ProblemConcernActCodeP ProblemConcernActProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.3' templateId.extension='2015-08-01' constraints.validation.info='ProblemConcernActEffectiveTimeHigh ProblemConcernAct2PriorityPreference' constraints.validation.dependOn.ProblemConcernActStatusCode='ProblemConcernActStatusCodeP' constraints.validation.dependOn.ProblemConcernActCode='ProblemConcernActCodeP' constraints.validation.warning='ProblemConcernAct2AuthorParticipation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xVo7cN6jEee0kIKIEebuqA" base_Class="_prDAkPDCEeOKPKE9au0oug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId ProblemObservationHasOnsetDate ProblemObservationEffectiveTime ProblemObservationValueP ProblemObservationCodeP ProblemObservationText ProblemObservationStatusCode ProblemObservationStatusCodeP ProblemObservationHealthStatusObservation ProblemObservation2CDCodeTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.4' templateId.extension='2015-08-01' constraints.validation.info='ProblemObservationHasTextReference ProblemObservationTextReferenceValue ProblemObservationHasTextReferenceValue ProblemObservationHasResolutionDate ProblemObservationValueNullFlavor ProblemObservationValueNullFlavorUnknown ProblemObservationNegationInd ProblemObservation2PrognosisObservation ProblemObservation2PriorityPreference ProblemObservationProblemStatus ProblemObservation2CDQualifier ProblemObservation2CDCode' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='ProblemObservationValue ProblemObservationCode ProblemObservation2AuthorParticipation ProblemObservation2CDCodeTranslation' constraints.validation.dependOn.ProblemObservationValue='ProblemObservationValueP' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationCode='ProblemObservationCodeP' constraints.validation.dependOn.ProblemObservationStatusCode='ProblemObservationStatusCodeP' constraints.validation.query='ProblemObservation2CDQualifier ProblemObservation2CDCode ProblemObservation2CDCodeTranslation ProblemObservation2CDCodeTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProblemObservation2CD constraints.validation.info='ProblemObservation2CDQualifier ProblemObservation2CDCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProblemObservation2CDCode translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' constraints.validation.warning='ProblemObservation2CDCodeTranslation' constraints.validation.error='ProblemObservation2CDCodeTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xcFhsN6jEee0kIKIEebuqA" base_Class="_CFMuYPDbEeOKPKE9au0oug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityActTemplateId ProcedureActivityActInstructionsInversion ProcedureActivityActMoodCode ProcedureActivityActStatusCode ProcedureActivityActStatusCodeP ProcedureActivityActEffectiveTime ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom ProcedureActivityActProcedureActPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.12' templateId.extension='2014-06-09' constraints.validation.info='ProcedureActivityAct2CodeSuggestedCodeSystems ProcedureActivityActInstructions ProcedureActivityActIndication ProcedureActivityActMedicationActivity' moodCode='EVN' constraints.validation.dependOn.ProcedureActivityActStatusCode='ProcedureActivityActStatusCodeP' constraints.validation.warning='ProcedureActivityActPerformer ProcedureActivityAct2AuthorParticipation ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization' constraints.validation.query='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization ProcedureActivityActProcedureActPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityAct2ProcedureActPerformer constraints.validation.error='ProcedureActivityActProcedureActPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityAct2ProcedureActPerformerProcedureActAssignedEntity constraints.validation.error='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityTelecom' constraints.validation.warning='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityAct2ProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganization constraints.validation.error='ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationTelecom ProcedureActivityActProcedureActPerformerProcedureActAssignedEntityProcedureActRepresentedOrganizationAddr'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xfW4IN6jEee0kIKIEebuqA" base_Class="_QoLWAPDjEeOKPKE9au0oug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityObservationTemplateId ProcedureActivityObservationInstructionsInversion ProcedureActivityObservationTargetSiteCode ProcedureActivityObservationMoodCode ProcedureActivityObservationStatusCode ProcedureActivityObservationStatusCodeP ProcedureActivityObservationValue ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom ProcedureActivityObservationProcedureObservationPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.13' templateId.extension='2014-06-09' constraints.validation.warning='ProcedureActivityObservationCodeCodeSystems ProcedureActivityObservationTargetSiteCodeP ProcedureActivityObservationPerformer ProcedureActivityObservation2AuthorParticipation' constraints.validation.info='ProcedureActivityObservation2CodeSuggestedCodeSystems ProcedureActivityObservationIndication ProcedureActivityObservationMedicationActivity ProcedureActivityObservationInstructions ProcedureActivityObservation2ReactionObservation2 ProcedureActivityObservation2ANYNullFlavor' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProcedureActivityObservationTargetSiteCode='ProcedureActivityObservationTargetSiteCodeP' moodCode='EVN' constraints.validation.dependOn.ProcedureActivityObservationStatusCode='ProcedureActivityObservationStatusCodeP' constraints.validation.query='ProcedureActivityObservation2ANYNullFlavor ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom ProcedureActivityObservationProcedureObservationPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservation2ANY constraints.validation.info='ProcedureActivityObservation2ANYNullFlavor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservation2ProcedureObservationPerformer constraints.validation.error='ProcedureActivityObservationProcedureObservationPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityObservation2ProcedureObservationPerformerProcedureObservationAssignedEntity constraints.validation.error='ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xjz6UN6jEee0kIKIEebuqA" base_Class="_fCVOQPDqEeOKPKE9au0oug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityProcedureTemplateId ProcedureActivityProcedureInstructionsInversion ProcedureActivityProcedureServiceDeliveryLocationTypeCode ProcedureActivityProcedureTargetSiteCode ProcedureActivityProcedureMoodCode ProcedureActivityProcedureStatusCode ProcedureActivityProcedureStatusCodeP ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.14' templateId.extension='2014-06-09' constraints.validation.warning='ProcedureActivityProcedureCodeCodeSystems ProcedureActivityProcedureTargetSiteCodeP ProcedureActivityProcedurePerformer ProcedureActivityProcedure2AuthorParticipation' constraints.validation.info='ProcedureActivityProcedure2CodeSuggestedCodeSystems ProcedureActivityProcedureIndication ProcedureActivityProcedureMedicationActivity ProcedureActivityProcedurePatientInstruction ProcedureActivityProcedureSpecimen ProcedureActivityProcedure2ReactionObservation2' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' targetSiteCode.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProcedureActivityProcedureTargetSiteCode='ProcedureActivityProcedureTargetSiteCodeP' moodCode='EVN' constraints.validation.dependOn.ProcedureActivityProcedureStatusCode='ProcedureActivityProcedureStatusCodeP' constraints.validation.query='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedure2ProcedureActivityPerformer constraints.validation.error='ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityProcedure2ProcedureActivityPerformerProcedureActivityAssignedEntity constraints.validation.error='ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xokegN6jEee0kIKIEebuqA" base_Class="_U3yosPDxEeOKPKE9au0oug">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReactionObservationTemplateId ReactionObservationProcedureActivityProcedureInversionInd ReactionObservationMedicationActivityInversionInd ReactionObservationSeverityObservationInversionInd ReactionObservationCode ReactionObservationCodeP ReactionObservationId ReactionObservationText ReactionObservationStatusCode ReactionObservationStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.9' templateId.extension='2014-06-09' constraints.validation.info='ReactionObservationCodeValueSet ReactionObservationTextReference ReactionObservationTextReferenceValue ReactionObservationReferenceValue ReactionObservationProcedureActivityProcedure ReactionObservationMedicationActivity ReactionObservationSeverityObservation' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' constraints.validation.dependOn.ReactionObservationCode='ReactionObservationCodeP' constraints.validation.dependOn.ReactionObservationStatusCode='ReactionObservationStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xqfKEN6jEee0kIKIEebuqA" base_Class="_H85E0PF7EeOmsLWmq5fnqQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationEffectiveTime ResultObservationText ResultObservationCodeP ResultObservationValue ResultObservationInterpretationCode ResultObservation2ReferenceRangeObservationRangeValue ResultObservation2ReferenceRangeObservationRangeCode ResultObservation2ReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.2' templateId.extension='2015-08-01' constraints.validation.info='ResultObservationAuthorMultiplicity ResultObservationCodeValue ResultObservationTextReference ResultObservationReferenceValue ResultObservationTextReferenceValue ResultObservationNoObservationRangeCode' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='ResultObservationCode ResultObservationInterpretationCodeP ResultObservation2AuthorParticipation ResultObservation2ReferenceRange' constraints.validation.dependOn.ResultObservationCode='ResultObservationCodeP' interpretationCode.codeSystem='2.16.840.1.113883.5.83' interpretationCode.codeSystemName='ObservationInterpretation' constraints.validation.dependOn.ResultObservationInterpretationCode='ResultObservationInterpretationCodeP' constraints.validation.query='ResultObservation2ReferenceRangeObservationRangeValue ResultObservation2ReferenceRangeObservationRangeCode ResultObservation2ReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolResultObservation2ReferenceRange constraints.validation.error='ResultObservation2ReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolResultObservation2ReferenceRangeObservationRange constraints.validation.error='ResultObservation2ReferenceRangeObservationRangeValue ResultObservation2ReferenceRangeObservationRangeCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xs6L8N6jEee0kIKIEebuqA" base_Class="_gU40UPGEEeOmsLWmq5fnqQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerResultObservation ResultOrganizer2IVLTSLow ResultOrganizer2IVLTSHigh' templateId.root='2.16.840.1.113883.10.20.22.4.1' templateId.extension='2015-08-01' constraints.validation.warning='ResultOrganizerCodeValue ResultOrganizer2AuthorParticipation' constraints.validation.info='ResultOrganizerClassCodeValue ResultOrganizer2EffectiveTime' constraints.validation.query='ResultOrganizer2IVLTSLow ResultOrganizer2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolResultOrganizer2IVLTS constraints.validation.error='ResultOrganizer2IVLTSLow ResultOrganizer2IVLTSHigh'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xuKwMN6jEee0kIKIEebuqA" base_Class="_B0oKYPJdEeO2NaSiicarcg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SeverityObservationTemplateId SeverityObservationCode SeverityObservationCodeP SeverityObservationText SeverityObservationStatusCode SeverityObservationStatusCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.8' templateId.extension='2014-06-09' constraints.validation.info='SeverityObservationTextReference SeverityObservationTextReferenceValue SeverityObservationReferenceValue' constraints.validation.dependOn.SeverityObservationCode='SeverityObservationCodeP' constraints.validation.dependOn.SeverityObservationStatusCode='SeverityObservationStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xuv_AN6jEee0kIKIEebuqA" base_Class="_b_iGIPJfEeO2NaSiicarcg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SocialHistoryObservationTemplateId SocialHistoryObservationCodeP SocialHistoryObservationStatusCode SocialHistoryObservationStatusCodeP SocialHistoryObservation2EffectiveTime SocialHistoryObservation2CDTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.38' templateId.extension='2015-08-01' constraints.validation.warning='SocialHistoryObservation2ReferenceAttribute SocialHistoryObservationCode SocialHistoryObservationValue SocialHistoryObservation2AuthorParticipation SocialHistoryObservation2CDTranslation' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.dependOn.SocialHistoryObservationStatusCode='SocialHistoryObservationStatusCodeP' constraints.validation.query='SocialHistoryObservation2CDTranslation SocialHistoryObservation2CDTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSocialHistoryObservation2CD translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' constraints.validation.warning='SocialHistoryObservation2CDTranslation' constraints.validation.error='SocialHistoryObservation2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_xw-zoN6jEee0kIKIEebuqA" base_Class="_K3M6IPKJEeOn7bMsPcStOw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SubstanceOrDeviceAllergyObservationTemplateId SubstanceOrDeviceAllergyObservationReactionInversionIndicator SubstanceOrDeviceAllergyObservationEffectiveTime SubstanceOrDeviceAllergyObservationValue SubstanceOrDeviceAllergyObservationValueP SubstanceOrDeviceAllergyObservationCode SubstanceOrDeviceAllergyObservationCodeP SubstanceOrDeviceAllergyObservation2IVLTSLow SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity SubstanceOrDeviceAllergyObservationParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.24.3.90' templateId.extension='2014-06-09' constraints.validation.warning='SubstanceOrDeviceAllergyObservationSeverityInversionIndicator SubstanceOrDeviceAllergyObservation2CriticalityInversionIndicator SubstanceOrDeviceAllergyObservationParticipant SubstanceOrDeviceAllergyObservationReactionObservation SubstanceOrDeviceAllergyObservationSeverityObservation SubstanceOrDeviceAllergyObservation2AuthorParticipation SubstanceOrDeviceAllergyObservation2CriticalityObservation' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.SubstanceOrDeviceAllergyObservationValue='SubstanceOrDeviceAllergyObservationValueP' constraints.validation.dependOn.SubstanceOrDeviceAllergyObservationCode='SubstanceOrDeviceAllergyObservationCodeP' constraints.validation.query='SubstanceOrDeviceAllergyObservation2IVLTSLow SubstanceOrDeviceAllergyObservation2IVLTSHigh SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity SubstanceOrDeviceAllergyObservationParticipantParticipantRole' constraints.validation.info='SubstanceOrDeviceAllergyObservation2IVLTSHigh SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservation2IVLTS constraints.validation.error='SubstanceOrDeviceAllergyObservation2IVLTSLow' constraints.validation.info='SubstanceOrDeviceAllergyObservation2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservation2Participant constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservation2ParticipantParticipantRole constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservation2ParticipantParticipantRolePlayingEntity constraints.validation.info='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergySpecificMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReference SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityOriginalTextReferenceValue SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyClassMedication SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityAllergyFoodOtherSubstance' constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCode SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation' constraints.validation.query='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolSubstanceOrDeviceAllergyObservation2ParticipantParticipantRolePlayingEntityCE constraints.validation.error='SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCEOriginalText SubstanceOrDeviceAllergyObservationParticipantParticipantRolePlayingEntityCETranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_x1HFsN6jEee0kIKIEebuqA" base_Class="_qHUXwPMxEeOUvapeh9bVvQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='TobaccoUseTemplateId TobaccoUse2Id TobaccoUseCode TobaccoUseCodeP TobaccoUseEffectiveTime' templateId.root='2.16.840.1.113883.10.20.22.4.85' templateId.extension='2014-06-09' code.code='11367-0' code.codeSystemName='' code.displayName='History of tobacco use' constraints.validation.dependOn.TobaccoUseCode='TobaccoUseCodeP' constraints.validation.warning='TobaccoUse2AuthorParticipation' constraints.validation.info='TobaccoUse2CDCodeTermAssertionOrLoinc TobaccoUse2IVLTSHigh' constraints.validation.query='TobaccoUse2CDCodeTermAssertionOrLoinc TobaccoUse2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTobaccoUse2IVLTS constraints.validation.info='TobaccoUse2IVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolTobaccoUse2CD constraints.validation.info='TobaccoUse2CDCodeTermAssertionOrLoinc'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_x2Dg4N6jEee0kIKIEebuqA" base_Class="__zeTcPM3EeOUvapeh9bVvQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignObservationTemplateId VitalSignObservationEffectiveTime VitalSignObservationValue VitalSignObservationText VitalSignObservationInterpretationCode VitalSignObservationAuthor' templateId.root='2.16.840.1.113883.10.20.22.4.27' templateId.extension='2014-06-09' constraints.validation.info='VitalSignObservationTextReference VitalSignObservationReferenceValue VitalSignObservationTextReferenceValue VitalSignObservationInterpretationCodeP' interpretationCode.codeSystem='2.16.840.1.113883.5.83' interpretationCode.codeSystemName='ObservationInterpretation' constraints.validation.dependOn.VitalSignObservationInterpretationCode='VitalSignObservationInterpretationCodeP' constraints.validation.warning='VitalSignObservation2AuthorParticipation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_x4nFoN6jEee0kIKIEebuqA" base_Class="_dDupoPV2EeONioZkBKP8eQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsOrganizerTemplateId VitalSignsOrganizerCode VitalSignsOrganizerCodeP VitalSignsOrganizerEffectiveTime VitalSignsOrganizerVitalSignObservation VitalSignsOrganizer2CDTranslation VitalSignsOrganizer2CDTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.26' templateId.extension='2015-08-01' constraints.validation.dependOn.VitalSignsOrganizerCode='VitalSignsOrganizerCodeP' constraints.validation.warning='VitalSignsOrganizer2AuthorParticipation' constraints.validation.query='VitalSignsOrganizer2CDTranslation VitalSignsOrganizer2CDTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolVitalSignsOrganizer2CD translation.code='74728-7' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Vital signs, weight, height, head circumference, oximetry, BMI, and BSA panel - HL7.CCDAr1.1' constraints.validation.error='VitalSignsOrganizer2CDTranslation VitalSignsOrganizer2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yJMfUN6jEee0kIKIEebuqA" base_Class="_ze150PitEeOXlK95I8tUew">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId ResultObservationClassCode ResultObservationMoodCode ResultObservationId ResultObservationCode ResultObservationCodeP ResultObservationStatusCode ResultObservationStatusCodeP ResultObservationEffectiveTime ResultObservationValue ResultObservationText ResultObservationInterpretationCode ResultObservationMethodCode ResultObservationTargetSiteCode CognitiveStatusResultObservationAuthor CognitiveStatusResultObservationNonMedicinalSupplyActivity CognitiveStatusResultObservationCaregiverCharacteristics MentalStatusObservation2CDTranslation MentalStatusObservation2CDTranslationP CognitiveStatusResultObservationReferenceRangeObservationRange' templateId.root='2.16.840.1.113883.10.20.22.4.74' templateId.extension='2015-08-01' constraints.validation.warning='CognitiveStatusResultObservationValueDatatype MentalStatusObservation2AuthorParticipation' constraints.validation.info='ResultObservationTextReference ResultObservationTextReferenceValue ResultObservationReferenceValue ResultObservationCodeValue ResultObservationNoObservationRangeCode ResultObservationAuthorMultiplicity CognitiveStatusResultObservationAssessmentScaleObservation CognitiveStatusResultObservationReferenceRange CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode' classCode='OBS' moodCode='EVN' constraints.validation.dependOn.ResultObservationCode='ResultObservationCodeP' constraints.validation.dependOn.ResultObservationStatusCode='ResultObservationStatusCodeP' constraints.validation.query='MentalStatusObservation2CDTranslation MentalStatusObservation2CDTranslationP CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode CognitiveStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMentalStatusObservation2CD translation.code='75275-8' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Cognitive Function' constraints.validation.error='MentalStatusObservation2CDTranslation MentalStatusObservation2CDTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMentalStatusObservation2ReferenceRange constraints.validation.error='CognitiveStatusResultObservationReferenceRangeObservationRange'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMentalStatusObservation2ReferenceRangeObservationRange constraints.validation.info='CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yPJ9YN6jEee0kIKIEebuqA" base_Class="_aetyEPu_EeOyiMEKhdqMGA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AnesthesiaSectionTemplateId AnesthesiaSectionCode AnesthesiaSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.25' templateId.extension='2014-06-09' constraints.validation.dependOn.AnesthesiaSectionCode='AnesthesiaSectionCodeP' constraints.validation.info='AnesthesiaSectionProcedureActivityProcedure AnesthesiaSectionMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yQO7cN6jEee0kIKIEebuqA" base_Class="_q_8twPvVEeOvZJBdQKQrqQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssessmentAndPlanSectionTemplateId AssessmentAndPlanSectionCode AssessmentAndPlanSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.9' templateId.extension='2014-06-09' constraints.validation.dependOn.AssessmentAndPlanSectionCode='AssessmentAndPlanSectionCodeP' constraints.validation.info='AssessmentAndPlanSectionPlanOfCareActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yQ638N6jEee0kIKIEebuqA" base_Class="_6M-msPvXEeOes-3T-2HryA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComplicationsSectionTemplateId ComplicationsSectionCode ComplicationsSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.37' templateId.extension='2015-08-01' constraints.validation.info='ComplicationsSectionExplicitComplications ComplicationsSectionProblemObservation' constraints.validation.dependOn.ComplicationsSectionCode='ComplicationsSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yRzBsN6jEee0kIKIEebuqA" base_Class="_kgM0YPvbEeOJwYDYIUCQDg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncountersSectionEntriesOptionalTemplateId EncountersSectionEntriesOptionalCode EncountersSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.22' templateId.extension='2015-08-01' constraints.validation.dependOn.EncountersSectionEntriesOptionalCode='EncountersSectionEntriesOptionalCodeP' constraints.validation.warning='EncountersSectionEntriesOptionalEncounterActivities'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ySzHQN6jEee0kIKIEebuqA" base_Class="_8rMFkPyHEeOozpLKXSm5NA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FunctionalStatusSectionTemplateId FunctionalStatusSectionCode FunctionalStatusSectionCodeP FunctionalStatusSectionCognitiveStatusResultOrganizer FunctionalStatusSectionCognitiveStatusResultObservation FunctionalStatusSectionNumberOfPressureUlcersObservation FunctionalStatusSectionHighestPressureUlcerStage' templateId.root='2.16.840.1.113883.10.20.22.2.14' templateId.extension='2014-06-09' constraints.validation.dependOn.FunctionalStatusSectionCode='FunctionalStatusSectionCodeP' constraints.validation.info='FunctionalStatusSectionFunctionalStatusResultOrganizer FunctionalStatusSectionFunctionalStatusResultObservation FunctionalStatusSectionNonMedicinalSupplyActivity FunctionalStatusSection2SelfCareActivities FunctionalStatusSection2SensoryAndSpeechStatus'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yXy8AN6jEee0kIKIEebuqA" base_Class="_sZlggPyhEeOC19UEcu7MOw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HistoryOfPastIllnessSectionTemplateId HistoryOfPastIllnessSectionCode HistoryOfPastIllnessSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.20' templateId.extension='2015-08-01' constraints.validation.dependOn.HistoryOfPastIllnessSectionCode='HistoryOfPastIllnessSectionCodeP' constraints.validation.info='HistoryOfPastIllnessSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yYkYEN6jEee0kIKIEebuqA" base_Class="_ctJgAPylEeOc0tW1-DpN-Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionDiagnosisSectionTemplateId HospitalAdmissionDiagnosisSectionCode HospitalAdmissionDiagnosisSectionCodeP AdmissionDiagnosisSection2CETranslation AdmissionDiagnosisSection2CETranslationP' templateId.root='2.16.840.1.113883.10.20.22.2.43' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalAdmissionDiagnosisSectionCode='HospitalAdmissionDiagnosisSectionCodeP' constraints.validation.warning='HospitalAdmissionDiagnosisSectionHospitalAdmissionDiagnosis' constraints.validation.query='AdmissionDiagnosisSection2CETranslation AdmissionDiagnosisSection2CETranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdmissionDiagnosisSection2CE translation.code='42347-5' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Admission Diagnosis' constraints.validation.error='AdmissionDiagnosisSection2CETranslation AdmissionDiagnosisSection2CETranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yZdI4N6jEee0kIKIEebuqA" base_Class="_ZLY3MPyqEeOlg_Cnc5bODw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId HospitalAdmissionMedicationsSectionEntriesOptionalCode HospitalAdmissionMedicationsSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.44' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalAdmissionMedicationsSectionEntriesOptionalCode='HospitalAdmissionMedicationsSectionEntriesOptionalCodeP' constraints.validation.warning='HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yaMvwN6jEee0kIKIEebuqA" base_Class="_jfuGYPytEeOmn53IDV99zw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeDiagnosisSectionTemplateId HospitalDischargeDiagnosisSectionCode HospitalDischargeDiagnosisSectionCodeP DischargeDiagnosisSection2CETranslation DischargeDiagnosisSection2CETranslationP' templateId.root='2.16.840.1.113883.10.20.22.2.24' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalDischargeDiagnosisSectionCode='HospitalDischargeDiagnosisSectionCodeP' constraints.validation.warning='HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis' constraints.validation.query='DischargeDiagnosisSection2CETranslation DischargeDiagnosisSection2CETranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeDiagnosisSection2CE translation.code='78375-3' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Discharge Diagnosis' constraints.validation.error='DischargeDiagnosisSection2CETranslation DischargeDiagnosisSection2CETranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ybKZEN6jEee0kIKIEebuqA" base_Class="_HlfBYPyzEeOfAK77IvEBUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeMedicationsSectionEntriesOptionalTemplateId HospitalDischargeMedicationsSectionEntriesOptionalCode HospitalDischargeMedicationsSectionEntriesOptionalCodeP DischargeMedicationsSectionEntriesOptional2CETranslation DischargeMedicationsSectionEntriesOptional2CETranslationP' templateId.root='2.16.840.1.113883.10.20.22.2.11' templateId.extension='2015-08-01' constraints.validation.dependOn.HospitalDischargeMedicationsSectionEntriesOptionalCode='HospitalDischargeMedicationsSectionEntriesOptionalCodeP' constraints.validation.warning='HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication' constraints.validation.query='DischargeMedicationsSectionEntriesOptional2CETranslation DischargeMedicationsSectionEntriesOptional2CETranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeMedicationsSectionEntriesOptional2CE translation.code='75311-1' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Discharge Medications' constraints.validation.error='DischargeMedicationsSectionEntriesOptional2CETranslation DischargeMedicationsSectionEntriesOptional2CETranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ycB7wN6jEee0kIKIEebuqA" base_Class="_kdQhIPy3EeO1SvUcmWeLDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationsSectionEntriesOptionalTemplateId ImmunizationsSectionEntriesOptionalCode ImmunizationsSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.2' templateId.extension='2015-08-01' constraints.validation.dependOn.ImmunizationsSectionEntriesOptionalCode='ImmunizationsSectionEntriesOptionalCodeP' constraints.validation.warning='ImmunizationsSectionEntriesOptionalImmunizationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ycyJsN6jEee0kIKIEebuqA" base_Class="_k8L2YP1HEeOVx4YMwgfjlA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InstructionsSectionTemplateId InstructionsSectionCode InstructionsSectionCodeP InstructionsSectionInstructions' templateId.root='2.16.840.1.113883.10.20.22.2.45' templateId.extension='2014-06-09' nullFlavor='NI' constraints.validation.info='InstructionsSection2NullFlavor' constraints.validation.dependOn.InstructionsSectionCode='InstructionsSectionCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ydmCAN6jEee0kIKIEebuqA" base_Class="_YCS1AP1WEeOW-qBXb0kbTA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InterventionsSectionTemplateId InterventionsSectionCode InterventionsSectionCodeP' templateId.root='2.16.840.1.113883.10.20.21.2.3' templateId.extension='2015-08-01' constraints.validation.dependOn.InterventionsSectionCode='InterventionsSectionCodeP' constraints.validation.warning='InterventionsSection2InterventionAct InterventionsSection2PlannedInterventionAct' constraints.validation.info='InterventionsSection2HandoffCommunication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yeTzsN6jEee0kIKIEebuqA" base_Class="_5OKxwP1bEeO5Hq-yrsJSmg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicalEquipmentSectionTemplateId MedicalEquipmentSectionCode MedicalEquipmentSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.23' templateId.extension='2014-06-09' constraints.validation.dependOn.MedicalEquipmentSectionCode='MedicalEquipmentSectionCodeP' constraints.validation.warning='MedicalEquipmentSectionNonMedicinalSupplyActivity MedicalEquipmentSection2ProcedureActivityProcedure2' constraints.validation.info='MedicalEquipmentSection2MedicalEquipmentOrganizer'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yf-AkN6jEee0kIKIEebuqA" base_Class="_F37nMP4jEeOwFalSp0fRiw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsAdministeredSectionTemplateId MedicationsAdministeredSectionCode MedicationsAdministeredSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.38' templateId.extension='2014-06-09' constraints.validation.dependOn.MedicationsAdministeredSectionCode='MedicationsAdministeredSectionCodeP' constraints.validation.info='MedicationsAdministeredSectionMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yguOgN6jEee0kIKIEebuqA" base_Class="_twgM0P4lEeOzC5ykp-XCaA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PayersSectionTemplateId PayersSectionCode PayersSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.18' templateId.extension='2015-08-01' constraints.validation.dependOn.PayersSectionCode='PayersSectionCodeP' constraints.validation.warning='PayersSectionCoverageActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yhd1YN6jEee0kIKIEebuqA" base_Class="_-nZiYP4uEeObaveuCI77uA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicalExamSectionTemplateId PhysicalExamSectionCode PhysicalExamSectionCodeP PhysicalExamSectionPressureUlcerObservation PhysicalExamSectionHighestPressureUlcerStage PhysicalExamSectionNumberOfPressureUlcersObservation PhysicalExamSection2ComponentSectionCode PhysicalExamSection2ComponentSectionCodeP PhysicalExamSection2ComponentSectionTitle PhysicalExamSection2ComponentSectionText PhysicalExamSection2ComponentSection' templateId.root='2.16.840.1.113883.10.20.2.10' templateId.extension='2015-08-01' constraints.validation.dependOn.PhysicalExamSectionCode='PhysicalExamSectionCodeP' constraints.validation.info='PhysicalExamSection2WoundObservation PhysicalExamSection2Component' constraints.validation.query='PhysicalExamSection2ComponentSectionCode PhysicalExamSection2ComponentSectionCodeP PhysicalExamSection2ComponentSectionTitle PhysicalExamSection2ComponentSectionText PhysicalExamSection2ComponentSection'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicalExamSection2Component constraints.validation.error='PhysicalExamSection2ComponentSection'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicalExamSection2ComponentSection code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.error='PhysicalExamSection2ComponentSectionCode PhysicalExamSection2ComponentSectionCodeP PhysicalExamSection2ComponentSectionTitle PhysicalExamSection2ComponentSectionText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yk-cYN6jEee0kIKIEebuqA" base_Class="_bwml0P4yEeO_Yb9cO8w3bA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlanOfCareSectionTemplateId PlanOfCareSectionCode PlanOfCareSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.10' templateId.extension='2014-06-09' constraints.validation.dependOn.PlanOfCareSectionCode='PlanOfCareSectionCodeP' constraints.validation.info='PlanOfCareSectionPlanOfCareActivityObservation PlanOfCareSectionPlanOfCareActivityEncounter PlanOfCareSectionPlanOfCareActivityAct PlanOfCareSectionPlanOfCareActivityProcedure PlanOfCareSectionPlanOfCareActivitySubstanceAdministration PlanOfCareSectionPlanOfCareActivitySupply PlanOfCareSectionInstructions PlanOfTreatmentSection2HandoffCommunication PlanOfTreatmentSection2NutritionRecommendation PlanOfTreatmentSection2PlannedImmunizationActivity PlanOfTreatmentSection2GoalObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yprWMN6jEee0kIKIEebuqA" base_Class="_dz0ZwP49EeO_F_2qLv6FWQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedProcedureSectionTemplateId PlannedProcedureSectionCode PlannedProcedureSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.30' templateId.extension='2014-06-09' constraints.validation.dependOn.PlannedProcedureSectionCode='PlannedProcedureSectionCodeP' constraints.validation.info='PlannedProcedureSectionPlanOfCareActivityProcedure'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yqdZUN6jEee0kIKIEebuqA" base_Class="_MLNngP5BEeOmw9RN80Tpig">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostprocedureDiagnosisSectionTemplateId PostprocedureDiagnosisSectionCode PostprocedureDiagnosisSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.36' templateId.extension='2015-08-01' constraints.validation.dependOn.PostprocedureDiagnosisSectionCode='PostprocedureDiagnosisSectionCodeP' constraints.validation.warning='PostprocedureDiagnosisSectionPostprocedureDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yrMZIN6jEee0kIKIEebuqA" base_Class="_JFd3MP5EEeOBnLkJOVC8NQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisSectionTemplateId PreoperativeDiagnosisSectionCode PreoperativeDiagnosisSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.34' templateId.extension='2015-08-01' constraints.validation.dependOn.PreoperativeDiagnosisSectionCode='PreoperativeDiagnosisSectionCodeP' constraints.validation.warning='PreoperativeDiagnosisSectionPreoperativeDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yr-cQN6jEee0kIKIEebuqA" base_Class="_lLOykP5FEeO_r7yO9mhwnA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureFindingsSectionTemplateId ProcedureFindingsSectionCode ProcedureFindingsSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.28' templateId.extension='2015-08-01' constraints.validation.dependOn.ProcedureFindingsSectionCode='ProcedureFindingsSectionCodeP' constraints.validation.info='ProcedureFindingsSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yssN8N6jEee0kIKIEebuqA" base_Class="_5_O94AByEeSjnfOPJpFg3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureIndicationsSectionTemplateId ProcedureIndicationsSectionCode ProcedureIndicationsSectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.29' templateId.extension='2014-06-09' constraints.validation.dependOn.ProcedureIndicationsSectionCode='ProcedureIndicationsSectionCodeP' constraints.validation.info='ProcedureIndicationsSectionIndication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ytb00N6jEee0kIKIEebuqA" base_Class="_80dMoAB0EeSLOb2O6vSPzg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProceduresSectionEntriesOptionalTemplateId ProceduresSectionEntriesOptionalCode ProceduresSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.7' templateId.extension='2014-06-09' constraints.validation.dependOn.ProceduresSectionEntriesOptionalCode='ProceduresSectionEntriesOptionalCodeP' constraints.validation.info='ProceduresSectionEntriesOptionalProcedureActivityProcedure ProceduresSectionEntriesOptionalProcedureActivityObservation ProceduresSectionEntriesOptionalProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yvHP0N6jEee0kIKIEebuqA" base_Class="_Ya0H0AB5EeS20Pddu0dxVw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ReasonForReferralSectionTemplateId ReasonForReferralSectionCode ReasonForReferralSectionCodeP' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.1' templateId.extension='2014-06-09' constraints.validation.dependOn.ReasonForReferralSectionCode='ReasonForReferralSectionCodeP' constraints.validation.info='ReasonForReferralSection2PatientReferralAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yv1okN6jEee0kIKIEebuqA" base_Class="_yaJ3QAFAEeSaVZ5WxWd94w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultsSectionEntriesOptionalTemplateId ResultsSectionEntriesOptionalCode ResultsSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.3' templateId.extension='2015-08-01' constraints.validation.dependOn.ResultsSectionEntriesOptionalCode='ResultsSectionEntriesOptionalCodeP' constraints.validation.warning='ResultsSectionEntriesOptionalResultOrganizer'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_ywiMIN6jEee0kIKIEebuqA" base_Class="_wLWZMAFHEeSG_MJH-zNFRw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SocialHistorySectionTemplateId SocialHistorySectionCode SocialHistorySectionCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.17' templateId.extension='2015-08-01' constraints.validation.dependOn.SocialHistorySectionCode='SocialHistorySectionCodeP' constraints.validation.info='SocialHistorySectionSocialHistoryObservation SocialHistorySectionTobaccoUse SocialHistorySection2CaregiverCharacteristics SocialHistorySection2CulturalAndReligiousObservation SocialHistorySection2CharacteristicsOfHomeEnvironment SocialHistorySection2BirthSexObservation' constraints.validation.warning='SocialHistorySectionSmokingStatusObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_yzv4MN6jEee0kIKIEebuqA" base_Class="_8LkzYAFTEeSmasYc71ZgMQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.4' templateId.extension='2015-08-01' constraints.validation.dependOn.VitalSignsSectionEntriesOptionalCode='VitalSignsSectionEntriesOptionalCodeP' constraints.validation.warning='VitalSignsSectionEntriesOptionalVitalSignsOrganizer'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y0gGIN6jEee0kIKIEebuqA" base_Class="_jsKhYAFXEeSLIY0bHb-fFQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectivesSectionEntriesOptionalTemplateId AdvanceDirectivesSectionEntriesOptionalCode AdvanceDirectivesSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.21' templateId.extension='2015-08-01' constraints.validation.dependOn.AdvanceDirectivesSectionEntriesOptionalCode='AdvanceDirectivesSectionEntriesOptionalCodeP' constraints.validation.info='AdvanceDirectivesSectionEntriesOptional2AdvanceDirectiveOrganizer AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y1PF8N6jEee0kIKIEebuqA" base_Class="_JUvaUAFaEeS0nNJt6oyOyQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionEntriesOptionalCode MedicationsSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.1' templateId.extension='2014-06-09' constraints.validation.info='MedicationsSectionEntriesOptionalAbsenceOfMedications' constraints.validation.dependOn.MedicationsSectionEntriesOptionalCode='MedicationsSectionEntriesOptionalCodeP' constraints.validation.warning='MedicationsSectionEntriesOptionalMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y2C-QN6jEee0kIKIEebuqA" base_Class="_ZgLioAFkEeSJ2uHfynwxCw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemSectionEntriesOptionalTemplateId ProblemSectionEntriesOptionalCode ProblemSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.5' templateId.extension='2015-08-01' constraints.validation.dependOn.ProblemSectionEntriesOptionalCode='ProblemSectionEntriesOptionalCodeP' constraints.validation.warning='ProblemSectionEntriesOptionalProblemConcern' constraints.validation.info='ProblemSectionEntriesOptional2HealthStatusObservation2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y3P4IN6jEee0kIKIEebuqA" base_Class="_ZFbCkAIPEeS-F85KYVlDyA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectivesSectionEntriesOptionalTemplateId AdvanceDirectivesSection2HasAdvanceDirectiveObservation2XorAdvanceDirectiveOrganizer AdvanceDirectivesSectionEntriesOptionalCode AdvanceDirectivesSectionEntriesOptionalCodeP AdvanceDirectivesSection2Title AdvanceDirectivesSection2Text AdvanceDirectivesSectionEntriesOptional2AdvanceDirectiveOrganizer AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation AdvanceDirectivesSection2Entry' templateId.root='2.16.840.1.113883.10.20.22.2.21.1' templateId.extension='2015-08-01' constraints.validation.dependOn.AdvanceDirectivesSectionEntriesOptionalCode='AdvanceDirectivesSectionEntriesOptionalCodeP' nullFlavor='NI' constraints.validation.info='AdvanceDirectivesSection2NullFlavor AdvanceDirectivesSection2EntryAdvanceDirectiveOrganizer AdvanceDirectivesSection2EntryAdvanceDirectiveObservation2' constraints.validation.query='AdvanceDirectivesSection2EntryAdvanceDirectiveOrganizer AdvanceDirectivesSection2EntryAdvanceDirectiveObservation2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAdvanceDirectivesSection2Entry constraints.validation.info='AdvanceDirectivesSection2EntryAdvanceDirectiveOrganizer AdvanceDirectivesSection2EntryAdvanceDirectiveObservation2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y4PWoN6jEee0kIKIEebuqA" base_Class="_nWAcMAIjEeSVzfoPSatgpg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergiesSectionEntriesOptionalTemplateId AllergiesSectionEntriesOptionalCode AllergiesSectionEntriesOptionalCodeP' templateId.root='2.16.840.1.113883.10.20.22.2.6' templateId.extension='2015-08-01' constraints.validation.dependOn.AllergiesSectionEntriesOptionalCode='AllergiesSectionEntriesOptionalCodeP' constraints.validation.warning='AllergiesSectionEntriesOptionalAllergyProblemAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y43owN6jEee0kIKIEebuqA" base_Class="_EONPMAInEeSr1aKUYorURA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergiesSectionEntriesOptionalTemplateId AllergiesSectionEntriesOptionalCode AllergiesSectionEntriesOptionalCodeP AllergiesSection2Title AllergiesSection2Text AllergiesSectionEntriesOptionalAllergyProblemAct' templateId.root='2.16.840.1.113883.10.20.22.2.6.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='AllergiesSection2NullFlavor' constraints.validation.dependOn.AllergiesSectionEntriesOptionalCode='AllergiesSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y5ukYN6jEee0kIKIEebuqA" base_Class="_ogD-EAIvEeScubSeRE1upQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncountersSectionEntriesOptionalTemplateId EncountersSectionEntriesOptionalCode EncountersSectionEntriesOptionalCodeP EncountersSection2Text EncountersSection2Title EncountersSectionEntriesOptionalEncounterActivities' templateId.root='2.16.840.1.113883.10.20.22.2.22.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='EncountersSection2NullFlavor' constraints.validation.dependOn.EncountersSectionEntriesOptionalCode='EncountersSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y6mHEN6jEee0kIKIEebuqA" base_Class="_Jt0moAI0EeSRkrs1G7P_XQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalDischargeMedicationsSectionEntriesOptionalTemplateId DischargeMedicationsSection2Code DischargeMedicationsSection2CodeP DischargeMedicationsSection2Title DischargeMedicationsSection2Text HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication DischargeMedicationsSection2CETranslation DischargeMedicationsSection2CETranslationP' templateId.root='2.16.840.1.113883.10.20.22.2.11.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='DischargeMedicationsSection2NullFlavor' code.code='10183-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Discharge Medications' constraints.validation.dependOn.DischargeMedicationsSection2Code='DischargeMedicationsSection2CodeP' constraints.validation.query='DischargeMedicationsSection2CETranslation DischargeMedicationsSection2CETranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeMedicationsSection2CE translation.code='75311-1' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Discharge Medications' constraints.validation.error='DischargeMedicationsSection2CETranslation DischargeMedicationsSection2CETranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y7k-gN6jEee0kIKIEebuqA" base_Class="_14bikALNEeSIPYXg7AgJzw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationsSectionEntriesOptionalTemplateId ImmunizationsSectionEntriesOptionalCode ImmunizationsSectionEntriesOptionalCodeP ImmunizationsSection2Title ImmunizationsSection2Text ImmunizationsSectionEntriesOptionalImmunizationActivity' templateId.root='2.16.840.1.113883.10.20.22.2.2.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='ImmunizationsSection2NullFlavor' constraints.validation.dependOn.ImmunizationsSectionEntriesOptionalCode='ImmunizationsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y8dIQN6jEee0kIKIEebuqA" base_Class="_P2mp4ALQEeS0YMHMf4rRtQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionEntriesOptionalCode MedicationsSectionEntriesOptionalCodeP MedicationsSection2Title MedicationsSection2Text MedicationsSectionEntriesOptionalMedicationActivity' templateId.root='2.16.840.1.113883.10.20.22.2.1.1' templateId.extension='2014-06-09' nullFlavor='NI' constraints.validation.info='MedicationsSection2NullFlavor' constraints.validation.dependOn.MedicationsSectionEntriesOptionalCode='MedicationsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y9Uq8N6jEee0kIKIEebuqA" base_Class="_IXrA4ALVEeSyydFGYJajGA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemSectionEntriesOptionalTemplateId ProblemSectionEntriesOptionalCode ProblemSectionEntriesOptionalCodeP ProblemSection2Title ProblemSection2Text ProblemSectionEntriesOptionalProblemConcern' templateId.root='2.16.840.1.113883.10.20.22.2.5.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='ProblemSection2NullFlavor ProblemSectionEntriesOptional2HealthStatusObservation2' constraints.validation.dependOn.ProblemSectionEntriesOptionalCode='ProblemSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_y-sj8N6jEee0kIKIEebuqA" base_Class="_N6wUUALoEeSBA9s7kRnaEg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProceduresSectionEntriesOptionalTemplateId ProceduresSection2HasProcedureActivity ProceduresSectionEntriesOptionalCode ProceduresSectionEntriesOptionalCodeP ProceduresSection2Title ProceduresSection2Text ProceduresSectionEntriesOptionalProcedureActivityProcedure ProceduresSectionEntriesOptionalProcedureActivityObservation ProceduresSectionEntriesOptionalProcedureActivityAct ProceduresSection2Entry' templateId.root='2.16.840.1.113883.10.20.22.2.7.1' templateId.extension='2014-06-09' nullFlavor='NI' constraints.validation.info='ProceduresSection2NullFlavor ProceduresSection2EntryProcedureActivityAct2 ProceduresSection2EntryProcedureActivityObservation2 ProceduresSection2EntryProcedureActivityProcedure2' constraints.validation.dependOn.ProceduresSectionEntriesOptionalCode='ProceduresSectionEntriesOptionalCodeP' constraints.validation.query='ProceduresSection2EntryProcedureActivityAct2 ProceduresSection2EntryProcedureActivityObservation2 ProceduresSection2EntryProcedureActivityProcedure2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProceduresSection2Entry constraints.validation.info='ProceduresSection2EntryProcedureActivityAct2 ProceduresSection2EntryProcedureActivityObservation2 ProceduresSection2EntryProcedureActivityProcedure2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_zAhv8N6jEee0kIKIEebuqA" base_Class="_bAAhEALtEeSueJWOLw5iaQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultsSectionEntriesOptionalTemplateId ResultsSectionEntriesOptionalCode ResultsSectionEntriesOptionalCodeP ResultsSection2Title ResultsSection2Text ResultsSectionEntriesOptionalResultOrganizer' templateId.root='2.16.840.1.113883.10.20.22.2.3.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='ResultsSection2NullFlavor' constraints.validation.dependOn.ResultsSectionEntriesOptionalCode='ResultsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_zBcV8N6jEee0kIKIEebuqA" base_Class="_D3010ALzEeSM0Jd2D1FgKw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionEntriesOptionalCodeP VitalSignsSection2Title VitalSignsSection2Text VitalSignsSectionEntriesOptionalVitalSignsOrganizer' templateId.root='2.16.840.1.113883.10.20.22.2.4.1' templateId.extension='2015-08-01' nullFlavor='NI' constraints.validation.info='VitalSignsSection2NullFlavor' constraints.validation.dependOn.VitalSignsSectionEntriesOptionalCode='VitalSignsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_zLGoQN6jEee0kIKIEebuqA" base_Class="_PkP3oCFmEeSt4IEYu7xgbw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ConsultationNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent ConsultationNote2DoesNotHaveChiefComplaintWithChiefComplaintOrReasonForVisitSection ConsultationNote2HasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ConsultationNote2Code ConsultationNote2CodeP ConsultationNote2InFulfillmentOf ConsultationNote2ComponentOf ConsultationNote2HistoryOfPresentIllnessSection ConsultationNote2AllergiesSection2 ConsultationNote2ProblemSection2 ConsultationNote2ParticipantAssociatedEntityAssociatedPersonName ConsultationNote2ParticipantAssociatedEntityClassCode ConsultationNote2ParticipantAssociatedEntityId ConsultationNote2ParticipantAssociatedEntityTelecom ConsultationNote2ParticipantAssociatedEntityAssociatedPerson ConsultationNote2ParticipantTypeCode ConsultationNote2ParticipantAssociatedEntity ConsultationNote2InFulfillmentOfOrderId ConsultationNote2InFulfillmentOfOrder ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity ConsultationNote2ComponentOfEncompassingEncounterId ConsultationNote2ComponentOfEncompassingEncounterEffectiveTime ConsultationNote2ComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.4' templateId.extension='2015-08-01' constraints.validation.info='ConsultationNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 ConsultationNote2AssessmentSection ConsultationNote2AssessmentAndPlanSection2 ConsultationNote2PlanOfTreatmentSection2 ConsultationNote2ReasonForVisitSection ConsultationNote2ChiefComplaintSection ConsultationNote2ChiefComplaintAndReasonForVisitSection ConsultationNote2GeneralStatusSection ConsultationNote2HistoryOfPastIllnessSection2 ConsultationNote2ImmunizationsSectionEntriesOptional2 ConsultationNote2ProceduresSectionEntriesOptional2 ConsultationNote2SocialHistorySection2 ConsultationNote2VitalSignsSection2 ConsultationNote2AdvanceDirectivesSectionEntriesOptional2 ConsultationNote2FunctionalStatusSection2 ConsultationNote2ReviewOfSystemsSection ConsultationNote2MedicalEquipmentSection2 ConsultationNote2MentalStatusSection ConsultationNote2NutritionSection ConsultationNote2FamilyHistorySection2 ConsultationNote2ParticipantAssociatedEntityScopingOrganization ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS ConsultationNote2ComponentOfEncompassingEncounterResponsibleParty ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipant' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ConsultationNote2Code='ConsultationNote2CodeP' constraints.validation.warning='ConsultationNote2Participant ConsultationNote2PhysicalExamSection2 ConsultationNote2MedicationsSection2 ConsultationNote2ResultsSection2 ConsultationNote2ParticipantAssociatedEntityAddr ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.query='ConsultationNote2ParticipantAssociatedEntityAssociatedPersonName ConsultationNote2ParticipantAssociatedEntityClassCode ConsultationNote2ParticipantAssociatedEntityId ConsultationNote2ParticipantAssociatedEntityAddr ConsultationNote2ParticipantAssociatedEntityTelecom ConsultationNote2ParticipantAssociatedEntityAssociatedPerson ConsultationNote2ParticipantAssociatedEntityScopingOrganization ConsultationNote2ParticipantTypeCode ConsultationNote2ParticipantAssociatedEntity ConsultationNote2InFulfillmentOfOrderId ConsultationNote2InFulfillmentOfOrder ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS ConsultationNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity ConsultationNote2ComponentOfEncompassingEncounterId ConsultationNote2ComponentOfEncompassingEncounterEffectiveTime ConsultationNote2ComponentOfEncompassingEncounterResponsibleParty ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipant ConsultationNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2Participant typeCode='CALLBCK' constraints.validation.error='ConsultationNote2ParticipantTypeCode ConsultationNote2ParticipantAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ParticipantAssociatedEntity classCode='ASSIGNED' constraints.validation.error='ConsultationNote2ParticipantAssociatedEntityClassCode ConsultationNote2ParticipantAssociatedEntityId ConsultationNote2ParticipantAssociatedEntityTelecom ConsultationNote2ParticipantAssociatedEntityAssociatedPerson' constraints.validation.warning='ConsultationNote2ParticipantAssociatedEntityAddr' constraints.validation.info='ConsultationNote2ParticipantAssociatedEntityScopingOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ParticipantAssociatedEntityAssociatedPerson constraints.validation.error='ConsultationNote2ParticipantAssociatedEntityAssociatedPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2InFulfillmentOf constraints.validation.error='ConsultationNote2InFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2InFulfillmentOfOrder constraints.validation.error='ConsultationNote2InFulfillmentOfOrderId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ComponentOf constraints.validation.error='ConsultationNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ComponentOfEncompassingEncounter constraints.validation.error='ConsultationNote2ComponentOfEncompassingEncounterId ConsultationNote2ComponentOfEncompassingEncounterEffectiveTime EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS' constraints.validation.info='ConsultationNote2ComponentOfEncompassingEncounterResponsibleParty ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipant EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS' constraints.validation.query='EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.warning='EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ComponentOfEncompassingEncounterResponsibleParty constraints.validation.error='ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolConsultationNote2ComponentOfEncompassingEncounterEncounterParticipant constraints.validation.error='ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_zbcKUN6jEee0kIKIEebuqA" base_Class="_lPMNYCGjEeSt4IEYu7xgbw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ContinuityOfCareDocument2Code ContinuityOfCareDocument2CodeP ContinuityOfCareDocument2Author ContinuityOfCareDocument2DocumentationOf ContinuityOfCareDocument2AllergiesSection2 ContinuityOfCareDocument2MedicationsSection2 ContinuityOfCareDocument2ProblemSection2 ContinuityOfCareDocument2ResultsSection2 ContinuityOfCareDocument2SocialHistorySection2 ContinuityOfCareDocument2VitalSignsSection2 ContinuityOfCareDocument2AuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocument2AuthorAssignedAuthorHasRepresentOrganization ContinuityOfCareDocument2AuthorAssignedAuthor ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode ContinuityOfCareDocument2DocumentationOfServiceEventClassCode ContinuityOfCareDocument2DocumentationOfServiceEventEffectiveTime ContinuityOfCareDocument2DocumentationOfServiceEvent' templateId.root='2.16.840.1.113883.10.20.22.1.2' templateId.extension='2015-08-01' code.code='34133-9' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Summarization of Episode Note' constraints.validation.dependOn.ContinuityOfCareDocument2Code='ContinuityOfCareDocument2CodeP' constraints.validation.warning='ContinuityOfCareDocument2ProceduresSection2 ContinuityOfCareDocument2PlanOfTreatmentSection2 ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocument2DocumentationOfServiceEventPerformer' constraints.validation.info='ContinuityOfCareDocument2AdvanceDirectivesSectionEntriesOptional2 ContinuityOfCareDocument2EncountersSectionEntriesOptional2 ContinuityOfCareDocument2FunctionalStatusSection2 ContinuityOfCareDocument2ImmunizationsSection2 ContinuityOfCareDocument2MedicalEquipmentSection2 ContinuityOfCareDocument2PayersSection2 ContinuityOfCareDocument2MentalStatusSection ContinuityOfCareDocument2NutritionSection ContinuityOfCareDocument2FamilyHistorySection2 ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity' constraints.validation.query='ContinuityOfCareDocument2AuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocument2AuthorAssignedAuthorHasRepresentOrganization ContinuityOfCareDocument2AuthorAssignedAuthor ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity ContinuityOfCareDocument2DocumentationOfServiceEventClassCode ContinuityOfCareDocument2DocumentationOfServiceEventEffectiveTime ContinuityOfCareDocument2DocumentationOfServiceEventPerformer ContinuityOfCareDocument2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2Author constraints.validation.error='ContinuityOfCareDocument2AuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2AuthorAssignedAuthor constraints.validation.error='ContinuityOfCareDocument2AuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization ContinuityOfCareDocument2AuthorAssignedAuthorHasRepresentOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2DocumentationOf constraints.validation.error='ContinuityOfCareDocument2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2DocumentationOfServiceEvent classCode='PCPR' constraints.validation.error='ContinuityOfCareDocument2DocumentationOfServiceEventClassCode ContinuityOfCareDocument2DocumentationOfServiceEventEffectiveTime ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode' constraints.validation.warning='ContinuityOfCareDocument2DocumentationOfServiceEventPerformer ServiceEventPerformerContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier' constraints.validation.query='ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh ServiceEventPerformerContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId ServiceEventPerformerContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode ServiceEventContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity' constraints.validation.info='ServiceEventPerformerContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson ServiceEventContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2DocumentationOfServiceEventIVLTS constraints.validation.error='ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSLow ContinuityOfCareDocument2DocumentationOfServiceEventIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2DocumentationOfServiceEventPerformer typeCode='PRF' constraints.validation.error='ContinuityOfCareDocument2DocumentationOfServiceEventPerformerTypeCode' constraints.validation.info='ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntity constraints.validation.warning='ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier' constraints.validation.error='ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityId' constraints.validation.info='ContinuityOfCareDocument2DocumentationOfServiceEventPerformerAssignedEntityAssignedPerson'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_zlHDsN6jEee0kIKIEebuqA" base_Class="_4JRRsCJnEeSBLYc2hU6GfA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId DiagnosticImagingReport2Id DiagnosticImagingReport2CodeP DiagnosticImagingReport2DocumentationOf DiagnosticImagingReport2FindingsSection DiagnosticImagingReport2Component2 DiagnosticImagingReport2Informant DiagnosticImagingReport2IIRootOIDsMustBeNoMoreThan64Characters DiagnosticImagingReport2IIRoot DiagnosticImagingReport2ParticipantAssociatedEntityPersonName DiagnosticImagingReport2ParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReport2ParticipantAssociatedEntity DiagnosticImagingReport2InFulfillmentOfOrderId DiagnosticImagingReport2InFulfillmentOfOrder DiagnosticImagingReport2DocumentationOfServiceEventClassCode DiagnosticImagingReport2DocumentationOfServiceEventCode DiagnosticImagingReport2DocumentationOfServiceEvent DiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength DiagnosticImagingReport2RelatedDocumentParentDocumentId DiagnosticImagingReport2RelatedDocumentParentDocument DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity DiagnosticImagingReport2ComponentOfEncompassingEncounterId DiagnosticImagingReport2ComponentOfEncompassingEncounterEffectiveTime DiagnosticImagingReport2ComponentOfEncompassingEncounter DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubjectFetusSubjectContext DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSectionsHaveText DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeP DiagnosticImagingReport2ComponentStructuredBodyComponent3Section DiagnosticImagingReport2ComponentStructuredBody' templateId.root='2.16.840.1.113883.10.20.22.1.5' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.warning='DiagnosticImagingReport2Code DiagnosticImagingReport2DICOMObjectCatalogSection DiagnosticImagingReport2DocumentationOfServiceEventId DiagnosticImagingReport2DocumentationOfServiceEventPhysicianReadingStudyPerformer2 DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization DiagnosticImagingReport2ComponentOfEncompassingEncounterPhysicianofRecordParticipant2 DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCode DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTitle DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionText' constraints.validation.dependOn.DiagnosticImagingReport2Code='DiagnosticImagingReport2CodeP' constraints.validation.info='DiagnosticImagingReport2InformationRecipient DiagnosticImagingReport2Participant DiagnosticImagingReport2InFulfillmentOf DiagnosticImagingReport2RelatedDocument DiagnosticImagingReport2ComponentOf DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsibleParty DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubject DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionAuthor DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionProcedureContext DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTextObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeObservations DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionQuantityMeasurementObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSOPInstanceObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3' constraints.validation.query='DiagnosticImagingReport2IIRootOIDsMustBeNoMoreThan64Characters DiagnosticImagingReport2IIRoot DiagnosticImagingReport2ParticipantAssociatedEntityPersonName DiagnosticImagingReport2ParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReport2ParticipantAssociatedEntity DiagnosticImagingReport2InFulfillmentOfOrderId DiagnosticImagingReport2InFulfillmentOfOrder DiagnosticImagingReport2DocumentationOfServiceEventClassCode DiagnosticImagingReport2DocumentationOfServiceEventId DiagnosticImagingReport2DocumentationOfServiceEventCode DiagnosticImagingReport2DocumentationOfServiceEventPhysicianReadingStudyPerformer2 DiagnosticImagingReport2DocumentationOfServiceEvent DiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength DiagnosticImagingReport2RelatedDocumentParentDocumentId DiagnosticImagingReport2RelatedDocumentParentDocument DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity DiagnosticImagingReport2ComponentOfEncompassingEncounterId DiagnosticImagingReport2ComponentOfEncompassingEncounterEffectiveTime DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsibleParty DiagnosticImagingReport2ComponentOfEncompassingEncounterPhysicianofRecordParticipant2 DiagnosticImagingReport2ComponentOfEncompassingEncounter DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubjectFetusSubjectContext DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSectionsHaveText DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCode DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeP DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTitle DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionText DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubject DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionAuthor DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionProcedureContext DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTextObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeObservations DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionQuantityMeasurementObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSOPInstanceObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3Section DiagnosticImagingReport2ComponentStructuredBodyComponent3 DiagnosticImagingReport2ComponentStructuredBody'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2II constraints.validation.error='DiagnosticImagingReport2IIRootOIDsMustBeNoMoreThan64Characters DiagnosticImagingReport2IIRoot'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2Participant constraints.validation.error='DiagnosticImagingReport2ParticipantAssociatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ParticipantAssociatedEntity constraints.validation.error='DiagnosticImagingReport2ParticipantAssociatedEntityAssociatedPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ParticipantAssociatedEntityPerson constraints.validation.error='DiagnosticImagingReport2ParticipantAssociatedEntityPersonName'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2InFulfillmentOf constraints.validation.error='DiagnosticImagingReport2InFulfillmentOfOrder'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2InFulfillmentOfOrder constraints.validation.error='DiagnosticImagingReport2InFulfillmentOfOrderId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2DocumentationOf constraints.validation.error='DiagnosticImagingReport2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2DocumentationOfServiceEvent classCode='ACT' constraints.validation.error='DiagnosticImagingReport2DocumentationOfServiceEventClassCode DiagnosticImagingReport2DocumentationOfServiceEventCode' constraints.validation.warning='DiagnosticImagingReport2DocumentationOfServiceEventId DiagnosticImagingReport2DocumentationOfServiceEventPhysicianReadingStudyPerformer2'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2RelatedDocument constraints.validation.error='DiagnosticImagingReport2RelatedDocumentParentDocument'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2RelatedDocumentParentDocument constraints.validation.error='DiagnosticImagingReport2RelatedDocumentParentDocumentId ParentDocumentDiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength' constraints.validation.query='ParentDocumentDiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2RelatedDocumentParentDocumentII constraints.validation.error='DiagnosticImagingReport2RelatedDocumentParentDocumentIIOidsLength'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentOf constraints.validation.error='DiagnosticImagingReport2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentOfEncompassingEncounter constraints.validation.error='DiagnosticImagingReport2ComponentOfEncompassingEncounterId DiagnosticImagingReport2ComponentOfEncompassingEncounterEffectiveTime EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS' constraints.validation.info='DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsibleParty EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS' constraints.validation.warning='DiagnosticImagingReport2ComponentOfEncompassingEncounterPhysicianofRecordParticipant2 EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.query='EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentOfEncompassingEncounterResponsibleParty constraints.validation.error='DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity constraints.validation.warning='DiagnosticImagingReport2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2Component constraints.validation.error='DiagnosticImagingReport2ComponentStructuredBody'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentStructuredBody constraints.validation.info='DiagnosticImagingReport2ComponentStructuredBodyComponent3'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentStructuredBodyComponent3 constraints.validation.error='DiagnosticImagingReport2ComponentStructuredBodyComponent3Section'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentStructuredBodyComponent3Section constraints.validation.error='DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSectionsHaveText DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeP' code.codeSystem='1.2.840.10008.2.16.4' code.codeSystemName='DCM' constraints.validation.warning='DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCode DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTitle DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionText' constraints.validation.info='DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubject DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionAuthor DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionProcedureContext DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionTextObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionCodeObservations DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionQuantityMeasurementObservation DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSOPInstanceObservation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubject constraints.validation.error='DiagnosticImagingReport2ComponentStructuredBodyComponent3SectionSubjectFetusSubjectContext'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_z6DY8N6jEee0kIKIEebuqA" base_Class="_89EzQCP5EeS4d9o7u1_H3A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId DischargeSummary2DoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection DischargeSummary2Code DischargeSummary2CodeP DischargeSummary2ComponentOf DischargeSummary2AllergiesSectionEntriesOptional2 DischargeSummary2HospitalCourseSection DischargeSummary2PlanOfTreatmentSection2 DischargeSummary2DischargeDiagnosisSection2 DischargeSummary2ParticipantIfParTypeCodeINDThenAEClassCodeIND DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity DischargeSummary2ComponentOfEncompassingEncounterEffectiveTime DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCodeP DischargeSummary2ComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.8' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.DischargeSummary2Code='DischargeSummary2CodeP' constraints.validation.info='DischargeSummary2Participant DischargeSummary2ChiefComplaintSection DischargeSummary2ChiefComplaintAndReasonForVisitSection DischargeSummary2NutritionSection DischargeSummary2FunctionalStatusSection2 DischargeSummary2HistoryOfPastIllnessSection2 DischargeSummary2HistoryOfPresentIllnessSection DischargeSummary2HospitalConsultationsSection DischargeSummary2HospitalDischargeInstructionsSection DischargeSummary2HospitalDischargePhysicalSection DischargeSummary2HospitalDischargeStudiesSummarySection DischargeSummary2ImmunizationsSectionEntriesOptional2 DischargeSummary2ProblemSectionEntriesOptional2 DischargeSummary2ProceduresSectionEntriesOptional2 DischargeSummary2ReasonForVisitSection DischargeSummary2ReviewOfSystemsSection DischargeSummary2SocialHistorySection2 DischargeSummary2VitalSignsSectionEntriesOptional2 DischargeSummary2FamilyHistorySection2 DischargeSummary2AdmissionDiagnosisSection2 DischargeSummary2AdmissionMedicationsSectionEntriesOptional2 DischargeSummary2DischargeMedicationsSection2 DischargeSummary2DischargeDietSection DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipant DischargeSummary2ComponentOfEncompassingEncounterResponsibleParty' constraints.validation.warning='DischargeSummary2DischargeMedicationsSectionEntriesOptional2 DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityRepresentedOrganization DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityRepresentedOrganization DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCode' constraints.validation.query='DischargeSummary2ParticipantIfParTypeCodeINDThenAEClassCodeIND DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityRepresentedOrganization DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityRepresentedOrganization DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity DischargeSummary2ComponentOfEncompassingEncounterEffectiveTime DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCode DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCodeP DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipant DischargeSummary2ComponentOfEncompassingEncounterResponsibleParty DischargeSummary2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2Participant constraints.validation.error='DischargeSummary2ParticipantIfParTypeCodeINDThenAEClassCodeIND'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOf constraints.validation.error='DischargeSummary2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounter constraints.validation.error='DischargeSummary2ComponentOfEncompassingEncounterEffectiveTime DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCodeP DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh' dischargeDispositionCode.codeSystem='2.16.840.1.113883.6.301.5' dischargeDispositionCode.codeSystemName='NUBC UB-04 FL17-Patient Status' constraints.validation.warning='DischargeSummary2ComponentOfEncompassingEncounterDischargeDispositionCode' constraints.validation.info='DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipant DischargeSummary2ComponentOfEncompassingEncounterResponsibleParty' constraints.validation.query='DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounterIVLTS constraints.validation.error='DischargeSummary2ComponentOfEncompassingEncounterIVLTSLow DischargeSummary2ComponentOfEncompassingEncounterIVLTSHigh'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounterEncounterParticipant constraints.validation.error='DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity constraints.validation.warning='DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityRepresentedOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounterResponsibleParty constraints.validation.error='DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolDischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity constraints.validation.warning='DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityAssignedPerson DischargeSummary2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityRepresentedOrganization'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_0Jh_YN6jEee0kIKIEebuqA" base_Class="_4mLhsCluEeSoCqqrpX8LzQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId HistoryAndPhysicalNote2HasChiefComplaintAndReasonForVisitChiefComplaintOrReasonForVisit HistoryAndPhysicalNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 HistoryAndPhysicalNote2DoesNotHaveAssementAndPlanSection2WhenAssementAndPlanOfTreatment2ArePresent HistoryAndPhysicalNote2DoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection HistoryAndPhysicalNote2Code HistoryAndPhysicalNote2CodeP HistoryAndPhysicalNote2ComponentOf HistoryAndPhysicalNote2AllergiesSectionEntriesOptional2 HistoryAndPhysicalNote2GeneralStatusSection HistoryAndPhysicalNote2HistoryOfPastIllnessSection2 HistoryAndPhysicalNote2MedicationsSectionEntriesOptional2 HistoryAndPhysicalNote2PhysicalExamSection2 HistoryAndPhysicalNote2ResultsSectionEntriesOptional2 HistoryAndPhysicalNote2ReviewOfSystemsSection HistoryAndPhysicalNote2SocialHistorySection2 HistoryAndPhysicalNote2VitalSignsSectionEntriesOptional2 HistoryAndPhysicalNote2FamilyHistorySection2 HistoryAndPhysicalNote2InformationRecipientIntendedRecipient HistoryAndPhysicalNote2ParticipantIfParTypeCodeINDThenAEClassCodeIND HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity HistoryAndPhysicalNote2ComponentOfEncompassingEncounterId HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEffectiveTime HistoryAndPhysicalNote2ComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.3' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.HistoryAndPhysicalNote2Code='HistoryAndPhysicalNote2CodeP' constraints.validation.info='HistoryAndPhysicalNote2InformationRecipient HistoryAndPhysicalNote2Participant HistoryAndPhysicalNote2InFulfillmentOf HistoryAndPhysicalNote2AssessmentSection HistoryAndPhysicalNote2PlanOfTreatmentSection2 HistoryAndPhysicalNote2AssessmentAndPlanSection2 HistoryAndPhysicalNote2ChiefComplaintSection HistoryAndPhysicalNote2ChiefComplaintAndReasonForVisitSection HistoryAndPhysicalNote2ImmunizationsSectionEntriesOptional2 HistoryAndPhysicalNote2InstructionsSection2 HistoryAndPhysicalNote2ProblemSectionEntriesOptional2 HistoryAndPhysicalNote2ProceduresSectionEntriesOptional2 HistoryAndPhysicalNote2ReasonForVisitSection HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsibleParty HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipant HistoryAndPhysicalNote2ComponentOfEncompassingEncounterLocation' constraints.validation.warning='HistoryAndPhysicalNote2HistoryOfPresentIllnessSection HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.query='HistoryAndPhysicalNote2InformationRecipientIntendedRecipient HistoryAndPhysicalNote2ParticipantIfParTypeCodeINDThenAEClassCodeIND HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity HistoryAndPhysicalNote2ComponentOfEncompassingEncounterId HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEffectiveTime HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsibleParty HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipant HistoryAndPhysicalNote2ComponentOfEncompassingEncounterLocation HistoryAndPhysicalNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2InformationRecipient constraints.validation.error='HistoryAndPhysicalNote2InformationRecipientIntendedRecipient'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2Participant constraints.validation.error='HistoryAndPhysicalNote2ParticipantIfParTypeCodeINDThenAEClassCodeIND'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2ComponentOf constraints.validation.error='HistoryAndPhysicalNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2ComponentOfEncompassingEncounter constraints.validation.error='HistoryAndPhysicalNote2ComponentOfEncompassingEncounterId HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEffectiveTime EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS' constraints.validation.info='HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsibleParty HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipant HistoryAndPhysicalNote2ComponentOfEncompassingEncounterLocation EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS' constraints.validation.query='EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheDayIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheSecondIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS' constraints.validation.warning='EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTPreciseToTheMinuteIVLTS EncompassingEncounterGeneralHeaderConstraintsUSRealmDateAndTimeDTIfMorePreciseThanDayIncludeTimeZoneOffsetIVLTS'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsibleParty constraints.validation.error='HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterResponsiblePartyAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolHistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipant constraints.validation.error='HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNote2ComponentOfEncompassingEncounterEncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_0aUNYN6jEee0kIKIEebuqA" base_Class="_aH1CYC1fEeSoCqqrpX8LzQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId OperativeNote2Code OperativeNote2CodeP OperativeNote2DocumentationOf OperativeNote2AnesthesiaSection2 OperativeNote2ComplicationsSection2 OperativeNote2PreoperativeDiagnosisSection2 OperativeNote2ProcedureEstimatedBloodLossSection OperativeNote2ProcedureFindingsSection2 OperativeNote2ProcedureSpecimensTakenSection OperativeNote2ProcedureDescriptionSection OperativeNote2PostoperativeDiagnosisSection OperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntity OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity OperativeNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNote2DocumentationOfServiceEventProcedureCodes OperativeNote2DocumentationOfServiceEventEffectiveTime OperativeNote2DocumentationOfServiceEventCode OperativeNote2DocumentationOfServiceEventPerformer OperativeNote2DocumentationOfServiceEvent OperativeNote2AuthorizationConsentClassCode OperativeNote2AuthorizationConsentMoodCode OperativeNote2AuthorizationConsentStatusCode OperativeNote2AuthorizationTypeCode OperativeNote2AuthorizationConsent' templateId.root='2.16.840.1.113883.10.20.22.1.7' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.OperativeNote2Code='OperativeNote2CodeP' constraints.validation.info='OperativeNote2Authorization OperativeNote2ProcedureImplantsSection OperativeNote2OperativeNoteFluidSection OperativeNote2OperativeNoteSurgicalProcedureSection OperativeNote2PlanOfTreatmentSection2 OperativeNote2PlannedProcedureSection2 OperativeNote2ProcedureDispositionSection OperativeNote2ProcedureIndicationsSection2 OperativeNote2SurgicalDrainsSection OperativeNote2DocumentationOfServiceEventPerformerAssistants' constraints.validation.query='OperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntity OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity OperativeNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNote2DocumentationOfServiceEventProcedureCodes OperativeNote2DocumentationOfServiceEventEffectiveTime OperativeNote2DocumentationOfServiceEventCode OperativeNote2DocumentationOfServiceEventPerformer OperativeNote2DocumentationOfServiceEventPerformerAssistants OperativeNote2DocumentationOfServiceEvent OperativeNote2AuthorizationConsentClassCode OperativeNote2AuthorizationConsentMoodCode OperativeNote2AuthorizationConsentStatusCode OperativeNote2AuthorizationTypeCode OperativeNote2AuthorizationConsent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOf constraints.validation.error='OperativeNote2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEvent constraints.validation.error='OperativeNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNote2DocumentationOfServiceEventProcedureCodes OperativeNote2DocumentationOfServiceEventEffectiveTime OperativeNote2DocumentationOfServiceEventCode OperativeNote2DocumentationOfServiceEventPerformer ServiceEventOperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerTypeCode ServiceEventOperativeNote2DocumentationOfServiceEventPerformerAssignedEntity OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ServiceEventOperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity' constraints.validation.info='OperativeNote2DocumentationOfServiceEventPerformerAssistants' constraints.validation.query='ServiceEventOperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerTypeCode ServiceEventOperativeNote2DocumentationOfServiceEventPerformerAssignedEntity OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ServiceEventOperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEventPerformer typeCode='PPRF' constraints.validation.error='OperativeNote2DocumentationOfServiceEventPerformerTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEventPerformerAssignedEntity code.codeSystem='2.16.840.1.113883.12.443' code.codeSystemName='Provider Role (HL7)' constraints.validation.error='OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDT constraints.validation.error='OperativeNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEventPerformerAssistants typeCode='SPRF' constraints.validation.error='OperativeNote2DocumentationOfServiceEventPerformerAssistantsTypeCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity code.codeSystem='2.16.840.1.113883.12.443' code.codeSystemName='Provider Role (HL7)' constraints.validation.error='OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode OperativeNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2Authorization typeCode='AUTH' constraints.validation.error='OperativeNote2AuthorizationTypeCode OperativeNote2AuthorizationConsent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolOperativeNote2AuthorizationConsent classCode='CONS' constraints.validation.error='OperativeNote2AuthorizationConsentClassCode OperativeNote2AuthorizationConsentMoodCode OperativeNote2AuthorizationConsentStatusCode' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_0pSdgN6jEee0kIKIEebuqA" base_Class="_JD8b0C4pEeSoCqqrpX8LzQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ProcedureNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 ProcedureNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent ProcedureNote2DoesNotHaveChiefComplaintWithChiefComplaintOrReasonForVisitSection ProcedureNote2Code ProcedureNote2CodeP ProcedureNote2DocumentationOf ProcedureNote2ComplicationsSection2 ProcedureNote2ProcedureDescriptionSection ProcedureNote2ProcedureIndicationsSection2 ProcedureNote2PostprocedureDiagnosisSection2 ProcedureNote2ParticipantAssociatedEntityClassCode ProcedureNote2ParticipantAssociatedEntityAssociatedPerson ProcedureNote2ParticipantTypeCode ProcedureNote2ParticipantFunctionCode ProcedureNote2ParticipantFunctionCodeP ProcedureNote2ParticipantAssociatedEntity ProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity ProcedureNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProcedureNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth ProcedureNote2DocumentationOfServiceEventProcedureCodes ProcedureNote2DocumentationOfServiceEventEffectiveTime ProcedureNote2DocumentationOfServiceEventCode ProcedureNote2DocumentationOfServiceEventPerformer ProcedureNote2DocumentationOfServiceEvent ProcedureNote2AuthorizationConsentClassCode ProcedureNote2AuthorizationConsentMoodCode ProcedureNote2AuthorizationConsentStatusCode ProcedureNote2AuthorizationTypeCode ProcedureNote2AuthorizationConsent ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipantTypeCode ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacility ProcedureNote2ComponentOfEncompassingEncounterCode ProcedureNote2ComponentOfEncompassingEncounterLocation ProcedureNote2ComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.6' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ProcedureNote2Code='ProcedureNote2CodeP' constraints.validation.info='ProcedureNote2Participant ProcedureNote2Authorization ProcedureNote2AssessmentSection ProcedureNote2AssessmentAndPlanSection2 ProcedureNote2PlanOfTreatmentSection2 ProcedureNote2AllergiesSectionEntriesOptional2 ProcedureNote2AnesthesiaSection2 ProcedureNote2ChiefComplaintSection ProcedureNote2ChiefComplaintAndReasonForVisitSection ProcedureNote2FamilyHistorySection2 ProcedureNote2HistoryOfPastIllnessSection2 ProcedureNote2HistoryOfPresentIllnessSection ProcedureNote2MedicalHistorySection ProcedureNote2MedicationsSectionEntriesOptional2 ProcedureNote2MedicationsAdministeredSection2 ProcedureNote2PhysicalExamSection2 ProcedureNote2PlannedProcedureSection2 ProcedureNote2ProcedureDispositionSection ProcedureNote2ProcedureEstimatedBloodLossSection ProcedureNote2ProcedureFindingsSection2 ProcedureNote2ProcedureImplantsSection ProcedureNote2ProcedureSpecimensTakenSection ProcedureNote2ProceduresSectionEntriesOptional2 ProcedureNote2ReasonForVisitSection ProcedureNote2ReviewOfSystemsSection ProcedureNote2SocialHistorySection2 ProcedureNote2DocumentationOfServiceEventPerformerAssistants ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipant' constraints.validation.warning='ProcedureNote2ComponentOf ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP ProcedureNote2ComponentOfEncompassingEncounterId' constraints.validation.query='ProcedureNote2ParticipantAssociatedEntityClassCode ProcedureNote2ParticipantAssociatedEntityAssociatedPerson ProcedureNote2ParticipantTypeCode ProcedureNote2ParticipantFunctionCode ProcedureNote2ParticipantFunctionCodeP ProcedureNote2ParticipantAssociatedEntity ProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity ProcedureNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProcedureNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth ProcedureNote2DocumentationOfServiceEventProcedureCodes ProcedureNote2DocumentationOfServiceEventEffectiveTime ProcedureNote2DocumentationOfServiceEventCode ProcedureNote2DocumentationOfServiceEventPerformer ProcedureNote2DocumentationOfServiceEventPerformerAssistants ProcedureNote2DocumentationOfServiceEvent ProcedureNote2AuthorizationConsentClassCode ProcedureNote2AuthorizationConsentMoodCode ProcedureNote2AuthorizationConsentStatusCode ProcedureNote2AuthorizationTypeCode ProcedureNote2AuthorizationConsent ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipantTypeCode ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacility ProcedureNote2ComponentOfEncompassingEncounterId ProcedureNote2ComponentOfEncompassingEncounterCode ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipant ProcedureNote2ComponentOfEncompassingEncounterLocation ProcedureNote2ComponentOfEncompassingEncounter' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2Participant typeCode='IND' constraints.validation.error='ProcedureNote2ParticipantTypeCode ProcedureNote2ParticipantFunctionCode ProcedureNote2ParticipantFunctionCodeP ProcedureNote2ParticipantAssociatedEntity' functionCode.code='PCP' functionCode.codeSystem='2.16.840.1.113883.5.88' functionCode.codeSystemName='ParticipationFunction' functionCode.displayName='Primary Care Physician'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ParticipantAssociatedEntity classCode='PROV' constraints.validation.error='ProcedureNote2ParticipantAssociatedEntityClassCode ProcedureNote2ParticipantAssociatedEntityAssociatedPerson'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOf constraints.validation.error='ProcedureNote2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEvent constraints.validation.error='ProcedureNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProcedureNote2DocumentationOfServiceEventEffectiveTimeNoHighIfWidth ProcedureNote2DocumentationOfServiceEventProcedureCodes ProcedureNote2DocumentationOfServiceEventEffectiveTime ProcedureNote2DocumentationOfServiceEventCode ProcedureNote2DocumentationOfServiceEventPerformer ServiceEventProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerTypeCode ServiceEventProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ServiceEventProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity' constraints.validation.info='ProcedureNote2DocumentationOfServiceEventPerformerAssistants' constraints.validation.query='ServiceEventProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerTypeCode ServiceEventProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ServiceEventProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity' constraints.validation.warning='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEventPerformer typeCode='PPRF' constraints.validation.error='ProcedureNote2DocumentationOfServiceEventPerformerTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEventPerformerAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode' constraints.validation.warning='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDT constraints.validation.error='ProcedureNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEventPerformerAssistants typeCode='SPRF' constraints.validation.error='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsTypeCode ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntity code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.error='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode' constraints.validation.warning='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP' constraints.validation.dependOn.ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCode='ProcedureNote2DocumentationOfServiceEventPerformerAssistantsAssignedEntityCodeP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2Authorization typeCode='AUTH' constraints.validation.error='ProcedureNote2AuthorizationTypeCode ProcedureNote2AuthorizationConsent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2AuthorizationConsent classCode='CONS' constraints.validation.error='ProcedureNote2AuthorizationConsentClassCode ProcedureNote2AuthorizationConsentMoodCode ProcedureNote2AuthorizationConsentStatusCode' moodCode='EVN'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ComponentOf constraints.validation.error='ProcedureNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ComponentOfEncompassingEncounter constraints.validation.warning='ProcedureNote2ComponentOfEncompassingEncounterId' constraints.validation.error='ProcedureNote2ComponentOfEncompassingEncounterCode ProcedureNote2ComponentOfEncompassingEncounterLocation' constraints.validation.info='ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipant'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ComponentOfEncompassingEncounterEncounterParticipant typeCode='REF' constraints.validation.error='ProcedureNote2ComponentOfEncompassingEncounterEncounterParticipantTypeCode'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ComponentOfEncompassingEncounterLocation constraints.validation.error='ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacility'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacility constraints.validation.error='ProcedureNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1C_-AN6jEee0kIKIEebuqA" base_Class="_qVEVkC-aEeSoCqqrpX8LzQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId ProgressNote2HasAnAssementAndPlanSection2OrBothAssementSectionAndPlanOfTreatmentSection2 ProgressNote2DoesNotHaveAssementAndPlanSection2WhenAssementOrPlanOfTreatment2ArePresent ProgressNote2Code ProgressNote2CodeP ProgressNote2ComponentOf ProgressNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProgressNote2DocumentationOfServiceEventTemplateId ProgressNote2DocumentationOfServiceEventClassCode ProgressNote2DocumentationOfServiceEvent ProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacility ProgressNote2ComponentOfEncompassingEncounterId ProgressNote2ComponentOfEncompassingEncounterEffectiveTime ProgressNote2ComponentOfEncompassingEncounterLocation ProgressNote2ComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.9' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' constraints.validation.dependOn.ProgressNote2Code='ProgressNote2CodeP' constraints.validation.warning='ProgressNote2DocumentationOf ProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProgressNote2DocumentationOfServiceEventEffectiveTime' constraints.validation.info='ProgressNote2AssessmentSection ProgressNote2PlanOfTreatmentSection2 ProgressNote2AssessmentAndPlanSection2 ProgressNote2AllergiesSectionEntriesOptional2 ProgressNote2ChiefComplaintSection ProgressNote2InterventionsSection2 ProgressNote2InstructionsSection2 ProgressNote2MedicationsSectionEntriesOptional2 ProgressNote2ObjectiveSection ProgressNote2PhysicalExamSection2 ProgressNote2ProblemSectionEntriesOptional2 ProgressNote2ResultsSectionEntriesOptional2 ProgressNote2ReviewOfSystemsSection ProgressNote2SubjectiveSection ProgressNote2VitalSignsSectionEntriesOptional2 ProgressNote2NutritionSection' constraints.validation.query='ProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow ProgressNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProgressNote2DocumentationOfServiceEventTemplateId ProgressNote2DocumentationOfServiceEventClassCode ProgressNote2DocumentationOfServiceEventEffectiveTime ProgressNote2DocumentationOfServiceEvent ProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacility ProgressNote2ComponentOfEncompassingEncounterId ProgressNote2ComponentOfEncompassingEncounterEffectiveTime ProgressNote2ComponentOfEncompassingEncounterLocation ProgressNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2DocumentationOf constraints.validation.error='ProgressNote2DocumentationOfServiceEvent'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2DocumentationOfServiceEvent constraints.validation.error='ProgressNote2DocumentationOfServiceEventTemplateId ProgressNote2DocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth ProgressNote2DocumentationOfServiceEventClassCode' templateId.root='2.16.840.1.113883.10.20.21.3.1' classCode='PCPR' constraints.validation.warning='ProgressNote2DocumentationOfServiceEventEffectiveTime ServiceEventProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow' constraints.validation.query='ServiceEventProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDT constraints.validation.warning='ProgressNote2DocumentationOfServiceEventUSRealmDateAndTimeDTLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2ComponentOf constraints.validation.error='ProgressNote2ComponentOfEncompassingEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2ComponentOfEncompassingEncounter constraints.validation.error='ProgressNote2ComponentOfEncompassingEncounterId ProgressNote2ComponentOfEncompassingEncounterEffectiveTime ProgressNote2ComponentOfEncompassingEncounterLocation EncompassingEncounterProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow' constraints.validation.query='EncompassingEncounterProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2ComponentOfEncompassingEncounterLocation constraints.validation.error='ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacility'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacility constraints.validation.error='ProgressNote2ComponentOfEncompassingEncounterLocationHealthCareFacilityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDT constraints.validation.error='ProgressNote2ComponentOfEncompassingEncounterUSRealmDateAndTimeDTLow'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1OAUIN6jEee0kIKIEebuqA" base_Class="_MrNuQC-6EeSoCqqrpX8LzQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId UnstructuredDocument2RecordTarget UnstructuredDocument2Custodian UnstructuredDocument2Component UnstructuredDocument2RecordTargetPatientRoleId UnstructuredDocument2RecordTargetPatientRole UnstructuredDocument2CustodianAssignedCustodianRepresentedCustodianOrganization UnstructuredDocument2CustodianAssignedCustodian UnstructuredDocument2ComponentNonXMLBodyHasReferenceOrRepresentation UnstructuredDocument2ComponentNonXMLBodyMediaTypeFileFormats UnstructuredDocument2ComponentNonXMLBodyText UnstructuredDocument2ComponentNonXMLBody' templateId.root='2.16.840.1.113883.10.20.22.1.10' templateId.extension='2015-08-01' constraints.validation.query='UnstructuredDocument2RecordTargetPatientRoleId UnstructuredDocument2RecordTargetPatientRole UnstructuredDocument2CustodianAssignedCustodianRepresentedCustodianOrganization UnstructuredDocument2CustodianAssignedCustodian UnstructuredDocument2ComponentNonXMLBodyEDMediaType UnstructuredDocument2ComponentNonXMLBodyHasReferenceOrRepresentation UnstructuredDocument2ComponentNonXMLBodyMediaTypeFileFormats UnstructuredDocument2ComponentNonXMLBodyText UnstructuredDocument2ComponentNonXMLBody' constraints.validation.info='UnstructuredDocument2ComponentNonXMLBodyEDMediaType'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2RecordTarget constraints.validation.error='UnstructuredDocument2RecordTargetPatientRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2RecordTargetPatientRole constraints.validation.error='UnstructuredDocument2RecordTargetPatientRoleId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2Custodian constraints.validation.error='UnstructuredDocument2CustodianAssignedCustodian'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2CustodianAssignedCustodian constraints.validation.error='UnstructuredDocument2CustodianAssignedCustodianRepresentedCustodianOrganization'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2Component constraints.validation.error='UnstructuredDocument2ComponentNonXMLBody'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2ComponentNonXMLBody constraints.validation.error='UnstructuredDocument2ComponentNonXMLBodyHasReferenceOrRepresentation UnstructuredDocument2ComponentNonXMLBodyMediaTypeFileFormats UnstructuredDocument2ComponentNonXMLBodyText' constraints.validation.info='UnstructuredDocument2ComponentNonXMLBodyEDMediaType' constraints.validation.query='UnstructuredDocument2ComponentNonXMLBodyEDMediaType'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolUnstructuredDocument2ComponentNonXMLBodyED mediaType='text/plain' constraints.validation.info='UnstructuredDocument2ComponentNonXMLBodyEDMediaType'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1RP1YN6jEee0kIKIEebuqA" base_Class="_XA96QDhDEeS1WeMhbm6GZw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreconditionForSubstanceAdministrationTemplateId PreconditionForSubstanceAdministrationCode PreconditionForSubstanceAdministrationCodeP PreconditionForSubstanceAdministrationText PreconditionForSubstanceAdministrationValue PreconditionForSubstanceAdministrationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.25' templateId.extension='2014-06-09' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1537oN6jEee0kIKIEebuqA" base_Class="_YYgjwIC3EeS108flGLVEBA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NumberOfPressureUlcersObservationTemplateId NumberOfPressureUlcersObservationCode NumberOfPressureUlcersObservationCodeP NumberOfPressureUlcersObservationEntryRelationship NumberOfPressureUlcersObservation2CDTranslation NumberOfPressureUlcersObservation2CDTranslationP NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP NumberOfPressureUlcersObservation2EntryRelationshipObservationCode NumberOfPressureUlcersObservationEntryRelationshipObservationValueP NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation' templateId.root='2.16.840.1.113883.10.20.22.4.76' templateId.extension='2015-08-01' constraints.validation.dependOn.NumberOfPressureUlcersObservationCode='NumberOfPressureUlcersObservationCodeP' constraints.validation.query='NumberOfPressureUlcersObservation2CDTranslation NumberOfPressureUlcersObservation2CDTranslationP NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP NumberOfPressureUlcersObservation2EntryRelationshipObservationCode NumberOfPressureUlcersObservationEntryRelationshipObservationValueP NumberOfPressureUlcersObservationEntryRelationshipObservationValue NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation' constraints.validation.dependOn.NumberOfPressureUlcersObservation2EntryRelationshipObservationCode='NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP' constraints.validation.warning='NumberOfPressureUlcersObservationEntryRelationshipObservationValue' constraints.validation.dependOn.NumberOfPressureUlcersObservationEntryRelationshipObservationValue='NumberOfPressureUlcersObservationEntryRelationshipObservationValueP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolNumberOfPressureUlcersObservation2EntryRelationship typeCode='SUBJ' constraints.validation.error='NumberOfPressureUlcersObservationEntryRelationshipTypeCode NumberOfPressureUlcersObservationEntryRelationshipObservation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolNumberOfPressureUlcersObservation2EntryRelationshipObservation classCode='OBS' constraints.validation.error='NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode NumberOfPressureUlcersObservation2EntryRelationshipObservationCode NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP NumberOfPressureUlcersObservationEntryRelationshipObservationValueP' moodCode='EVN' code.code='ASSERTION' code.codeSystem='2.16.840.1.113883.5.4' code.codeSystemName='HL7ActCode' code.displayName='Assertion' constraints.validation.dependOn.NumberOfPressureUlcersObservation2EntryRelationshipObservationCode='NumberOfPressureUlcersObservation2EntryRelationshipObservationCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.warning='NumberOfPressureUlcersObservationEntryRelationshipObservationValue' constraints.validation.dependOn.NumberOfPressureUlcersObservationEntryRelationshipObservationValue='NumberOfPressureUlcersObservationEntryRelationshipObservationValueP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolNumberOfPressureUlcersObservation2CD translation.code='75277-4' translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' translation.displayName='Number of pressure ulcers' constraints.validation.error='NumberOfPressureUlcersObservation2CDTranslation NumberOfPressureUlcersObservation2CDTranslationP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_18wQgN6jEee0kIKIEebuqA" base_Class="_YvV88IV5EeSRBMdZotACQg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryObservationTemplateId FamilyHistoryObservationCodeP FamilyHistoryObservation2CDTranslationP' templateId.root='2.16.840.1.113883.10.20.22.4.46' templateId.extension='2015-08-01' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' constraints.validation.warning='FamilyHistoryObservationCode FamilyHistoryObservation2CDTranslation' constraints.validation.dependOn.FamilyHistoryObservationCode='FamilyHistoryObservationCodeP' constraints.validation.query='FamilyHistoryObservation2CDTranslation FamilyHistoryObservation2CDTranslationP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolFamilyHistoryObservation2CD translation.codeSystem='2.16.840.1.113883.6.1' translation.codeSystemName='LOINC' constraints.validation.warning='FamilyHistoryObservation2CDTranslation' constraints.validation.error='FamilyHistoryObservation2CDTranslationP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_1-jnUN6jEee0kIKIEebuqA" base_Generalization="_6wieMIbpEeSxzopshBnQuw"/>
  <Ecore:EClass xmi:id="_1-lcgN6jEee0kIKIEebuqA" base_Class="_6whQEIbpEeSxzopshBnQuw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryOrganizerTemplateId FamilyHistoryOrganizer2Id FamilyHistoryOrganizerFamilyHistoryObservation' templateId.root='2.16.840.1.113883.10.20.22.4.45' templateId.extension='2015-08-01'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1_FLwN6jEee0kIKIEebuqA" base_Class="_NGivoIevEeSBauRYePLghA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistorySectionTemplateId' templateId.root='2.16.840.1.113883.10.20.22.2.15' templateId.extension='2015-08-01' constraints.validation.info='FamilyHistorySectionFamilyHistory'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1_liEN6jEee0kIKIEebuqA" base_Class="_zKKIUIe9EeSBauRYePLghA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicianReadingStudyPerformerTemplateId' templateId.root='2.16.840.1.113883.10.20.6.2.1' templateId.extension='2014-06-09'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_1_nXQN6jEee0kIKIEebuqA" base_Class="_S0oqIIfLEeSBauRYePLghA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CourseOfCareSectionTemplateId CourseOfCareSectionCode CourseOfCareSectionCodeP CourseOfCareSectionTitle CourseOfCareSectionText' templateId.root='2.16.840.1.113883.10.20.22.2.64' code.code='8648-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Hospital Course Narrative'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_2bhQIN6jEee0kIKIEebuqA" base_Class="_dGARYOLSEeS505YV9ux2XA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedInterventionActTemplateId PlannedInterventionActClassCode PlannedInterventionActMoodCode PlannedInterventionActMoodCodeP PlannedInterventionActId PlannedInterventionActCode PlannedInterventionActCodeP PlannedInterventionActStatusCode PlannedInterventionActStatusCodeP PlannedInterventionActEntryReferenceGoalObs PlannedInterventionActReferenceTypeCode PlannedInterventionActReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.146' templateId.extension='2015-08-01' classCode='ACT' constraints.validation.dependOn.PlannedInterventionActMoodCode='PlannedInterventionActMoodCodeP' code.code='362956003' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='procedure / intervention (navigational concept)' constraints.validation.dependOn.PlannedInterventionActCode='PlannedInterventionActCodeP' statusCode.code='active' constraints.validation.warning='PlannedInterventionActEffectiveTime PlannedInterventionActAuthorParticipation' constraints.validation.info='PlannedInterventionActAdvanceDirectiveObservation2 PlannedInterventionActImmunizationActivity2 PlannedInterventionActMedicationActivity2 PlannedInterventionActProcedureActivityAct2 PlannedInterventionActInterventionAct PlannedInterventionActProcedureActivityObservation2 PlannedInterventionActProcedureActivityProcedure2 PlannedInterventionActEncounterActivity2 PlannedInterventionActInstruction2 PlannedInterventionActNonMedicinalSupplyActivity2 PlannedInterventionActPlannedAct2 PlannedInterventionActPlannedEncounter2 PlannedInterventionActPlannedObservation2 PlannedInterventionActPlannedProcedure2 PlannedInterventionActPlannedMedicationActivity2 PlannedInterventionActPlannedSupply2 PlannedInterventionActNutritionRecommendation PlannedInterventionActEntryReferenceDocInstance PlannedInterventionActHandoffCommunicationParticipants PlannedInterventionActPlannedImmunizationActivity PlannedInterventionActReference' constraints.validation.query='PlannedInterventionActReferenceTypeCode PlannedInterventionActReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPlannedInterventionActReference typeCode='REFR' constraints.validation.error='PlannedInterventionActReferenceTypeCode PlannedInterventionActReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_2mwPwN6jEee0kIKIEebuqA" base_Class="_mMk3QON1EeS_XOr-dz_KWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='RiskConcernActTemplateId RiskConcernActClassCode RiskConcernActMoodCode RiskConcernActId RiskConcernActCode RiskConcernActCodeP RiskConcernActStatusCode RiskConcernActStatusCodeP RiskConcernActReferenceTypeCode RiskConcernActReferenceExternalDocumentReference' templateId.root='2.16.840.1.113883.10.20.22.4.136' templateId.extension='2015-08-01' classCode='ACT' moodCode='EVN' code.code='281694009' code.codeSystem='2.16.840.1.113883.6.96' code.codeSystemName='SNOMEDCT' code.displayName='At risk for' constraints.validation.dependOn.RiskConcernActCode='RiskConcernActCodeP' constraints.validation.info='RiskConcernActEffectiveTime RiskConcernActProblemObservation2 RiskConcernActAllergyObservation2 RiskConcernActEntryReferenceRelatesTo RiskConcernActEntryReferenceHasComponent RiskConcernActAssessmentScaleObservation RiskConcernActMentalStatusObservation2 RiskConcernActSelfCareActivities RiskConcernActMentalStatusObservation2B RiskConcernActSmokingStatusMeaningfulUse2 RiskConcernActEncounterDiagnosis2 RiskConcernActFamilyHistoryOrganizer2 RiskConcernActFunctionalStatusObservation2 RiskConcernActHospitalAdmissionDiagnosis2 RiskConcernActMentalStatusObservation2C RiskConcernActNutritionAssessment RiskConcernActNutritionAssessmentB RiskConcernActPostprocedureDiagnosis2 RiskConcernActPregnancyObservation RiskConcernActPreoperativeDiagnosis2 RiskConcernActReactionObservation2 RiskConcernActResultObservation2 RiskConcernActSensoryStatus RiskConcernActSocialHistoryObservation2 RiskConcernActSubstanceOrDeviceAllergyObservation2 RiskConcernActTobaccoUse2 RiskConcernActVitalSignObservation2 RiskConcernActWoundObservation RiskConcernActProblemObservation2HasSupport RiskConcernActCaregiverCharacteristics RiskConcernActCulturalAndReligiousObservation RiskConcernActCharacteristicsOfHomeEnvironment RiskConcernActNutritionalStatusObservation RiskConcernActResultOrganizer2 RiskConcernActPriorityPreferencePatient RiskConcernActPriorityPreferenceProvider RiskConcernActProblemConcernAct2 RiskConcernActEntryReferenceHealthConcern RiskConcernActReference' constraints.validation.warning='RiskConcernActAuthorParticipation' constraints.validation.query='RiskConcernActReferenceTypeCode RiskConcernActReferenceExternalDocumentReference'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolRiskConcernActReference typeCode='REFR' constraints.validation.error='RiskConcernActReferenceTypeCode RiskConcernActReferenceExternalDocumentReference'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_3LvzMN6jEee0kIKIEebuqA" base_Class="_kowjcDr-EeWD4MX6K2c_gA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationFreeTextSigTemplateId MedicationFreeTextSigTextReferenceValue MedicationFreeTextSigClassCode MedicationFreeTextSigMoodCode MedicationFreeTextSigCode MedicationFreeTextSigCodeP MedicationFreeTextSigText MedicationFreeTextSigConsumable MedicationFreeTextSigEDReference MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrugNullFlavor MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrug MedicationFreeTextSigConsumableManufacturedProduct' templateId.root='2.16.840.1.113883.10.20.22.4.147' classCode='SBADM' code.code='76662-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Instructions Medication' constraints.validation.warning='MedicationFreeTextSigEDTELValue' constraints.validation.query='MedicationFreeTextSigEDTELValue MedicationFreeTextSigEDReference MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrugNullFlavor MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrug MedicationFreeTextSigConsumableManufacturedProduct'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationFreeTextSigED constraints.validation.error='MedicationFreeTextSigEDReference' constraints.validation.warning='EDMedicationFreeTextSigEDTELValue' constraints.validation.query='EDMedicationFreeTextSigEDTELValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationFreeTextSigEDTEL constraints.validation.warning='MedicationFreeTextSigEDTELValue'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationFreeTextSigConsumable constraints.validation.error='MedicationFreeTextSigConsumableManufacturedProduct'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationFreeTextSigConsumableManufacturedProduct constraints.validation.error='MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrug'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrug nullFlavor='NA' constraints.validation.error='MedicationFreeTextSigConsumableManufacturedProductManufacturedLabeledDrugNullFlavor'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_3PmYcN6jEee0kIKIEebuqA" base_Class="_8fGTcD-qEeaJttsCYk-pKw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='BirthSexObservationTemplateId BirthSexObservationClassCode BirthSexObservationMoodCode BirthSexObservationCode BirthSexObservationCodeP BirthSexObservationStatusCode BirthSexObservationStatusCodeP BirthSexObservationValue BirthSexObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.200' templateId.extension='2016-06-01' classCode='OBS' moodCode='EVN' code.code='76689-9' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Sex Assigned At Birth' constraints.validation.dependOn.BirthSexObservationCode='BirthSexObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.5.1' value.codeSystemName='AdministrativeGender'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_3R-XAN6jEee0kIKIEebuqA" base_Class="_LspMELDzEeafNo3UpQoAYw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CriticalityObservationTemplateId CriticalityObservationClassCode CriticalityObservationMoodCode CriticalityObservationCode CriticalityObservationCodeP CriticalityObservationStatusCode CriticalityObservationStatusCodeP CriticalityObservationValue CriticalityObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.145' classCode='OBS' moodCode='EVN' code.code='82606-5' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Allergy or intolerance criticality' constraints.validation.dependOn.CriticalityObservationCode='CriticalityObservationCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.5.1063' value.codeSystemName='ObservationValue'</annotation>
  </Ecore:EClass>
</xmi:XMI>
