<?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/3.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ii81kjxVEd6JwqSGecoePg"/>
    </packageImport>
    <packageImport xmi:id="_hPUsgNcZEeGfQ6frO0B-Jg">
      <importedPackage href="../../org.openhealthtools.mdht.uml.hl7.datatypes/model/datatypes.uml#_XgMSwzxVEd6JwqSGecoePg"/>
    </packageImport>
    <packageImport xmi:id="_q3SeUD49EeKUq_Bmx5Topg">
      <importedPackage href="../../org.openhealthtools.mdht.uml.hl7.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="_-XvW8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-XvW8T_aEeOMf4ibmUJukw">
          <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="_-X9ZYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRealmCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-X9ZYT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CS = element.oclAsType(datatypes::CS) in 
value.code = 'US'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-X_1oD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsTypeId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-X_1oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.typeId.oclIsUndefined() or self.typeId.isNullFlavorUndefined()) implies (not self.typeId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YAcsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YBDwD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YBq0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YBq0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YC48D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsTitle" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YC48T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YEHED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YEHET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YHxcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsConfidentialityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YHxcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.confidentialityCode.oclIsUndefined() or self.confidentialityCode.isNullFlavorUndefined()) implies (not self.confidentialityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YF8QD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsConfidentialityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YF8QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.confidentialityCode.oclIsUndefined() or self.confidentialityCode.isNullFlavorUndefined()) implies (not self.confidentialityCode.oclIsUndefined() and self.confidentialityCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.confidentialityCode.oclAsType(datatypes::CE) in 
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="_-YJmoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YJmoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined() and self.languageCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.languageCode.oclAsType(datatypes::CS) in 
not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YMC4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsSetId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YMC4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.setId.oclIsUndefined() or self.setId.isNullFlavorUndefined()) implies (not self.setId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-YMp8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsVersionNumber" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-YMp8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.versionNumber.oclIsUndefined() or self.versionNumber.isNullFlavorUndefined()) implies (not self.versionNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ahlMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ahlMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-aiMQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEnterer" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-aiMQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-aizUD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-aizUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ajaYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-akBcD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-akBcT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-akogD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(cda::LegalAuthenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-alPkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-alPkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.authenticator->exists(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-al2oD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTarget" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-al2oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.recordTarget->exists(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-amdsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsComponentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-amdsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n7vED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n7vET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informant->one(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(cda::Informant12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n-yYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsSupportParticipant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n-yYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n_ZcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInFulfillmentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n_ZcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yc9Aj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yc9Az_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yfZQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yfZQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.authorization->exists(authorization : cda::Authorization | not authorization.oclIsUndefined() and authorization.oclIsKindOf(cda::Authorization))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ywfAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ywfAT_aEeOMf4ibmUJukw">
          <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="_-ywfAj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ywfAz_aEeOMf4ibmUJukw">
          <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="_-yxGED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yxGET_aEeOMf4ibmUJukw">
          <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="_-yxGEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yxGEz_aEeOMf4ibmUJukw">
          <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="_-yxGFD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yxGFT_aEeOMf4ibmUJukw">
          <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="_-yxtID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yxtIT_aEeOMf4ibmUJukw">
          <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="_-yxtIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yxtIz_aEeOMf4ibmUJukw">
          <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="_-yyUMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yyUMT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-yy7QD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yy7QT_aEeOMf4ibmUJukw">
          <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="_-y0JYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y0JYT_aEeOMf4ibmUJukw">
          <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="_-y0JYj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y0JYz_aEeOMf4ibmUJukw">
          <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() >= 6)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-y0wcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y0wcT_aEeOMf4ibmUJukw">
          <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="_-y1XgD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y1XgT_aEeOMf4ibmUJukw">
          <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="_-y1Xgj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y1Xgz_aEeOMf4ibmUJukw">
          <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="_-y1-kD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y1-kT_aEeOMf4ibmUJukw">
          <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="_-y1-kj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y1-kz_aEeOMf4ibmUJukw">
          <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="_-y2loD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y2loT_aEeOMf4ibmUJukw">
          <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="_-y2loj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y2loz_aEeOMf4ibmUJukw">
          <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="_-y3MsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y3MsT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::EntityNameUse = element.oclAsType(vocab::EntityNameUse) in 
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="_-y4a0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y4a0T_aEeOMf4ibmUJukw">
          <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="_-y4a0j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y4a0z_aEeOMf4ibmUJukw">
          <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="_-y4a1D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y5B4D_aEeOMf4ibmUJukw">
          <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="_-y5B4T_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y5B4j_aEeOMf4ibmUJukw">
          <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="_-y5B4z_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y5B5D_aEeOMf4ibmUJukw">
          <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="_-y5o8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y5o8T_aEeOMf4ibmUJukw">
          <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="_-y5o8j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y5o8z_aEeOMf4ibmUJukw">
          <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="_-y6QAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y6QAT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-y63ED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y63ET_aEeOMf4ibmUJukw">
          <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="_-y7eID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y7eIT_aEeOMf4ibmUJukw">
          <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="_-y8FMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y8FMT_aEeOMf4ibmUJukw">
          <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="_-y8FMj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y8FMz_aEeOMf4ibmUJukw">
          <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="_-y8sQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y8sQT_aEeOMf4ibmUJukw">
          <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="_-y8sQj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y8sQz_aEeOMf4ibmUJukw">
          <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="_-y8sRD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y8sRT_aEeOMf4ibmUJukw">
          <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="_-y96YD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y96YT_aEeOMf4ibmUJukw">
          <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="_-y-hcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y-hcT_aEeOMf4ibmUJukw">
          <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="_-y_IgD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y_IgT_aEeOMf4ibmUJukw">
          <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="_-y_Igj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y_Igz_aEeOMf4ibmUJukw">
          <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="_-y_vkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y_vkT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = proficiencyLevelCode.oclAsType(datatypes::CE) in 
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="_-y_vkj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-y_vkz_aEeOMf4ibmUJukw">
          <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="_-zAWoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zAWoT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = modeCode.oclAsType(datatypes::CE) in 
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="_-zAWoj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zAWoz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CS = languageCode.oclAsType(datatypes::CS) in 
not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zA9sD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zA9sT_aEeOMf4ibmUJukw">
          <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="_-zA9sj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zA9sz_aEeOMf4ibmUJukw">
          <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="_-zBkwD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zBkwT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = administrativeGenderCode.oclAsType(datatypes::CE) in 
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="_-zBkwj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zBkwz_aEeOMf4ibmUJukw">
          <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="_-zCL0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zCL0T_aEeOMf4ibmUJukw">
          <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="_-zCL0j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zCL0z_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = ethnicGroupCode.oclAsType(datatypes::CE) in 
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="_-zCy4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zCy4T_aEeOMf4ibmUJukw">
          <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="_-zCy4j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zCy4z_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = maritalStatusCode.oclAsType(datatypes::CE) in 
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="_-zDZ8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zDZ8T_aEeOMf4ibmUJukw">
          <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="_-zDZ8j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zEBAD_aEeOMf4ibmUJukw">
          <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="_-zEBAT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zEBAj_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = raceCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zEBAz_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zEoED_aEeOMf4ibmUJukw">
          <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="_-zEoET_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zEoEj_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = religiousAffiliationCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.5.1076' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zFPID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zFPIT_aEeOMf4ibmUJukw">
          <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="_-zFPIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zFPIz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = element.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zF2MD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zF2MT_aEeOMf4ibmUJukw">
          <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="_-zF2Mj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zF2Mz_aEeOMf4ibmUJukw">
          <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="_-zGdQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zGdQT_aEeOMf4ibmUJukw">
          <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="_-zHrYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zHrYT_aEeOMf4ibmUJukw">
          <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="_-zHrYj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zHrYz_aEeOMf4ibmUJukw">
          <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="_-zIScD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zIScT_aEeOMf4ibmUJukw">
          <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="_-zI5gD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zI5gT_aEeOMf4ibmUJukw">
          <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="_-zI5gj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zI5gz_aEeOMf4ibmUJukw">
          <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="_-zKusD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zKusT_aEeOMf4ibmUJukw">
          <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="_-zKusj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zKusz_aEeOMf4ibmUJukw">
          <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="_-zLVwD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zLVwT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-zL80D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zL80T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.recordTarget->excluding(null).patientRole->excluding(null).providerOrganization->excluding(null).telecom->excluding(null)->select(isNullFlavorUndefined())->reject( ( isNullFlavorUndefined() implies (use->size() = 1 )))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zMj4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zMj4T_aEeOMf4ibmUJukw">
          <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="_-zMj4j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zMj4z_aEeOMf4ibmUJukw">
          <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="_-zNK8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zNK8T_aEeOMf4ibmUJukw">
          <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="_-zNK8j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zNK8z_aEeOMf4ibmUJukw">
          <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="_-zNyAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zNyAT_aEeOMf4ibmUJukw">
          <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="_-zNyAj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zNyAz_aEeOMf4ibmUJukw">
          <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="_-zOZED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zOZET_aEeOMf4ibmUJukw">
          <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="_-zOZEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zOZEz_aEeOMf4ibmUJukw">
          <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="_-zPAID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRolePatient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zPAIT_aEeOMf4ibmUJukw">
          <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="_-zPAIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zPAIz_aEeOMf4ibmUJukw">
          <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="_-zPnMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsRecordTargetPatientRole" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zPnMT_aEeOMf4ibmUJukw">
          <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="_-zQ1UD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zQ1UT_aEeOMf4ibmUJukw">
          <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="_-zQ1Uj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zQ1Uz_aEeOMf4ibmUJukw">
          <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="_-zRcYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsComponentOfEncompassingEncounter" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zRcYT_aEeOMf4ibmUJukw">
          <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="_-zSqgD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zSqgT_aEeOMf4ibmUJukw">
          <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="_-zTRkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zTRkT_aEeOMf4ibmUJukw">
          <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="_-zTRkj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zT4oD_aEeOMf4ibmUJukw">
          <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="_-zT4oT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zT4oj_aEeOMf4ibmUJukw">
          <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="_-zT4oz_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zT4pD_aEeOMf4ibmUJukw">
          <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="_-zUfsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zUfsT_aEeOMf4ibmUJukw">
          <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="_-zUfsj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zUfsz_aEeOMf4ibmUJukw">
          <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="_-zVGwD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zVGwT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-zVt0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zVt0T_aEeOMf4ibmUJukw">
          <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="_-zWU4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zWU4T_aEeOMf4ibmUJukw">
          <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="_-zW78D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zW78T_aEeOMf4ibmUJukw">
          <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="_-zXjAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zXjAT_aEeOMf4ibmUJukw">
          <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="_-zXjAj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zXjAz_aEeOMf4ibmUJukw">
          <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="_-zYKED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zYKET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((not assignedPerson.oclIsUndefined() and id->size() >= 1) implies id->exists(id | id.isNullFlavorDefined() or id.root='2.16.840.1.113883.4.6'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zYKEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorIfHasAssignedPersonEnforceId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zYKEz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(not assignedPerson.oclIsUndefined() implies id->size() &lt;= 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zYxID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zYxIT_aEeOMf4ibmUJukw">
          <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="_-zYxIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zYxIz_aEeOMf4ibmUJukw">
          <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="_-zZYMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zZYMT_aEeOMf4ibmUJukw">
          <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 
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="_-zZYMj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zZYMz_aEeOMf4ibmUJukw">
          <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="_-zZ_QD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthorTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zZ_QT_aEeOMf4ibmUJukw">
          <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="_-zZ_Qj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zZ_Qz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zamUD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorAssignedAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zamUT_aEeOMf4ibmUJukw">
          <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="_-zcbgD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zcbgT_aEeOMf4ibmUJukw">
          <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="_-zcbgj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zcbgz_aEeOMf4ibmUJukw">
          <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="_-zdCkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zdCkT_aEeOMf4ibmUJukw">
          <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="_-zdCkj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zdCkz_aEeOMf4ibmUJukw">
          <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="_-zdpoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zdpoT_aEeOMf4ibmUJukw">
          <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="_-zdpoj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zdpoz_aEeOMf4ibmUJukw">
          <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="_-zeQsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zeQsT_aEeOMf4ibmUJukw">
          <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="_-zeQsj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zeQsz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-zfe0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zfe0T_aEeOMf4ibmUJukw">
          <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="_-zgF4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zgF4T_aEeOMf4ibmUJukw">
          <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="_-zgs8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zgs8T_aEeOMf4ibmUJukw">
          <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="_-zgs8j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zgs8z_aEeOMf4ibmUJukw">
          <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="_-zhUAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zhUAT_aEeOMf4ibmUJukw">
          <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="_-zhUAj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zhUAz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-zh7ED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zh7ET_aEeOMf4ibmUJukw">
          <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="_-zh7Ej_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zh7Ez_aEeOMf4ibmUJukw">
          <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="_-ziiID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ziiIT_aEeOMf4ibmUJukw">
          <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="_-ziiIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDataEntererAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ziiIz_aEeOMf4ibmUJukw">
          <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="_-zk-YD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zk-YT_aEeOMf4ibmUJukw">
          <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="_-zk-Yj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zk-Yz_aEeOMf4ibmUJukw">
          <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="_-zllcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zllcT_aEeOMf4ibmUJukw">
          <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="_-zllcj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zllcz_aEeOMf4ibmUJukw">
          <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="_-zmMgD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zmMgT_aEeOMf4ibmUJukw">
          <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="_-zmMgj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zmMgz_aEeOMf4ibmUJukw">
          <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="_-zmzkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zmzkT_aEeOMf4ibmUJukw">
          <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="_-zmzkj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zmzkz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-zoBsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zoBsT_aEeOMf4ibmUJukw">
          <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="_-zoBsj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zoBsz_aEeOMf4ibmUJukw">
          <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="_-zoowD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zoowT_aEeOMf4ibmUJukw">
          <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="_-zpP0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zpP0T_aEeOMf4ibmUJukw">
          <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="_-zpP0j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zpP0z_aEeOMf4ibmUJukw">
          <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="_-zp24D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zp24T_aEeOMf4ibmUJukw">
          <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="_-zp24j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zp24z_aEeOMf4ibmUJukw">
          <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="_-zqd8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCustodianAssignedCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zqd8T_aEeOMf4ibmUJukw">
          <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="_-zrsED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zrsET_aEeOMf4ibmUJukw">
          <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="_-zs6MD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zs6MT_aEeOMf4ibmUJukw">
          <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="_-zs6Mj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zs6Mz_aEeOMf4ibmUJukw">
          <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="_-zthQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zthQT_aEeOMf4ibmUJukw">
          <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="_-zthQj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zthQz_aEeOMf4ibmUJukw">
          <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="_-zvWcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zvWcT_aEeOMf4ibmUJukw">
          <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="_-zv9gD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zv9gT_aEeOMf4ibmUJukw">
          <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="_-zv9gj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zv9gz_aEeOMf4ibmUJukw">
          <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="_-zwkkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zwkkT_aEeOMf4ibmUJukw">
          <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="_-zwkkj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zwkkz_aEeOMf4ibmUJukw">
          <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="_-zxLoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zxLoT_aEeOMf4ibmUJukw">
          <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="_-zxysD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zxysT_aEeOMf4ibmUJukw">
          <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="_-zxysj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zxysz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-zzA0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zzA0T_aEeOMf4ibmUJukw">
          <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="_-zzn4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-zzn4T_aEeOMf4ibmUJukw">
          <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="_-z0O8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z0O8T_aEeOMf4ibmUJukw">
          <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="_-z0O8j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z02AD_aEeOMf4ibmUJukw">
          <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="_-z02AT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z02Aj_aEeOMf4ibmUJukw">
          <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="_-z1dED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z1dET_aEeOMf4ibmUJukw">
          <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 
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="_-z1dEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z1dEz_aEeOMf4ibmUJukw">
          <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="_-z2EID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z2EIT_aEeOMf4ibmUJukw">
          <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="_-z2rMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z2rMT_aEeOMf4ibmUJukw">
          <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="_-z2rMj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z2rMz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-z3SQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z3SQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-z35UD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsLegalAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z35UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.legalAuthenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in 
value.code = 'S'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-z5ugD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z5ugT_aEeOMf4ibmUJukw">
          <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="_-z5ugj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z5ugz_aEeOMf4ibmUJukw">
          <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="_-z6VkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z6VkT_aEeOMf4ibmUJukw">
          <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="_-z68oD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z68oT_aEeOMf4ibmUJukw">
          <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="_-z68oj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z68oz_aEeOMf4ibmUJukw">
          <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="_-z7jsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z7jsT_aEeOMf4ibmUJukw">
          <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="_-z8KwD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z8KwT_aEeOMf4ibmUJukw">
          <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="_-z8Kwj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z8Kwz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-z9Y4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z9Y4T_aEeOMf4ibmUJukw">
          <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="_-z9_8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z9_8T_aEeOMf4ibmUJukw">
          <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="_-z-nAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z-nAT_aEeOMf4ibmUJukw">
          <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="_-z_OED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z_OET_aEeOMf4ibmUJukw">
          <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="_-z_OEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z_OEz_aEeOMf4ibmUJukw">
          <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="_-z_1ID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-z_1IT_aEeOMf4ibmUJukw">
          <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 
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="_-0AcMD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0AcMT_aEeOMf4ibmUJukw">
          <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="_-0AcMj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0AcMz_aEeOMf4ibmUJukw">
          <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="_-0BDQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0BDQT_aEeOMf4ibmUJukw">
          <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="_-0BqUD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0BqUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0BqUj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0BqUz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.authenticator->excluding(null)->reject((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in 
value.code = 'S'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0CRYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthenticatorAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0CRYT_aEeOMf4ibmUJukw">
          <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="_-0EGkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0EGkT_aEeOMf4ibmUJukw">
          <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="_-0EtoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0EtoT_aEeOMf4ibmUJukw">
          <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="_-0Etoj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0FUsD_aEeOMf4ibmUJukw">
          <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="_-0FUsT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0FUsj_aEeOMf4ibmUJukw">
          <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="_-0F7wD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0F7wT_aEeOMf4ibmUJukw">
          <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="_-0Gi0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Gi0T_aEeOMf4ibmUJukw">
          <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="_-0Gi0j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0HJ4D_aEeOMf4ibmUJukw">
          <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="_-0HJ4T_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0HJ4j_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-0IYAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0IYAT_aEeOMf4ibmUJukw">
          <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="_-0IYAj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0I_ED_aEeOMf4ibmUJukw">
          <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="_-0I_ET_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0I_Ej_aEeOMf4ibmUJukw">
          <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="_-0JmID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0JmIT_aEeOMf4ibmUJukw">
          <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="_-0JmIj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0KNMD_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0KNMT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0KNMj_aEeOMf4ibmUJukw">
          <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="_-0K0QD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0K0QT_aEeOMf4ibmUJukw">
          <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="_-0MCYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0MCYT_aEeOMf4ibmUJukw">
          <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="_-0MpcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0MpcT_aEeOMf4ibmUJukw">
          <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="_-0OeoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0OeoT_aEeOMf4ibmUJukw">
          <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="_-0Oeoj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Oeoz_aEeOMf4ibmUJukw">
          <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="_-0PFsD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0PFsT_aEeOMf4ibmUJukw">
          <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="_-0PswD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0PswT_aEeOMf4ibmUJukw">
          <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="_-0Pswj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Pswz_aEeOMf4ibmUJukw">
          <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="_-0QT0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0QT0T_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-0Q64D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsInformantAssignedEntityPersonName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Rh8D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informant->excluding(null).relatedEntity->excluding(null).relatedPerson->excluding(null)->reject((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0Rh8T_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Rh8j_aEeOMf4ibmUJukw">
          <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="_-0SJAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntityPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0SJAT_aEeOMf4ibmUJukw">
          <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="_-0SwED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0SwET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(assignedEntity.oclIsUndefined() xor relatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0SwEj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0SwEz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informant->excluding(null)->reject(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0TXID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInformantRelatedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0TXIT_aEeOMf4ibmUJukw">
          <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="_-0T-MD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0T-MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject((not associatedEntity.associatedPerson.oclIsUndefined()) or (not associatedEntity.scopingOrganization.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0UlQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsParticipantSupportTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0UlQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0VzYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInFulfillmentOfOrderId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0VzYT_aEeOMf4ibmUJukw">
          <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="_-0WacD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsInFulfillmentOfOrder" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0WacT_aEeOMf4ibmUJukw">
          <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="_-0YPoD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0YPoT_aEeOMf4ibmUJukw">
          <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="_-0Y2sD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Y2sT_aEeOMf4ibmUJukw">
          <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="_-0Y2sj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0Y2sz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.101'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0ZdwD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0ZdwT_aEeOMf4ibmUJukw">
          <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="_-0aE0D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0aE0T_aEeOMf4ibmUJukw">
          <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="_-0aE0j_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0aE0z_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.5.88'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0ar4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0ar4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0bS8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0bS8T_aEeOMf4ibmUJukw">
          <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="_-0b6AD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0b6AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(effectiveTime->forAll(not low.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0b6Aj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0b6Az_aEeOMf4ibmUJukw">
          <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="_-0chED_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEventPerformer" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0chET_aEeOMf4ibmUJukw">
          <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="_-0dIID_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsDocumentationOfServiceEvent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0dIIT_aEeOMf4ibmUJukw">
          <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="_-0eWQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorizationConsentCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0eWQT_aEeOMf4ibmUJukw">
          <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="_-0e9UD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorizationConsentId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0e9UT_aEeOMf4ibmUJukw">
          <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="_-0e9Uj_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorizationConsentStatusCodeP" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0e9Uz_aEeOMf4ibmUJukw">
          <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="_-0fkYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorizationConsentStatusCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0fkYT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CS = statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0gLcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsAuthorizationConsent" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0gLcT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-anEwD_aEeOMf4ibmUJukw" name="AllergyProblemActTemplateId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-anEwT_aEeOMf4ibmUJukw">
          <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="_-aoS4D_aEeOMf4ibmUJukw" name="AllergyProblemActClassCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-aoS4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-aqIED_aEeOMf4ibmUJukw" name="AllergyProblemActMoodCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-aqIET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-arWMD_aEeOMf4ibmUJukw" name="AllergyProblemActId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-arWMT_aEeOMf4ibmUJukw">
          <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="_-ar9QD_aEeOMf4ibmUJukw" name="AllergyProblemActCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ar9QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-atycD_aEeOMf4ibmUJukw" name="AllergyProblemActStatusCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-atycT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-avAkD_aEeOMf4ibmUJukw" name="AllergyProblemActEffectiveTime" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-avAkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cD2QD_aEeOMf4ibmUJukw" name="AllergyProblemActAllergyObservation" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cD2QT_aEeOMf4ibmUJukw">
          <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>
      <generalization xmi:id="_2GDKExSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-cD2Qj_aEeOMf4ibmUJukw" name="getAllergyObservations" isQuery="true" bodyCondition="_-cEdUj_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-cEdUj_aEeOMf4ibmUJukw" name="body" constrainedElement="_-cD2Qj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cEdUz_aEeOMf4ibmUJukw">
            <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="_-cEdUD_aEeOMf4ibmUJukw" type="_2EaLUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-cEdUT_aEeOMf4ibmUJukw" 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="AllergyObservationAllergyStatusInversionIndicator" 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="AllergyObservationReactionInversionIndicator" 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="AllergyObservationSeverityInversionIndicator">
        <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="_oguNAANMEeKJMbqTnrzczw" name="AllergyObservationAllergyPlayingEntityCodeSystems" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_zzqg4ANMEeKJMbqTnrzczw">
          <body>Duplicated constraint to make OCL easier to write. Check AllergyObservationParticipant->ParticipantRole->PlayingEntity for original conformance rules.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_ue3mcANMEeKJMbqTnrzczw">
          <language>OCL</language>
          <body>(self.value->forAll(value | value.isNullFlavorUndefined())) implies (((self.value->forAll(value | value.oclAsType(datatypes::CD).code = '419511003' or value.oclAsType(datatypes::CD).code = '416098002' or value.oclAsType(datatypes::CD).code = '59037007')) and (self.participant.participantRole.playingEntity->forAll(code.isNullFlavorDefined() or code.codeSystem = '2.16.840.1.113883.6.88' or code.codeSystem='2.16.840.1.113883.3.26.1.5'))) or ((self.value->forAll(value | value.oclAsType(datatypes::CD).code = '418471000' or value.oclAsType(datatypes::CD).code = '414285001' or value.oclAsType(datatypes::CD).code = '235719002')) and (self.participant.participantRole.playingEntity->forAll(code.isNullFlavorDefined() or code.codeSystem = '2.16.840.1.113883.4.9'))) or ((self.value->forAll(value | value.oclAsType(datatypes::CD).code = '420134006' or value.oclAsType(datatypes::CD).code = '418038007' or value.oclAsType(datatypes::CD).code = '419199007')) and (self.participant.participantRole.playingEntity->forAll(code.isNullFlavorDefined() or code.codeSystem = '2.16.840.1.113883.6.88' or code.codeSystem='2.16.840.1.113883.3.26.1.5' or code.codeSystem = '2.16.840.1.113883.4.9'))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-avnoD_aEeOMf4ibmUJukw" name="AllergyObservationTemplateId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-avnoT_aEeOMf4ibmUJukw">
          <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="_-az5ED_aEeOMf4ibmUJukw" name="AllergyObservationClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-az5ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a1HMD_aEeOMf4ibmUJukw" name="AllergyObservationMoodCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a1HMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a1uQD_aEeOMf4ibmUJukw" name="AllergyObservationId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a1uQT_aEeOMf4ibmUJukw">
          <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="_-a4KgD_aEeOMf4ibmUJukw" name="AllergyObservationCodeP" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a4KgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a28YD_aEeOMf4ibmUJukw" name="AllergyObservationCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a28YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a5YoD_aEeOMf4ibmUJukw" name="AllergyObservationStatusCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a5YoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a6mwD_aEeOMf4ibmUJukw" name="AllergyObservationEffectiveTime" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a6mwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-a704D_aEeOMf4ibmUJukw" name="AllergyObservationValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-a704T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bE-0D_aEeOMf4ibmUJukw" name="AllergyObservationProblemEntryReactionObservationContainer" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bE-0T_aEeOMf4ibmUJukw">
          <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="_-bG0Aj_aEeOMf4ibmUJukw" name="AllergyObservationSeverity" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bG0Az_aEeOMf4ibmUJukw">
          <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="_-kZ59T_aEeOMf4ibmUJukw" name="AllergyObservationAllergyStatusObservation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kZ59j_aEeOMf4ibmUJukw">
          <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="_-oE5AD_aEeOMf4ibmUJukw" name="AllergyObservationParticipant" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oE5AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-06bID_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeOriginalText" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-06bIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.originalText.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-06bIj_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReference" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-06bIz_aEeOMf4ibmUJukw">
          <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="_-06bJD_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-06bJT_aEeOMf4ibmUJukw">
          <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="_-07CMD_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReferenceValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07CMT_aEeOMf4ibmUJukw">
          <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="_-07CMj_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeTranslation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07CMz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(not code.translation->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-07CND_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07CNT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null).playingEntity->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-07pQD_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07pQT_aEeOMf4ibmUJukw">
          <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="_-07pQj_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07pQz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(not classCode.oclIsUndefined() and classCode.oclIsKindOf(vocab::RoleClassRoot) and 
let value : vocab::RoleClassRoot = classCode.oclAsType(vocab::RoleClassRoot) in 
value = vocab::RoleClassRoot::MANU)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-07pRD_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRolePlayingEntity" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-07pRT_aEeOMf4ibmUJukw">
          <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="_-08QUD_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantTypeCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-08QUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::ParticipationType) and 
let value : vocab::ParticipationType = typeCode.oclAsType(vocab::ParticipationType) in 
value = vocab::ParticipationType::CSM)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-08QUj_aEeOMf4ibmUJukw" name="AllergyObservationAllergyObservationParticipantParticipantRole" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-08QUz_aEeOMf4ibmUJukw">
          <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 xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-bGM8D_aEeOMf4ibmUJukw" name="getProblemEntryReactionObservationContainers" isQuery="true" bodyCondition="_-bG0AD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-bG0AD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-bGM8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bG0AT_aEeOMf4ibmUJukw">
            <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="_-bGM8T_aEeOMf4ibmUJukw" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bGM8j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-bHbED_aEeOMf4ibmUJukw" name="getSeverity" isQuery="true" bodyCondition="_-bHbEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-bHbEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-bHbED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bHbFD_aEeOMf4ibmUJukw">
            <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="_-bHbET_aEeOMf4ibmUJukw" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bHbEj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-kahAD_aEeOMf4ibmUJukw" name="getAllergyStatusObservation" isQuery="true" bodyCondition="_-kahAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kahAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kahAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kahBD_aEeOMf4ibmUJukw">
            <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="_-kahAT_aEeOMf4ibmUJukw" type="_2FRuAhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kahAj_aEeOMf4ibmUJukw" 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="_-bHbFT_aEeOMf4ibmUJukw" name="AgeObservationTemplateId" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bICID_aEeOMf4ibmUJukw">
          <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="_-bJQQD_aEeOMf4ibmUJukw" name="AgeObservationClassCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bJQQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bJ3UD_aEeOMf4ibmUJukw" name="AgeObservationMoodCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bJ3UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bMTkD_aEeOMf4ibmUJukw" name="AgeObservationCodeP" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bMTkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bLFcD_aEeOMf4ibmUJukw" name="AgeObservationCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bLFcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '445518008' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bNhsD_aEeOMf4ibmUJukw" name="AgeObservationStatusCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bNhsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bOv0D_aEeOMf4ibmUJukw" name="AgeObservationStatusCodeP" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bOv0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bP98D_aEeOMf4ibmUJukw" name="AgeObservationValue" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bP98T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-bQlAD_aEeOMf4ibmUJukw" name="HealthStatusObservationTemplateId" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bQlAT_aEeOMf4ibmUJukw">
          <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="_-bSaMD_aEeOMf4ibmUJukw" name="HealthStatusObservationClassCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bSaMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bToUD_aEeOMf4ibmUJukw" name="HealthStatusObservationMoodCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bToUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bU2cD_aEeOMf4ibmUJukw" name="HealthStatusObservationCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bU2cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '11323-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bWEkD_aEeOMf4ibmUJukw" name="HealthStatusObservationText" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bWEkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bWroD_aEeOMf4ibmUJukw" name="HealthStatusObservationStatusCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bXSsD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bYg0D_aEeOMf4ibmUJukw" name="HealthStatusObservationValue" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bYg0T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bZu8D_aEeOMf4ibmUJukw" name="HealthStatusObservationValueP" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bZu8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-ba9ED_aEeOMf4ibmUJukw" name="ReactionObservationTemplateId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ba9ET_aEeOMf4ibmUJukw">
          <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="_-bencD_aEeOMf4ibmUJukw" name="ReactionObservationClassCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bencT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bf1kD_aEeOMf4ibmUJukw" name="ReactionObservationMoodCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bf1kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bgcoD_aEeOMf4ibmUJukw" name="ReactionObservationId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bgcoT_aEeOMf4ibmUJukw">
          <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="_-bhqwD_aEeOMf4ibmUJukw" name="ReactionObservationCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bhqwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-biR0D_aEeOMf4ibmUJukw" name="ReactionObservationText" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-biR0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bjf8D_aEeOMf4ibmUJukw" name="ReactionObservationStatusCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bjf8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bkuED_aEeOMf4ibmUJukw" name="ReactionObservationEffectiveTime" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bkuET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-blVID_aEeOMf4ibmUJukw" name="ReactionObservationValue" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-blVIT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bxiYD_aEeOMf4ibmUJukw" name="ReactionObservationSeverityObservation" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bxiYT_aEeOMf4ibmUJukw">
          <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="_-mkdID_aEeOMf4ibmUJukw" name="ReactionObservationProcedureActivityProcedure" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mkdIT_aEeOMf4ibmUJukw">
          <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="_-mlEMD_aEeOMf4ibmUJukw" name="ReactionObservationMedicationActivity" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mlEMT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-byJcD_aEeOMf4ibmUJukw" name="getSeverityObservation" isQuery="true" bodyCondition="_-byJcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-byJcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-byJcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-byJdD_aEeOMf4ibmUJukw">
            <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="_-byJcT_aEeOMf4ibmUJukw" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-byJcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mkdIj_aEeOMf4ibmUJukw" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_-mkdJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mkdJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mkdIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mkdJj_aEeOMf4ibmUJukw">
            <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="_-mkdIz_aEeOMf4ibmUJukw" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mkdJD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mlrQD_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-mlrQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mlrQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mlrQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mlrRD_aEeOMf4ibmUJukw">
            <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="_-mlrQT_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mlrQj_aEeOMf4ibmUJukw" 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="_-bnKUD_aEeOMf4ibmUJukw" name="SeverityObservationTemplateId" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bnKUT_aEeOMf4ibmUJukw">
          <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="_-bo_gD_aEeOMf4ibmUJukw" name="SeverityObservationClassCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bo_gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bpmkD_aEeOMf4ibmUJukw" name="SeverityObservationMoodCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bpmkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bq0sD_aEeOMf4ibmUJukw" name="SeverityObservationCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bq0sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'SEV' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bsC0D_aEeOMf4ibmUJukw" name="SeverityObservationText" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bsC0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-btQ8D_aEeOMf4ibmUJukw" name="SeverityObservationStatusCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-btQ8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bufED_aEeOMf4ibmUJukw" name="SeverityObservationValue" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bufET_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="_-bwUQD_aEeOMf4ibmUJukw" name="SeverityObservationInterpretationCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bwUQT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = element.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.5.83' and (value.code = 'A' or value.code = 'HX' or value.code = 'LX' or value.code = 'B' or value.code = 'Carrier' or value.code = 'D' or value.code = 'U' or value.code = 'IND' or value.code = 'I' or value.code = 'MS' or value.code = 'NEG' or value.code = 'N' or value.code = 'POS' or value.code = 'R' or value.code = 'S' or value.code = 'VS' or value.code = 'W')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2FODoBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2FRuAhSVEeGGzu7fmW9pXw" name="AllergyStatusObservation">
      <ownedComment xmi:id="_2FRuAxSVEeGGzu7fmW9pXw" annotatedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <body>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.</body>
      </ownedComment>
      <ownedRule xmi:id="_-byJdT_aEeOMf4ibmUJukw" name="AllergyStatusObservationTemplateId" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-byJdj_aEeOMf4ibmUJukw">
          <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="_-bzXkD_aEeOMf4ibmUJukw" name="AllergyStatusObservationClassCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bzXkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-bz-oD_aEeOMf4ibmUJukw" name="AllergyStatusObservationMoodCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-bz-oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b1MwD_aEeOMf4ibmUJukw" name="AllergyStatusObservationCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b1MwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b3B8D_aEeOMf4ibmUJukw" name="AllergyStatusObservationStatusCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b3B8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b4QED_aEeOMf4ibmUJukw" name="AllergyStatusObservationValue" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b4QET_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = element.oclAsType(datatypes::CE) in 
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="../../org.openhealthtools.mdht.uml.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="_-b5eMD_aEeOMf4ibmUJukw" name="CommentActivityTemplateId" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b5eMT_aEeOMf4ibmUJukw">
          <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="_-b7TYD_aEeOMf4ibmUJukw" name="CommentActivityClassCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b7TYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b8hgD_aEeOMf4ibmUJukw" name="CommentActivityMoodCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b8hgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b9voD_aEeOMf4ibmUJukw" name="CommentActivityCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b9voT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '48767-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-b-9wD_aEeOMf4ibmUJukw" name="CommentActivityText" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-b-9wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cDPMD_aEeOMf4ibmUJukw" name="CommentActivityAuthor" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cDPMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-0-skD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0-skT_aEeOMf4ibmUJukw">
          <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="_-0-skj_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0-skz_aEeOMf4ibmUJukw">
          <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="_-0-slD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0-slT_aEeOMf4ibmUJukw">
          <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="_-0_ToD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_ToT_aEeOMf4ibmUJukw">
          <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="_-0_Toj_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_Toz_aEeOMf4ibmUJukw">
          <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="_-0_TpD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_TpT_aEeOMf4ibmUJukw">
          <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="_-0_6sD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_6sT_aEeOMf4ibmUJukw">
          <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="_-0_6sj_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_6sz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-0_6tD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorHasPersonOrOrganization" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-0_6tT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(assignedPerson->one(element | not element.oclIsUndefined() and element.name->size() = 1) or representedOrganization->one(element | not element.oclIsUndefined() and element.name->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1AhwD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorAssignPersonName" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1AhwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject(assignedPerson.name->forAll(name | name.oclIsTypeOf(datatypes::PN)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1Ahwj_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorAddr" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1Ahwz_aEeOMf4ibmUJukw">
          <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="_-1AhxD_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthorId" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1AhxT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null).assignedAuthor->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1BI0D_aEeOMf4ibmUJukw" name="CommentActivityAuthorTime" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1BI0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1BI0j_aEeOMf4ibmUJukw" name="CommentActivityAuthorAssignedAuthor" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1BI0z_aEeOMf4ibmUJukw">
          <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="_2FrWohSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="MedicationActivityEffectiveTimeIVLTS" 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</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4CqJMEFiEeG2TLeVPbv7pg" name="MedicationActivityEffectiveTimeLow" 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="MedicationActivityEffectiveTimeHigh" 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="_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="_Mu_RcEIrEeG4bZAl2IGXmQ" name="MedicationActivityPreconditionSubstanceAdmTypeCode" constrainedElement="_L0emcEIqEeG4bZAl2IGXmQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_TUKOoEIrEeG4bZAl2IGXmQ">
          <language>OCL</language>
          <body>self.precondition->select(par : cda::Precondition | par.oclIsKindOf(consol::PreconditionForSubstanceAdministration))->forAll(p : cda::Precondition | p.typeCode=vocab::ActRelationshipType::PRCN)</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="_-cEdVD_aEeOMf4ibmUJukw" name="MedicationActivityTemplateId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cEdVT_aEeOMf4ibmUJukw">
          <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="_-cKj8D_aEeOMf4ibmUJukw" name="MedicationActivityClassCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cKj8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cLyED_aEeOMf4ibmUJukw" name="MedicationActivityMoodCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cLyET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and 
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in 
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cNAMD_aEeOMf4ibmUJukw" name="MedicationActivityId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cNAMT_aEeOMf4ibmUJukw">
          <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="_-cNnQD_aEeOMf4ibmUJukw" name="MedicationActivityCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cNnQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cO1YD_aEeOMf4ibmUJukw" name="MedicationActivityStatusCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cO1YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cQqkD_aEeOMf4ibmUJukw" name="MedicationActivityRouteCodeP" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cQqkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cQDgD_aEeOMf4ibmUJukw" name="MedicationActivityRouteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cQDgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and (value.code = 'C38192' or value.code = 'C38193' or value.code = 'C38194' or value.code = 'C38675' or value.code = 'C38197' or value.code = 'C38633' or value.code = 'C38205' or value.code = 'C38206' or value.code = 'C38208' or value.code = 'C38209' or value.code = 'C38210' or value.code = 'C38211' or value.code = 'C38212' or value.code = 'C38200' or value.code = 'C38215' or value.code = 'C38219' or value.code = 'C38220' or value.code = 'C38221' or value.code = 'C38222' or value.code = 'C38223' or value.code = 'C38224' or value.code = 'C38225' or value.code = 'C38226' or value.code = 'C38227' or value.code = 'C38228' or value.code = 'C38229' or value.code = 'C38230' or value.code = 'C38231' or value.code = 'C38232' or value.code = 'C38233' or value.code = 'C38234' or value.code = 'C38217' or value.code = 'C38218' or value.code = 'C38235' or value.code = 'C38238' or value.code = 'C38239' or value.code = 'C38240' or value.code = 'C38241' or value.code = 'C38242' or value.code = 'C38243' or value.code = 'C38245' or value.code = 'C38246' or value.code = 'C38247' or value.code = 'C38249' or value.code = 'C38250' or value.code = 'C38251' or value.code = 'C38252' or value.code = 'C38253' or value.code = 'C38254' or value.code = 'C28161' or value.code = 'C38255' or value.code = 'C38256' or value.code = 'C38257' or value.code = 'C38258' or value.code = 'C38259' or value.code = 'C38260' or value.code = 'C38261' or value.code = 'C38262' or value.code = 'C38263' or value.code = 'C38264' or value.code = 'C38265' or value.code = 'C38266' or value.code = 'C38267' or value.code = 'C38207' or value.code = 'C38268' or value.code = 'C38269' or value.code = 'C38270' or value.code = 'C38272' or value.code = 'C38273' or value.code = 'C38276' or value.code = 'C38277' or value.code = 'C38278' or value.code = 'C38280' or value.code = 'C38203' or value.code = 'C38281' or value.code = 'C38282' or value.code = 'C38284' or value.code = 'C38285' or value.code = 'C48623' or value.code = 'C38286' or value.code = 'C38287' or value.code = 'C38288' or value.code = 'C38289' or value.code = 'C38291' or value.code = 'C38676' or value.code = 'C38292' or value.code = 'C38677' or value.code = 'C38293' or value.code = 'C38294' or value.code = 'C38295' or value.code = 'C38216' or value.code = 'C38296' or value.code = 'C38198' or value.code = 'C38297' or value.code = 'C38298' or value.code = 'C38299' or value.code = 'C38300' or value.code = 'C38301' or value.code = 'C38304' or value.code = 'C38305' or value.code = 'C38283' or value.code = 'C38307' or value.code = 'C38308' or value.code = 'C38309' or value.code = 'C38312' or value.code = 'C38271'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cTt4D_aEeOMf4ibmUJukw" name="MedicationActivityApproachSiteCodeP" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cTt4T_aEeOMf4ibmUJukw">
          <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="_-cSfwD_aEeOMf4ibmUJukw" name="MedicationActivityApproachSiteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cSfwT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cUU8D_aEeOMf4ibmUJukw" name="MedicationActivityDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cUU8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cVjED_aEeOMf4ibmUJukw" name="MedicationActivityRateQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cVjET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.rateQuantity.oclIsUndefined() or self.rateQuantity.isNullFlavorUndefined()) implies (not self.rateQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cWKID_aEeOMf4ibmUJukw" name="MedicationActivityMaxDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cWKIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.maxDoseQuantity.oclIsUndefined() or self.maxDoseQuantity.isNullFlavorUndefined()) implies (not self.maxDoseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cXYQD_aEeOMf4ibmUJukw" name="MedicationActivityAdministrationUnitCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cXYQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in 
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cZNcD_aEeOMf4ibmUJukw" name="MedicationActivityText" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cZNcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cZ0gD_aEeOMf4ibmUJukw" name="MedicationActivityRepeatNumber" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cZ0gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cbCoD_aEeOMf4ibmUJukw" name="MedicationActivityMedicationSupplyOrder" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cbCoT_aEeOMf4ibmUJukw">
          <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="_-cbptT_aEeOMf4ibmUJukw" name="MedicationActivityReactionObservation" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cbptj_aEeOMf4ibmUJukw">
          <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="_-ccQxT_aEeOMf4ibmUJukw" name="MedicationActivityPerformer" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ccQxj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cqTMD_aEeOMf4ibmUJukw" name="MedicationActivityInstructions" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cqTMT_aEeOMf4ibmUJukw">
          <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="_-jjlYD_aEeOMf4ibmUJukw" name="MedicationActivityIndication" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jjlYT_aEeOMf4ibmUJukw">
          <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="_-jvLkD_aEeOMf4ibmUJukw" name="MedicationActivityMedicationDispense" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jvLkT_aEeOMf4ibmUJukw">
          <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="_-jxn0D_aEeOMf4ibmUJukw" name="MedicationActivityPrecondition" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jxn0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(consol::PreconditionForSubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jyO4D_aEeOMf4ibmUJukw" name="MedicationActivityDrugVehicle" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jyO4T_aEeOMf4ibmUJukw">
          <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="_-s7j0j_aEeOMf4ibmUJukw" name="MedicationActivityConsumable" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s7j0z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1EzMD_aEeOMf4ibmUJukw" name="MedicationActivityConsumableMedicationInformation" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1EzMT_aEeOMf4ibmUJukw">
          <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>
      <generalization xmi:id="_2H1SwhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-cbpsD_aEeOMf4ibmUJukw" name="getMedicationSupplyOrder" isQuery="true" bodyCondition="_-cbpsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-cbpsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-cbpsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cbptD_aEeOMf4ibmUJukw">
            <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="_-cbpsT_aEeOMf4ibmUJukw" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-cbpsj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ccQwD_aEeOMf4ibmUJukw" name="getReactionObservation" isQuery="true" bodyCondition="_-ccQwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ccQwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ccQwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ccQxD_aEeOMf4ibmUJukw">
            <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="_-ccQwT_aEeOMf4ibmUJukw" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ccQwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-cq6QD_aEeOMf4ibmUJukw" name="getInstructions" isQuery="true" bodyCondition="_-cq6Qz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-cq6Qz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-cq6QD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cq6RD_aEeOMf4ibmUJukw">
            <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="_-cq6QT_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-cq6Qj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jkMcD_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-jkMcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jkMcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jkMcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jkMdD_aEeOMf4ibmUJukw">
            <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="_-jkMcT_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jkMcj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jvLkj_aEeOMf4ibmUJukw" name="getMedicationDispenses" isQuery="true" bodyCondition="_-jvyoT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jvyoT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jvLkj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jvyoj_aEeOMf4ibmUJukw">
            <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="_-jvLkz_aEeOMf4ibmUJukw" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jvyoD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jy18D_aEeOMf4ibmUJukw" name="getDrugVehicles" isQuery="true" bodyCondition="_-jy18z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jy18z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jy18D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jy19D_aEeOMf4ibmUJukw">
            <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="_-jy18T_aEeOMf4ibmUJukw" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jy18j_aEeOMf4ibmUJukw" 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="_-cc30D_aEeOMf4ibmUJukw" name="ProductInstanceTemplateId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cde4D_aEeOMf4ibmUJukw">
          <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="_-ceF8D_aEeOMf4ibmUJukw" name="ProductInstanceClassCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ceF8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cetAD_aEeOMf4ibmUJukw" name="ProductInstanceId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cetAT_aEeOMf4ibmUJukw">
          <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="_-q5jgD_aEeOMf4ibmUJukw" name="ProductInstanceScopingEntity" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q5jgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.scopingEntity->one(scopingEntity : cda::Entity | not scopingEntity.oclIsUndefined() and scopingEntity.oclIsKindOf(cda::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q6KkD_aEeOMf4ibmUJukw" name="ProductInstancePlayingDevice" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q6KkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.playingDevice->one(playingDevice : cda::Device | not playingDevice.oclIsUndefined() and playingDevice.oclIsKindOf(cda::Device))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1FaQD_aEeOMf4ibmUJukw" name="ProductInstanceScopingEntityId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1FaQT_aEeOMf4ibmUJukw">
          <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="_-1GBUD_aEeOMf4ibmUJukw" name="ProductInstancePlayingDeviceCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1GBUT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-chwUD_aEeOMf4ibmUJukw" name="InstructionsTemplateId" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-chwUT_aEeOMf4ibmUJukw">
          <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="_-cjlgD_aEeOMf4ibmUJukw" name="InstructionsClassCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cjlgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ckzoD_aEeOMf4ibmUJukw" name="InstructionsMoodCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ckzoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cmo0D_aEeOMf4ibmUJukw" name="InstructionsCodeP" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cmo0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cmBwD_aEeOMf4ibmUJukw" name="InstructionsCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cmBwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cn28D_aEeOMf4ibmUJukw" name="InstructionsText" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cn28T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cpFED_aEeOMf4ibmUJukw" name="InstructionsStatusCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cpFET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2HCBgRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-crhUD_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityTemplateId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-crhUT_aEeOMf4ibmUJukw">
          <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="_-csvcD_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityClassCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-csvcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ct9kD_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityMoodCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ct9kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and 
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in 
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cvLsD_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cvLsT_aEeOMf4ibmUJukw">
          <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="_-cwZ0D_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityStatusCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cwZ0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cxA4D_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityEffectiveTime" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cxA4T_aEeOMf4ibmUJukw">
          <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="_-cxn8D_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityQuantity" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cxn8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-cy2ED_aEeOMf4ibmUJukw" name="NonMedicinalSupplyActivityProductInstance" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-cy2ET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-czdID_aEeOMf4ibmUJukw" name="getProductInstance" isQuery="true" bodyCondition="_-czdIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-czdIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-czdID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-czdJD_aEeOMf4ibmUJukw">
            <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="_-czdIT_aEeOMf4ibmUJukw" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-czdIj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2H6yUBSVEeGGzu7fmW9pXw" name="ProblemConcernAct">
      <ownedComment xmi:id="_KPRpwCApEeGetMjKLkqR8g">
        <body>Observations of problems or other clinical statements captured at a point in time are wrapped in a &quot;Concern&quot; act, which represents the ongoing process tracked over time. This allows for binding related observations of problems. For example, the observation of &quot;Acute MI&quot; in 2004 can be related to the observation of &quot;History of MI&quot; in 2006 because they are the same concern. The conformance statements in this section define an outer &quot;problem act&quot; (representing the &quot;Concern&quot;) that can contain a nested &quot;problem observation&quot; or other nested clinical statements.</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="_-czdJT_aEeOMf4ibmUJukw" name="ProblemConcernActTemplateId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-czdJj_aEeOMf4ibmUJukw">
          <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="_-c1SUD_aEeOMf4ibmUJukw" name="ProblemConcernActClassCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c1SUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c15YD_aEeOMf4ibmUJukw" name="ProblemConcernActMoodCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c15YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c3HgD_aEeOMf4ibmUJukw" name="ProblemConcernActId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c3HgT_aEeOMf4ibmUJukw">
          <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="_-c48sD_aEeOMf4ibmUJukw" name="ProblemConcernActCodeP" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c48sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c3ukD_aEeOMf4ibmUJukw" name="ProblemConcernActCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c3ukT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'CONC' and value.codeSystem = '2.16.840.1.113883.5.6')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c6K0D_aEeOMf4ibmUJukw" name="ProblemConcernActStatusCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c6K0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'active' or value.code = 'suspended' or value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c7Y8D_aEeOMf4ibmUJukw" name="ProblemConcernActEffectiveTime" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c7Y8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kzilT_aEeOMf4ibmUJukw" name="ProblemConcernActProblemObservation" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k0JoD_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-k0JoT_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-k0JpD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k0JpD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k0JoT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k0JpT_aEeOMf4ibmUJukw">
            <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="_-k0Joj_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k0Joz_aEeOMf4ibmUJukw" 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="_-c8nET_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c8nEj_aEeOMf4ibmUJukw">
          <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="_-c_DUD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentCodeP" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c_DUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-c91MD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-c91MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '34133-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dARcD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentLanguageCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dARcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-suvgD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOf" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-suvgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sv9oD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAuthor" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sv9oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sxLwD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAllergiesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sxLwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sxy0D_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentMedicationsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sxy0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-syZ4D_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentProblemSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-syZ4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-szA8z_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentProceduresSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-szA9D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-szoBT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentResultsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-szoBj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s0PFT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAdvanceDirectivesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s0PFj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s02JT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentEncountersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s02Jj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s1dNT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentFamilyHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s1dNj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s2rUD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentFunctionalStatusSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s2rUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s3SYD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentImmunizationsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s3SYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s35cj_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentMedicalEquipmentSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s35cz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s4ghT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentPayersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s4ghj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s5HlT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentPlanOfCareSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s5Hlj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s5upT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentSocialHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s5upj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s6VtT_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentVitalSignsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s6Vtj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1H2gD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1H2gT_aEeOMf4ibmUJukw">
          <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="_-1H2gj_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1H2gz_aEeOMf4ibmUJukw">
          <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="_-1JEoD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1JEoT_aEeOMf4ibmUJukw">
          <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="_-1JEoj_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1JEoz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1JrsD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntityId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1JrsT_aEeOMf4ibmUJukw">
          <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="_-1Jrsj_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerTypeCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1Jrsz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null).performer->excluding(null)->reject(typeCode=vocab::x_ServiceEventPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1JrtD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformerAssignedEntity" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1JrtT_aEeOMf4ibmUJukw">
          <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="_-1KSwD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventClassCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1KSwT_aEeOMf4ibmUJukw">
          <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="_-1KSwj_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTime" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1KSwz_aEeOMf4ibmUJukw">
          <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="_-1KSxD_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEventPerformer" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1KSxT_aEeOMf4ibmUJukw">
          <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="_-1K50D_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentDocumentationOfServiceEvent" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1K50T_aEeOMf4ibmUJukw">
          <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="_-1Lg4D_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAuthorAssignedAuthorHasAssignedPersonOrRepresentedOrganization" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1Lg4T_aEeOMf4ibmUJukw">
          <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="_-1MH8D_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAuthorAssignedAuthorHasRepresentOrganization" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1MH8T_aEeOMf4ibmUJukw">
          <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="_-1MH8j_aEeOMf4ibmUJukw" name="ContinuityOfCareDocumentAuthorAssignedAuthor" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1MH8z_aEeOMf4ibmUJukw">
          <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="_-sxLwj_aEeOMf4ibmUJukw" name="getAllergiesSection" isQuery="true" bodyCondition="_-sxLxT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sxLxT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sxLwj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sxLxj_aEeOMf4ibmUJukw">
            <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="_-sxLwz_aEeOMf4ibmUJukw" type="_2LMIwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sxLxD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sxy0j_aEeOMf4ibmUJukw" name="getMedicationsSection" isQuery="true" bodyCondition="_-sxy1T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sxy1T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sxy0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sxy1j_aEeOMf4ibmUJukw">
            <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="_-sxy0z_aEeOMf4ibmUJukw" type="_2NIpgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sxy1D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-syZ4j_aEeOMf4ibmUJukw" name="getProblemSection" isQuery="true" bodyCondition="_-szA8T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-szA8T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-syZ4j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-szA8j_aEeOMf4ibmUJukw">
            <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="_-syZ4z_aEeOMf4ibmUJukw" type="_2LSPYBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-szA8D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-szoAD_aEeOMf4ibmUJukw" name="getProceduresSection" isQuery="true" bodyCondition="_-szoAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-szoAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-szoAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-szoBD_aEeOMf4ibmUJukw">
            <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="_-szoAT_aEeOMf4ibmUJukw" type="_2OAzQRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-szoAj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s0PED_aEeOMf4ibmUJukw" name="getResultsSection" isQuery="true" bodyCondition="_-s0PEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s0PEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s0PED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s0PFD_aEeOMf4ibmUJukw">
            <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="_-s0PET_aEeOMf4ibmUJukw" type="_2Js7AxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s0PEj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s02ID_aEeOMf4ibmUJukw" name="getAdvanceDirectivesSection" isQuery="true" bodyCondition="_-s02Iz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s02Iz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s02ID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s02JD_aEeOMf4ibmUJukw">
            <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="_-s02IT_aEeOMf4ibmUJukw" type="_2KgzUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s02Ij_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s1dMD_aEeOMf4ibmUJukw" name="getEncountersSection" isQuery="true" bodyCondition="_-s1dMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s1dMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s1dMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s1dND_aEeOMf4ibmUJukw">
            <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="_-s1dMT_aEeOMf4ibmUJukw" type="_2LWg0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s1dMj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s2EQD_aEeOMf4ibmUJukw" name="getFamilyHistorySection" isQuery="true" bodyCondition="_-s2EQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s2EQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s2EQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s2ERD_aEeOMf4ibmUJukw">
            <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="_-s2EQT_aEeOMf4ibmUJukw" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s2EQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s2rUj_aEeOMf4ibmUJukw" name="getFunctionalStatusSection" isQuery="true" bodyCondition="_-s2rVT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s2rVT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s2rUj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s2rVj_aEeOMf4ibmUJukw">
            <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="_-s2rUz_aEeOMf4ibmUJukw" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s2rVD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s3SYj_aEeOMf4ibmUJukw" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_-s35cD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s35cD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s3SYj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s35cT_aEeOMf4ibmUJukw">
            <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="_-s3SYz_aEeOMf4ibmUJukw" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s3SZD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s4ggD_aEeOMf4ibmUJukw" name="getMedicalEquipmentSection" isQuery="true" bodyCondition="_-s4ggz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s4ggz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s4ggD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s4ghD_aEeOMf4ibmUJukw">
            <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="_-s4ggT_aEeOMf4ibmUJukw" type="_2KEucBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s4ggj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s5HkD_aEeOMf4ibmUJukw" name="getPayersSection" isQuery="true" bodyCondition="_-s5Hkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s5Hkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s5HkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s5HlD_aEeOMf4ibmUJukw">
            <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="_-s5HkT_aEeOMf4ibmUJukw" type="_2MV_UBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s5Hkj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s5uoD_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-s5uoz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s5uoz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s5uoD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s5upD_aEeOMf4ibmUJukw">
            <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="_-s5uoT_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s5uoj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s6VsD_aEeOMf4ibmUJukw" name="getSocialHistorySection" isQuery="true" bodyCondition="_-s6Vsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s6Vsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s6VsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s6VtD_aEeOMf4ibmUJukw">
            <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="_-s6VsT_aEeOMf4ibmUJukw" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s6Vsj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-s68wD_aEeOMf4ibmUJukw" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_-s68wz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-s68wz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-s68wD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s68xD_aEeOMf4ibmUJukw">
            <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="_-s68wT_aEeOMf4ibmUJukw" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-s68wj_aEeOMf4ibmUJukw" 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="_-dKpgT_aEeOMf4ibmUJukw" name="FamilyHistorySectionTemplateId" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dKpgj_aEeOMf4ibmUJukw">
          <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="_-dL3oD_aEeOMf4ibmUJukw" name="FamilyHistorySectionCode" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dL3oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10157-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dNFwD_aEeOMf4ibmUJukw" name="FamilyHistorySectionCodeP" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dNFwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dOT4D_aEeOMf4ibmUJukw" name="FamilyHistorySectionTitle" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dOT4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dO68D_aEeOMf4ibmUJukw" name="FamilyHistorySectionText" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dO68T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dPiAD_aEeOMf4ibmUJukw" name="FamilyHistorySectionFamilyHistory" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dQJED_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-dQJET_aEeOMf4ibmUJukw" name="getFamilyHistories" isQuery="true" bodyCondition="_-dQJFD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-dQJFD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-dQJET_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dQJFT_aEeOMf4ibmUJukw">
            <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="_-dQJEj_aEeOMf4ibmUJukw" type="_2IbIoBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-dQJEz_aEeOMf4ibmUJukw" 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="_-dQwID_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerTemplateId" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dQwIT_aEeOMf4ibmUJukw">
          <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="_-dRXMD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerClassCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dRXMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dSlUD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerMoodCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dSlUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dn8gD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerFamilyHistoryObservation" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dn8gT_aEeOMf4ibmUJukw">
          <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="_-ufqED_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ufqET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.subject->one(subject : cda::Subject | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::Subject))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1PLQD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PLQT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = administrativeGenderCode.oclAsType(datatypes::CE) in 
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="_-1PLQj_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PLQz_aEeOMf4ibmUJukw">
          <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="_-1PLRD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonBirthTime" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PLRT_aEeOMf4ibmUJukw">
          <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="_-1PyUD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedInd" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PyUT_aEeOMf4ibmUJukw">
          <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="_-1PyUj_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCDeceasedTime" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PyUz_aEeOMf4ibmUJukw">
          <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="_-1PyVD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonSDTCId" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1PyVT_aEeOMf4ibmUJukw">
          <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="_-1QZYD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectClassCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1QZYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.subject->excluding(null).relatedSubject->excluding(null)->reject(classCode=vocab::x_DocumentSubject::PRS)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1QZYj_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1QZYz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
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="_-1QZZD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectCodeP" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1QZZT_aEeOMf4ibmUJukw">
          <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="_-1QZZj_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubjectSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1QZZz_aEeOMf4ibmUJukw">
          <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="_-1RAcD_aEeOMf4ibmUJukw" name="FamilyHistoryOrganizerSubjectRelatedSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1RAcT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-dn8gj_aEeOMf4ibmUJukw" name="getFamilyHistoryObservations" isQuery="true" bodyCondition="_-dojkD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-dojkD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-dn8gj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dojkT_aEeOMf4ibmUJukw">
            <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="_-dn8gz_aEeOMf4ibmUJukw" type="_2IpyIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-dn8hD_aEeOMf4ibmUJukw" 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="_-dcWUj_aEeOMf4ibmUJukw" name="FamilyHistoryObservationTemplateId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dc9YD_aEeOMf4ibmUJukw">
          <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="_-ddkcD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationClassCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ddkcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-deykD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationMoodCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-deykT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dfZoD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dfZoT_aEeOMf4ibmUJukw">
          <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="_-dh14D_aEeOMf4ibmUJukw" name="FamilyHistoryObservationCodeP" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dh14T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dgnwD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dgnwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-djEAD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationStatusCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-djEAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dkSID_aEeOMf4ibmUJukw" name="FamilyHistoryObservationEffectiveTime" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dkSIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dlgQD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationValue" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dlgQT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dmuYD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationAgeObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dmuYT_aEeOMf4ibmUJukw">
          <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="_-k1XwD_aEeOMf4ibmUJukw" name="FamilyHistoryObservationFamilyHistoryDeathObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k1XwT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-dnVcD_aEeOMf4ibmUJukw" name="getAgeObservation" isQuery="true" bodyCondition="_-dnVcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-dnVcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-dnVcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dnVdD_aEeOMf4ibmUJukw">
            <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="_-dnVcT_aEeOMf4ibmUJukw" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-dnVcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k1-0D_aEeOMf4ibmUJukw" name="getFamilyHistoryDeathObservation" isQuery="true" bodyCondition="_-k1-0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k1-0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k1-0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k1-1D_aEeOMf4ibmUJukw">
            <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="_-k1-0T_aEeOMf4ibmUJukw" type="_2SC-sBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k1-0j_aEeOMf4ibmUJukw" 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="_-dojkj_aEeOMf4ibmUJukw" name="SocialHistorySectionTemplateId" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dojkz_aEeOMf4ibmUJukw">
          <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="_-dpxsD_aEeOMf4ibmUJukw" name="SocialHistorySectionCode" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dpxsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '29762-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dq_0D_aEeOMf4ibmUJukw" name="SocialHistorySectionCodeP" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dq_0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dsN8D_aEeOMf4ibmUJukw" name="SocialHistorySectionTitle" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dsN8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ds1AD_aEeOMf4ibmUJukw" name="SocialHistorySectionText" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ds1AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-duDID_aEeOMf4ibmUJukw" name="SocialHistorySectionSocialHistoryObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-duDIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SocialHistoryObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lGdgD_aEeOMf4ibmUJukw" name="SocialHistorySectionPregnancyObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lGdgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PregnancyObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vCcoD_aEeOMf4ibmUJukw" name="SocialHistorySectionSmokingStatusObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vCcoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::SmokingStatusObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vDDtT_aEeOMf4ibmUJukw" name="SocialHistorySectionTobaccoUse" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vDDtj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-duqMD_aEeOMf4ibmUJukw" name="getSocialHistoryObservations" isQuery="true" bodyCondition="_-duqMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-duqMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-duqMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-duqND_aEeOMf4ibmUJukw">
            <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="_-duqMT_aEeOMf4ibmUJukw" type="_2JOZ4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-duqMj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-lHEkD_aEeOMf4ibmUJukw" name="getPregnancyObservations" isQuery="true" bodyCondition="_-lHEkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-lHEkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-lHEkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lHElD_aEeOMf4ibmUJukw">
            <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="_-lHEkT_aEeOMf4ibmUJukw" type="_2N6soBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-lHEkj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-vDDsD_aEeOMf4ibmUJukw" name="getSmokingStatusObservations" isQuery="true" bodyCondition="_-vDDsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vDDsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vDDsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vDDtD_aEeOMf4ibmUJukw">
            <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="_-vDDsT_aEeOMf4ibmUJukw" type="_RYJj0OWQEeGKmvzED_He2w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vDDsj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-vDqwD_aEeOMf4ibmUJukw" name="getTobaccoUses" isQuery="true" bodyCondition="_-vDqwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vDqwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vDqwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vDqxD_aEeOMf4ibmUJukw">
            <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="_-vDqwT_aEeOMf4ibmUJukw" type="_gIH_QOWQEeGKmvzED_He2w" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vDqwj_aEeOMf4ibmUJukw" 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="_-duqNT_aEeOMf4ibmUJukw" name="SocialHistoryObservationTemplateId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-duqNj_aEeOMf4ibmUJukw">
          <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="_-dwfYD_aEeOMf4ibmUJukw" name="SocialHistoryObservationClassCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dwfYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dxtgD_aEeOMf4ibmUJukw" name="SocialHistoryObservationMoodCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dxtgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dyUkD_aEeOMf4ibmUJukw" name="SocialHistoryObservationId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dy7oD_aEeOMf4ibmUJukw">
          <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="_-d0w0D_aEeOMf4ibmUJukw" name="SocialHistoryObservationCodeP" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d0w0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-dzisD_aEeOMf4ibmUJukw" name="SocialHistoryObservationCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-dzisT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-d1-8D_aEeOMf4ibmUJukw" name="SocialHistoryObservationStatusCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d1-8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-d3NED_aEeOMf4ibmUJukw" name="SocialHistoryObservationValue" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d3NET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-d30IT_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d4bMD_aEeOMf4ibmUJukw">
          <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="_-d6QYD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d6QYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-d5CQD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalCode" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d5CQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-d8FkD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalTitle" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d8FkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-d9TsD_aEeOMf4ibmUJukw" name="ResultsSectionText" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d9TsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m50VT_aEeOMf4ibmUJukw" name="ResultsSectionResultOrganizer" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m50Vj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-m6bYD_aEeOMf4ibmUJukw" name="getConsolResultOrganizers" isQuery="true" bodyCondition="_-m6bYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m6bYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m6bYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m6bZD_aEeOMf4ibmUJukw">
            <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="_-m6bYT_aEeOMf4ibmUJukw" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m6bYj_aEeOMf4ibmUJukw" 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="_-d96wD_aEeOMf4ibmUJukw" name="ResultOrganizerTemplateId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d96wT_aEeOMf4ibmUJukw">
          <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="_-d_I4D_aEeOMf4ibmUJukw" name="ResultOrganizerClassCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-d_I4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eAXAD_aEeOMf4ibmUJukw" name="ResultOrganizerMoodCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eAXAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eA-ED_aEeOMf4ibmUJukw" name="ResultOrganizerId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eA-ET_aEeOMf4ibmUJukw">
          <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="_-eDaUD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCodeP" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eDaUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eCMMD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eCMMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
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="_-eEocD_aEeOMf4ibmUJukw" name="ResultOrganizerCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eEocT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eFPgD_aEeOMf4ibmUJukw" name="ResultOrganizerResultObservation" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eFPgT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-eF2kD_aEeOMf4ibmUJukw" name="getResultObservations" isQuery="true" bodyCondition="_-eF2kz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-eF2kz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-eF2kD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eF2lD_aEeOMf4ibmUJukw">
            <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="_-eF2kT_aEeOMf4ibmUJukw" type="_2J1d4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-eF2kj_aEeOMf4ibmUJukw" 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="_-eGdoD_aEeOMf4ibmUJukw" name="ResultObservationTemplateId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eGdoT_aEeOMf4ibmUJukw">
          <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="_-eI54D_aEeOMf4ibmUJukw" name="ResultObservationClassCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eI54T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eKIAD_aEeOMf4ibmUJukw" name="ResultObservationMoodCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eKIAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eKvED_aEeOMf4ibmUJukw" name="ResultObservationId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eKvET_aEeOMf4ibmUJukw">
          <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="_-eL9MD_aEeOMf4ibmUJukw" name="ResultObservationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eL9MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eMkQD_aEeOMf4ibmUJukw" name="ResultObservationText" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eMkQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eNyYD_aEeOMf4ibmUJukw" name="ResultObservationStatusCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eNyYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
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="_-ePAgD_aEeOMf4ibmUJukw" name="ResultObservationStatusCodeP" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ePAgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eQOoD_aEeOMf4ibmUJukw" name="ResultObservationEffectiveTime" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eQOoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eRcwD_aEeOMf4ibmUJukw" name="ResultObservationValue" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eRcwT_aEeOMf4ibmUJukw">
          <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="_-eSD0D_aEeOMf4ibmUJukw" name="ResultObservationInterpretationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eSD0T_aEeOMf4ibmUJukw">
          <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="_-eTR8D_aEeOMf4ibmUJukw" name="ResultObservationMethodCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eTR8T_aEeOMf4ibmUJukw">
          <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="_-eT5AD_aEeOMf4ibmUJukw" name="ResultObservationTargetSiteCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eT5AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | element.oclIsTypeOf(datatypes::CE)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2J-AwRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-eUgED_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionTemplateId" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eUgET_aEeOMf4ibmUJukw">
          <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="_-eVuMD_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionCode" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eVuMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '46264-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eW8UD_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionCodeP" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eW8UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eYKcD_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionTitle" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eYKcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eYxgD_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionText" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eYxgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eZYkD_aEeOMf4ibmUJukw" name="MedicalEquipmentSectionNonMedicinalSupplyActivity" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eZYkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-eZ_oD_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_-eZ_oz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-eZ_oz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-eZ_oD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eZ_pD_aEeOMf4ibmUJukw">
            <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="_-eZ_oT_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-eZ_oj_aEeOMf4ibmUJukw" 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="_-eamsD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionTemplateId" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eamsT_aEeOMf4ibmUJukw">
          <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="_-ebNwD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionCode" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ebNwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '47420-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ecb4D_aEeOMf4ibmUJukw" name="FunctionalStatusSectionTitle" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ecb4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-edqAD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionText" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-edqAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ySk9T_aEeOMf4ibmUJukw" name="FunctionalStatusSectionFunctionalStatusResultOrganizer" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ySk9j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::FunctionalStatusResultOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yTMBT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionCognitiveStatusResultOrganizer" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yTMBj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.organizer.oclIsUndefined() and entry.organizer.oclIsKindOf(consol::CognitiveStatusResultOrganizer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yTzFT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionFunctionalStatusResultObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yTzFj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::FunctionalStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yVBMD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionCognitiveStatusResultObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yVBMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CognitiveStatusResultObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yVoQD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionFunctionalStatusProblemObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yVoQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::FunctionalStatusProblemObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yWPUD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionCognitiveStatusProblemObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yWPUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CognitiveStatusProblemObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yW2YT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionCaregiverCharacteristics" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yW2Yj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::CaregiverCharacteristics))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yXddT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionAssessmentScaleObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yXddj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::AssessmentScaleObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yYEhT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionNonMedicinalSupplyActivity" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yYEhj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::NonMedicinalSupplyActivity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yYrlT_aEeOMf4ibmUJukw" name="FunctionalStatusSectionPressureUlcerObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yYrlj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PressureUlcerObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yZ5sD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionNumberOfPressureUlcersObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yZ5sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yagwD_aEeOMf4ibmUJukw" name="FunctionalStatusSectionHighestPressureUlcerStage" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yagwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-yTMAD_aEeOMf4ibmUJukw" name="getFunctionalStatusResultOrganizers" isQuery="true" bodyCondition="_-yTMAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yTMAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yTMAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yTMBD_aEeOMf4ibmUJukw">
            <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="_-yTMAT_aEeOMf4ibmUJukw" type="_zBlUUOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yTMAj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yTzED_aEeOMf4ibmUJukw" name="getCognitiveStatusResultOrganizers" isQuery="true" bodyCondition="_-yTzEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yTzEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yTzED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yTzFD_aEeOMf4ibmUJukw">
            <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="_-yTzET_aEeOMf4ibmUJukw" type="_jfoCUOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yTzEj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yUaID_aEeOMf4ibmUJukw" name="getFunctionalStatusResultObservations" isQuery="true" bodyCondition="_-yUaIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yUaIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yUaID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yUaJD_aEeOMf4ibmUJukw">
            <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="_-yUaIT_aEeOMf4ibmUJukw" type="_viRU0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yUaIj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yVBMj_aEeOMf4ibmUJukw" name="getCognitiveStatusResultObservations" isQuery="true" bodyCondition="_-yVBNT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yVBNT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yVBMj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yVBNj_aEeOMf4ibmUJukw">
            <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="_-yVBMz_aEeOMf4ibmUJukw" type="_gkBM0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yVBND_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yVoQj_aEeOMf4ibmUJukw" name="getFunctionalStatusProblemObservations" isQuery="true" bodyCondition="_-yVoRT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yVoRT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yVoQj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yVoRj_aEeOMf4ibmUJukw">
            <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="_-yVoQz_aEeOMf4ibmUJukw" type="_rVl5AOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yVoRD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yWPUj_aEeOMf4ibmUJukw" name="getCognitiveStatusProblemObservations" isQuery="true" bodyCondition="_-yWPVT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yWPVT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yWPUj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yW2YD_aEeOMf4ibmUJukw">
            <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="_-yWPUz_aEeOMf4ibmUJukw" type="_dXKPQOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yWPVD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yXdcD_aEeOMf4ibmUJukw" name="getCaregiverCharacteristicss" isQuery="true" bodyCondition="_-yXdcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yXdcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yXdcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yXddD_aEeOMf4ibmUJukw">
            <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="_-yXdcT_aEeOMf4ibmUJukw" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yXdcj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yYEgD_aEeOMf4ibmUJukw" name="getAssessmentScaleObservations" isQuery="true" bodyCondition="_-yYEgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yYEgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yYEgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yYEhD_aEeOMf4ibmUJukw">
            <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="_-yYEgT_aEeOMf4ibmUJukw" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yYEgj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yYrkD_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_-yYrkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yYrkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yYrkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yYrlD_aEeOMf4ibmUJukw">
            <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="_-yYrkT_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yYrkj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yZSoD_aEeOMf4ibmUJukw" name="getPressureUlcerObservations" isQuery="true" bodyCondition="_-yZSoz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yZSoz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yZSoD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yZSpD_aEeOMf4ibmUJukw">
            <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="_-yZSoT_aEeOMf4ibmUJukw" type="_9rQowOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yZSoj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yZ5sj_aEeOMf4ibmUJukw" name="getNumberOfPressureUlcersObservations" isQuery="true" bodyCondition="_-yZ5tT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yZ5tT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yZ5sj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yZ5tj_aEeOMf4ibmUJukw">
            <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="_-yZ5sz_aEeOMf4ibmUJukw" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yZ5tD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yagwj_aEeOMf4ibmUJukw" name="getHighestPressureUlcerStages" isQuery="true" bodyCondition="_-yagxT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yagxT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yagwj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yagxj_aEeOMf4ibmUJukw">
            <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="_-yagwz_aEeOMf4ibmUJukw" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yagxD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KgzUBSVEeGGzu7fmW9pXw" name="AdvanceDirectivesSection">
      <ownedRule xmi:id="_-ee4IT_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ee4Ij_aEeOMf4ibmUJukw">
          <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="_-ehUYD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionCodeP" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ehUYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-egGQD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionCode" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-egGQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ejJkD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionTitle" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ejJkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ekXsD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionText" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ekXsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ek-wD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionAdvanceDirectiveObservation" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ek-wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-ell0D_aEeOMf4ibmUJukw" name="getConsolAdvanceDirectiveObservations" isQuery="true" bodyCondition="_-ell0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ell0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ell0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ell1D_aEeOMf4ibmUJukw">
            <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="_-ell0T_aEeOMf4ibmUJukw" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ell0j_aEeOMf4ibmUJukw" 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="_-ell1T_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationTemplateId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-emM4D_aEeOMf4ibmUJukw">
          <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="_-enbAD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-enbAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eopID_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationMoodCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eopIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-epQMD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-epQMT_aEeOMf4ibmUJukw">
          <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="_-erscD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCodeP" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-erscT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-eqeUD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-eqeUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-es6kD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationStatusCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-es6kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-euIsD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationEffectiveTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-euvwD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nkisD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationVerifier" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nkisT_aEeOMf4ibmUJukw">
          <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="_-nmX4D_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodian" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nmX4T_aEeOMf4ibmUJukw">
          <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="_-nm-8D_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReference" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nm-8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1S1oD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationVerifierTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1S1oT_aEeOMf4ibmUJukw">
          <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="_-1S1oj_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationVerifierTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1S1oz_aEeOMf4ibmUJukw">
          <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="_-1TcsD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationVerifierParticipantRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1TcsT_aEeOMf4ibmUJukw">
          <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="_-1Uq0D_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1Uq0T_aEeOMf4ibmUJukw">
          <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="_-1Uq0j_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianCustodianRoleAddr" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1Uq0z_aEeOMf4ibmUJukw">
          <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 (addr->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1kicD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianCustodianRoleClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1kicT_aEeOMf4ibmUJukw">
          <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="_-1kicj_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianCustodianRoleTelecom" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1kicz_aEeOMf4ibmUJukw">
          <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 (telecom->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1lJgD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1lJgT_aEeOMf4ibmUJukw">
          <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="_-1lJgj_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1lJgz_aEeOMf4ibmUJukw">
          <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="_-1lwkD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationCustodianRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1lwkT_aEeOMf4ibmUJukw">
          <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="_-1mXoD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceExternalDocumentTextMediaType" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1mXoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.reference->excluding(null).externalDocument->excluding(null)->reject(not text.mediaType.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1m-sD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceExternalDocumentTextReference" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1m-sT_aEeOMf4ibmUJukw">
          <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="_-1m-sj_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceExternalDocumentId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1m-sz_aEeOMf4ibmUJukw">
          <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="_-1m-tD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceExternalDocumentText" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1m-tT_aEeOMf4ibmUJukw">
          <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="_-1nlwD_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1nlwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.reference->excluding(null)->reject(not typeCode.oclIsUndefined() and typeCode.oclIsKindOf(vocab::x_ActRelationshipExternalReference) and 
let value : vocab::x_ActRelationshipExternalReference = typeCode.oclAsType(vocab::x_ActRelationshipExternalReference) in 
value = vocab::x_ActRelationshipExternalReference::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1nlwj_aEeOMf4ibmUJukw" name="AdvanceDirectiveObservationReferenceExternalDocument" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1nlwz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-e5u4T_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e5u4j_aEeOMf4ibmUJukw">
          <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="_-e8LID_aEeOMf4ibmUJukw" name="AllergiesSectionCodeP" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e8LIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-e69AD_aEeOMf4ibmUJukw" name="AllergiesSectionCode" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e69AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-e9ZQD_aEeOMf4ibmUJukw" name="AllergiesSectionTitle" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e9ZQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-e-AUD_aEeOMf4ibmUJukw" name="AllergiesSectionText" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e-AUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-e_OcD_aEeOMf4ibmUJukw" name="AllergiesSectionAllergyProblemAct" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e_OcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-e_Ocj_aEeOMf4ibmUJukw" name="getConsolAllergyProblemActs" isQuery="true" bodyCondition="_-e_1gT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-e_1gT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-e_Ocj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e_1gj_aEeOMf4ibmUJukw">
            <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="_-e_Ocz_aEeOMf4ibmUJukw" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-e_1gD_aEeOMf4ibmUJukw" 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="_-e_1hD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-e_1hT_aEeOMf4ibmUJukw">
          <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="_-fCRwD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fCRwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fBDoD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalCode" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fBDoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fDf4D_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalText" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fDf4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fEuAD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalTitle" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fEuAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kqYoD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kqYoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-kqYoj_aEeOMf4ibmUJukw" name="getConsolProblemConcerns" isQuery="true" bodyCondition="_-kqYpT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kqYpT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kqYoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kqYpj_aEeOMf4ibmUJukw">
            <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="_-kqYoz_aEeOMf4ibmUJukw" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kqYpD_aEeOMf4ibmUJukw" 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="_-fF8ID_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fF8IT_aEeOMf4ibmUJukw">
          <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="_-fIYYD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fIYYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fHKQD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalCode" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fHKQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fJmgD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalText" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fJmgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fK0oD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalTitle" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fK0oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oCcwD_aEeOMf4ibmUJukw" name="EncountersSectionEncounterActivities" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oCcwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-oCcwj_aEeOMf4ibmUJukw" name="getConsolEncounterActivitiess" isQuery="true" bodyCondition="_-oCcxT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-oCcxT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-oCcwj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oCcxj_aEeOMf4ibmUJukw">
            <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="_-oCcwz_aEeOMf4ibmUJukw" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-oCcxD_aEeOMf4ibmUJukw" 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">
        <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="_-fLbsD_aEeOMf4ibmUJukw" name="EncounterActivitiesTemplateId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fLbsT_aEeOMf4ibmUJukw">
          <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="_-fN38D_aEeOMf4ibmUJukw" name="EncounterActivitiesClassCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fN38T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fPGED_aEeOMf4ibmUJukw" name="EncounterActivitiesMoodCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fPGET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentEncounterMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fQUMD_aEeOMf4ibmUJukw" name="EncounterActivitiesId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fQUMT_aEeOMf4ibmUJukw">
          <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="_-fQ7QD_aEeOMf4ibmUJukw" name="EncounterActivitiesCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fQ7QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.12' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fSJYD_aEeOMf4ibmUJukw" name="EncounterActivitiesEffectiveTime" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fSJYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fVMsD_aEeOMf4ibmUJukw" name="EncounterActivitiesSDTCDischargeDispositionCodeP" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fVMsT_aEeOMf4ibmUJukw">
          <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="_-fT-kD_aEeOMf4ibmUJukw" name="EncounterActivitiesSDTCDischargeDispositionCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fT-kT_aEeOMf4ibmUJukw">
          <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.12.112' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fXo8D_aEeOMf4ibmUJukw" name="EncounterActivitiesServiceDeliveryLocation" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fXo8T_aEeOMf4ibmUJukw">
          <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="_-k0wsD_aEeOMf4ibmUJukw" name="EncounterActivitiesIndication" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k0wsT_aEeOMf4ibmUJukw">
          <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="_-ucmwz_aEeOMf4ibmUJukw" name="EncounterActivitiesEncounterPerformer" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ucmxD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ur3UD_aEeOMf4ibmUJukw" name="EncounterActivitiesEncounterDiagnosis" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ur3UT_aEeOMf4ibmUJukw">
          <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="_-1oz4D_aEeOMf4ibmUJukw" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1oz4T_aEeOMf4ibmUJukw">
          <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="_-1pa8D_aEeOMf4ibmUJukw" name="EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1pa8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-fXo8j_aEeOMf4ibmUJukw" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_-fXo9T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-fXo9T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-fXo8j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fXo9j_aEeOMf4ibmUJukw">
            <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="_-fXo8z_aEeOMf4ibmUJukw" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-fXo9D_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k0wsj_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-k0wtT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k0wtT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k0wsj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k0wtj_aEeOMf4ibmUJukw">
            <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="_-k0wsz_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k0wtD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ur3Uj_aEeOMf4ibmUJukw" name="getEncounterDiagnosiss" isQuery="true" bodyCondition="_-ur3VT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ur3VT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ur3Uj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ur3Vj_aEeOMf4ibmUJukw">
            <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="_-ur3Uz_aEeOMf4ibmUJukw" type="_Ker6MOM2EeGfv4R-kzpM0g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ur3VD_aEeOMf4ibmUJukw" 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="_-fYQAD_aEeOMf4ibmUJukw" name="ServiceDeliveryLocationTemplateId" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fYQAT_aEeOMf4ibmUJukw">
          <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="_-faFMD_aEeOMf4ibmUJukw" name="ServiceDeliveryLocationClassCode" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-faFMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::SDLOC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fbTUD_aEeOMf4ibmUJukw" name="ServiceDeliveryLocationCode" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fbTUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.6.259' and not value.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fchcD_aEeOMf4ibmUJukw" name="ServiceDeliveryLocationAddr" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fchcT_aEeOMf4ibmUJukw">
          <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="_-fdIgD_aEeOMf4ibmUJukw" name="ServiceDeliveryLocationTelecom" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fdIgT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2L7voBSVEeGGzu7fmW9pXw" name="ImmunizationsSection">
      <ownedRule xmi:id="_-fdvkD_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fdvkT_aEeOMf4ibmUJukw">
          <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="_-fgL0D_aEeOMf4ibmUJukw" name="ImmunizationsSectionCodeP" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fgL0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fe9sD_aEeOMf4ibmUJukw" name="ImmunizationsSectionCode" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fe9sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fhZ8D_aEeOMf4ibmUJukw" name="ImmunizationsSectionTitle" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fhZ8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fiBAD_aEeOMf4ibmUJukw" name="ImmunizationsSectionText" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fiBAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fioED_aEeOMf4ibmUJukw" name="ImmunizationsSectionImmunization" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fioET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-fjPID_aEeOMf4ibmUJukw" name="getImmunizations" isQuery="true" bodyCondition="_-fjPIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-fjPIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-fjPID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fjPJD_aEeOMf4ibmUJukw">
            <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="_-fjPIT_aEeOMf4ibmUJukw" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-fjPIj_aEeOMf4ibmUJukw" 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="_vjGGEEX7EeG6e5lG0YsSyQ" name="ImmunizationActivityPreconditionTypeCode" constrainedElement="_bnbB0EX7EeG6e5lG0YsSyQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_1H5LYEX7EeG6e5lG0YsSyQ">
          <language>OCL</language>
          <body>self.precondition->select(par : cda::Precondition | par.oclIsKindOf(consol::PreconditionForSubstanceAdministration))->forAll(p : cda::Precondition | p.typeCode=vocab::ActRelationshipType::PRCN)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fj2MD_aEeOMf4ibmUJukw" name="ImmunizationActivityTemplateId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fj2MT_aEeOMf4ibmUJukw">
          <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="_-fmScD_aEeOMf4ibmUJukw" name="ImmunizationActivityClassCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fmScT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fngkD_aEeOMf4ibmUJukw" name="ImmunizationActivityMoodCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fngkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and 
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in 
value = vocab::x_DocumentSubstanceMood::EVN or value = vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fousD_aEeOMf4ibmUJukw" name="ImmunizationActivityId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fousT_aEeOMf4ibmUJukw">
          <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="_-fpVwD_aEeOMf4ibmUJukw" name="ImmunizationActivityCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fpVwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fp80D_aEeOMf4ibmUJukw" name="ImmunizationActivityStatusCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fp80T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-frK8D_aEeOMf4ibmUJukw" name="ImmunizationActivityEffectiveTime" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-frK8T_aEeOMf4ibmUJukw">
          <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="_-ftAID_aEeOMf4ibmUJukw" name="ImmunizationActivityRouteCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ftAIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fryAD_aEeOMf4ibmUJukw" name="ImmunizationActivityRouteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fsZED_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (not self.routeCode.oclIsUndefined() and self.routeCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.3.26.1.1' and (value.code = 'C38192' or value.code = 'C38193' or value.code = 'C38194' or value.code = 'C38675' or value.code = 'C38197' or value.code = 'C38633' or value.code = 'C38205' or value.code = 'C38206' or value.code = 'C38208' or value.code = 'C38209' or value.code = 'C38210' or value.code = 'C38211' or value.code = 'C38212' or value.code = 'C38200' or value.code = 'C38215' or value.code = 'C38219' or value.code = 'C38220' or value.code = 'C38221' or value.code = 'C38222' or value.code = 'C38223' or value.code = 'C38224' or value.code = 'C38225' or value.code = 'C38226' or value.code = 'C38227' or value.code = 'C38228' or value.code = 'C38229' or value.code = 'C38230' or value.code = 'C38231' or value.code = 'C38232' or value.code = 'C38233' or value.code = 'C38234' or value.code = 'C38217' or value.code = 'C38218' or value.code = 'C38235' or value.code = 'C38238' or value.code = 'C38239' or value.code = 'C38240' or value.code = 'C38241' or value.code = 'C38242' or value.code = 'C38243' or value.code = 'C38245' or value.code = 'C38246' or value.code = 'C38247' or value.code = 'C38249' or value.code = 'C38250' or value.code = 'C38251' or value.code = 'C38252' or value.code = 'C38253' or value.code = 'C38254' or value.code = 'C28161' or value.code = 'C38255' or value.code = 'C38256' or value.code = 'C38257' or value.code = 'C38258' or value.code = 'C38259' or value.code = 'C38260' or value.code = 'C38261' or value.code = 'C38262' or value.code = 'C38263' or value.code = 'C38264' or value.code = 'C38265' or value.code = 'C38266' or value.code = 'C38267' or value.code = 'C38207' or value.code = 'C38268' or value.code = 'C38269' or value.code = 'C38270' or value.code = 'C38272' or value.code = 'C38273' or value.code = 'C38276' or value.code = 'C38277' or value.code = 'C38278' or value.code = 'C38280' or value.code = 'C38203' or value.code = 'C38281' or value.code = 'C38282' or value.code = 'C38284' or value.code = 'C38285' or value.code = 'C48623' or value.code = 'C38286' or value.code = 'C38287' or value.code = 'C38288' or value.code = 'C38289' or value.code = 'C38291' or value.code = 'C38676' or value.code = 'C38292' or value.code = 'C38677' or value.code = 'C38293' or value.code = 'C38294' or value.code = 'C38295' or value.code = 'C38216' or value.code = 'C38296' or value.code = 'C38198' or value.code = 'C38297' or value.code = 'C38298' or value.code = 'C38299' or value.code = 'C38300' or value.code = 'C38301' or value.code = 'C38304' or value.code = 'C38305' or value.code = 'C38283' or value.code = 'C38307' or value.code = 'C38308' or value.code = 'C38309' or value.code = 'C38312' or value.code = 'C38271'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fvcYD_aEeOMf4ibmUJukw" name="ImmunizationActivityApproachSiteCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fvcYT_aEeOMf4ibmUJukw">
          <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="_-fuOQD_aEeOMf4ibmUJukw" name="ImmunizationActivityApproachSiteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fuOQT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fwqgD_aEeOMf4ibmUJukw" name="ImmunizationActivityDoseQuantity" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fwqgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fx4oD_aEeOMf4ibmUJukw" name="ImmunizationActivityNegationInd" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fx4oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-fyfsD_aEeOMf4ibmUJukw" name="ImmunizationActivityText" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-fyfsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gCXUD_aEeOMf4ibmUJukw" name="ImmunizationActivityRepeatNumber" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gCXUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gEzkD_aEeOMf4ibmUJukw" name="ImmunizationActivityAdministrationUnitCodeP" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gEzkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gDlcD_aEeOMf4ibmUJukw" name="ImmunizationActivityAdministrationUnitCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gDlcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (not self.administrationUnitCode.oclIsUndefined() and self.administrationUnitCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in 
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="_-k1-1T_aEeOMf4ibmUJukw" name="ImmunizationActivityDrugVehicle" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k1-1j_aEeOMf4ibmUJukw">
          <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="_-k2l5T_aEeOMf4ibmUJukw" name="ImmunizationActivityIndication" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k2l5j_aEeOMf4ibmUJukw">
          <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="_-k3M9T_aEeOMf4ibmUJukw" name="ImmunizationActivityInstructions" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k3M9j_aEeOMf4ibmUJukw">
          <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="_-k4bED_aEeOMf4ibmUJukw" name="ImmunizationActivityMedicationDispense" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k4bET_aEeOMf4ibmUJukw">
          <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="_-k5CID_aEeOMf4ibmUJukw" name="ImmunizationActivityReactionObservation" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k5CIT_aEeOMf4ibmUJukw">
          <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="_-k5pNT_aEeOMf4ibmUJukw" name="ImmunizationActivityPrecondition" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k5pNj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.precondition->one(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(consol::PreconditionForSubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-k_v0D_aEeOMf4ibmUJukw" name="ImmunizationActivityImmunizationRefusalReason" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k_v0T_aEeOMf4ibmUJukw">
          <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="_-lF2cD_aEeOMf4ibmUJukw" name="ImmunizationActivityConsumable" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lF2cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(cda::Consumable))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-masID_aEeOMf4ibmUJukw" name="ImmunizationActivityPerformer" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-masIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mlrRT_aEeOMf4ibmUJukw" name="ImmunizationActivityMedicationSupplyOrder" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mlrRj_aEeOMf4ibmUJukw">
          <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="_-1qCAD_aEeOMf4ibmUJukw" name="ImmunizationActivityConsumableImmunizationMedicationInformation" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1qCAT_aEeOMf4ibmUJukw">
          <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>
      <generalization xmi:id="_2MQfwxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-k2l4D_aEeOMf4ibmUJukw" name="getDrugVehicle" isQuery="true" bodyCondition="_-k2l4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k2l4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k2l4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k2l5D_aEeOMf4ibmUJukw">
            <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="_-k2l4T_aEeOMf4ibmUJukw" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k2l4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k3M8D_aEeOMf4ibmUJukw" name="getIndication" isQuery="true" bodyCondition="_-k3M8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k3M8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k3M8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k3M9D_aEeOMf4ibmUJukw">
            <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="_-k3M8T_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k3M8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k30AD_aEeOMf4ibmUJukw" name="getInstructions" isQuery="true" bodyCondition="_-k30Az_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k30Az_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k30AD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k30BD_aEeOMf4ibmUJukw">
            <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="_-k30AT_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k30Aj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k4bEj_aEeOMf4ibmUJukw" name="getMedicationDispense" isQuery="true" bodyCondition="_-k4bFT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k4bFT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k4bEj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k4bFj_aEeOMf4ibmUJukw">
            <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="_-k4bEz_aEeOMf4ibmUJukw" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k4bFD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-k5pMD_aEeOMf4ibmUJukw" name="getReactionObservation" isQuery="true" bodyCondition="_-k5pMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-k5pMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-k5pMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k5pND_aEeOMf4ibmUJukw">
            <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="_-k5pMT_aEeOMf4ibmUJukw" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-k5pMj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-lAW4D_aEeOMf4ibmUJukw" name="getImmunizationRefusalReason" isQuery="true" bodyCondition="_-lAW4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-lAW4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-lAW4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lAW5D_aEeOMf4ibmUJukw">
            <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="_-lAW4T_aEeOMf4ibmUJukw" type="__qYdcBVNEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-lAW4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mmSUD_aEeOMf4ibmUJukw" name="getMedicationSupplyOrder" isQuery="true" bodyCondition="_-mmSUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mmSUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mmSUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mmSVD_aEeOMf4ibmUJukw">
            <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="_-mmSUT_aEeOMf4ibmUJukw" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mmSUj_aEeOMf4ibmUJukw" 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="_-gGBsD_aEeOMf4ibmUJukw" name="PayersSectionTemplateId" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gGBsT_aEeOMf4ibmUJukw">
          <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="_-gHP0D_aEeOMf4ibmUJukw" name="PayersSectionCode" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gHP0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gId8D_aEeOMf4ibmUJukw" name="PayersSectionCodeP" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gId8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gJsED_aEeOMf4ibmUJukw" name="PayersSectionTitle" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gJsET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gKTID_aEeOMf4ibmUJukw" name="PayersSectionText" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gKTIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kZS5D_aEeOMf4ibmUJukw" name="PayersSectionCoverageActivity" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kZS5T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-kZ58D_aEeOMf4ibmUJukw" name="getCoverageActivities" isQuery="true" bodyCondition="_-kZ58z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kZ58z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kZ58D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kZ59D_aEeOMf4ibmUJukw">
            <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="_-kZ58T_aEeOMf4ibmUJukw" type="_Cg3pkBUmEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kZ58j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NIpgBSVEeGGzu7fmW9pXw" name="MedicationsSection">
      <ownedRule xmi:id="_-gK6MT_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gK6Mj_aEeOMf4ibmUJukw">
          <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="_-gMIUD_aEeOMf4ibmUJukw" name="MedicationsSectionCode" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gMIUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gN9gD_aEeOMf4ibmUJukw" name="MedicationsSectionTitle" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gN9gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gOkkD_aEeOMf4ibmUJukw" name="MedicationsSectionText" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gOkkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gPysD_aEeOMf4ibmUJukw" name="MedicationsSectionMedication" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gPysT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-gQZwD_aEeOMf4ibmUJukw" name="getMedications" isQuery="true" bodyCondition="_-gQZwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gQZwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gQZwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gQZxD_aEeOMf4ibmUJukw">
            <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="_-gQZwT_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gQZwj_aEeOMf4ibmUJukw" 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="_-gQZxT_aEeOMf4ibmUJukw" name="PlanOfCareSectionTemplateId" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gQZxj_aEeOMf4ibmUJukw">
          <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="_-gRn4D_aEeOMf4ibmUJukw" name="PlanOfCareSectionCode" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gRn4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '18776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gS2AD_aEeOMf4ibmUJukw" name="PlanOfCareSectionCodeP" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gS2AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gTdED_aEeOMf4ibmUJukw" name="PlanOfCareSectionTitle" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gTdET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gUEID_aEeOMf4ibmUJukw" name="PlanOfCareSectionText" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gUEIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gZjsD_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivityAct" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gZjsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlanOfCareActivityAct))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gecMD_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivityEncounter" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gecMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::PlanOfCareActivityEncounter))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gitoD_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivityObservation" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gitoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PlanOfCareActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gnmID_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivityProcedure" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gnmIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gseoD_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivitySubstanceAdministration" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gseoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::PlanOfCareActivitySubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gxXID_aEeOMf4ibmUJukw" name="PlanOfCareSectionPlanOfCareActivitySupply" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gxXIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::PlanOfCareActivitySupply))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ulwsD_aEeOMf4ibmUJukw" name="PlanOfCareSectionInstructions" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ulwsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-gaKwD_aEeOMf4ibmUJukw" name="getPlanOfCareActivityActs" isQuery="true" bodyCondition="_-gaKwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gaKwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gaKwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gaKxD_aEeOMf4ibmUJukw">
            <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="_-gaKwT_aEeOMf4ibmUJukw" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gaKwj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-gecMj_aEeOMf4ibmUJukw" name="getPlanOfCareActivityEncounters" isQuery="true" bodyCondition="_-gecNT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gecNT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gecMj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gecNj_aEeOMf4ibmUJukw">
            <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="_-gecMz_aEeOMf4ibmUJukw" type="_2NWFBBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gecND_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-gjUsD_aEeOMf4ibmUJukw" name="getPlanOfCareActivityObservations" isQuery="true" bodyCondition="_-gjUsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gjUsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gjUsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gjUtD_aEeOMf4ibmUJukw">
            <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="_-gjUsT_aEeOMf4ibmUJukw" type="_2NcLjhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gjUsj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-goNMD_aEeOMf4ibmUJukw" name="getPlanOfCareActivityProcedures" isQuery="true" bodyCondition="_-goNMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-goNMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-goNMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-goNND_aEeOMf4ibmUJukw">
            <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="_-goNMT_aEeOMf4ibmUJukw" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-goNMj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-gtFsD_aEeOMf4ibmUJukw" name="getPlanOfCareActivitySubstanceAdministrations" isQuery="true" bodyCondition="_-gtFsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gtFsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gtFsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gtFtD_aEeOMf4ibmUJukw">
            <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="_-gtFsT_aEeOMf4ibmUJukw" type="_2NoYwxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gtFsj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-gx-MD_aEeOMf4ibmUJukw" name="getPlanOfCareActivitySupplies" isQuery="true" bodyCondition="_-gx-Mz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-gx-Mz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-gx-MD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gx-ND_aEeOMf4ibmUJukw">
            <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="_-gx-MT_aEeOMf4ibmUJukw" type="_2NoY5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gx-Mj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-umXwD_aEeOMf4ibmUJukw" name="getInstructionss" isQuery="true" bodyCondition="_-umXwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-umXwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-umXwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-umXxD_aEeOMf4ibmUJukw">
            <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="_-umXwT_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-umXwj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NWE5xSVEeGGzu7fmW9pXw" name="PlanOfCareActivityAct">
      <ownedRule xmi:id="_-gVSQD_aEeOMf4ibmUJukw" name="PlanOfCareActivityActTemplateId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gVSQT_aEeOMf4ibmUJukw">
          <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="_-gV5UT_aEeOMf4ibmUJukw" name="PlanOfCareActivityActClassCode" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gV5Uj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gXHcD_aEeOMf4ibmUJukw" name="PlanOfCareActivityActMoodCode" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gXHcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and 
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in 
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="_-gY8oD_aEeOMf4ibmUJukw" name="PlanOfCareActivityActId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gY8oT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NWFBBSVEeGGzu7fmW9pXw" name="PlanOfCareActivityEncounter">
      <ownedRule xmi:id="_-gaKxT_aEeOMf4ibmUJukw" name="PlanOfCareActivityEncounterTemplateId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gaKxj_aEeOMf4ibmUJukw">
          <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="_-gax0T_aEeOMf4ibmUJukw" name="PlanOfCareActivityEncounterClassCode" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gbY4D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gb_8D_aEeOMf4ibmUJukw" name="PlanOfCareActivityEncounterMoodCode" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gb_8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentEncounterMood) and 
let value : vocab::x_DocumentEncounterMood = self.moodCode.oclAsType(vocab::x_DocumentEncounterMood) in 
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="_-gdOED_aEeOMf4ibmUJukw" name="PlanOfCareActivityEncounterId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gdOET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NcLjhSVEeGGzu7fmW9pXw" name="PlanOfCareActivityObservation">
      <ownedRule xmi:id="_-gfDQD_aEeOMf4ibmUJukw" name="PlanOfCareActivityObservationTemplateId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gfDQT_aEeOMf4ibmUJukw">
          <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="_-gfqUD_aEeOMf4ibmUJukw" name="PlanOfCareActivityObservationClassCode" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gfqUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gg4cD_aEeOMf4ibmUJukw" name="PlanOfCareActivityObservationMoodCode" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gg4cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_ActMoodDocumentObservation) and 
let value : vocab::x_ActMoodDocumentObservation = self.moodCode.oclAsType(vocab::x_ActMoodDocumentObservation) in 
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="_-giGkD_aEeOMf4ibmUJukw" name="PlanOfCareActivityObservationId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-giGkT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NiSKhSVEeGGzu7fmW9pXw" name="PlanOfCareActivityProcedure">
      <ownedRule xmi:id="_-gjUtT_aEeOMf4ibmUJukw" name="PlanOfCareActivityProcedureTemplateId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gj7wD_aEeOMf4ibmUJukw">
          <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="_-gki0D_aEeOMf4ibmUJukw" name="PlanOfCareActivityProcedureClassCode" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gki0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::PROC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-glw8D_aEeOMf4ibmUJukw" name="PlanOfCareActivityProcedureMoodCode" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-glw8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentProcedureMood) and 
let value : vocab::x_DocumentProcedureMood = self.moodCode.oclAsType(vocab::x_DocumentProcedureMood) in 
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="_-gm_ED_aEeOMf4ibmUJukw" name="PlanOfCareActivityProcedureId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gm_ET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_-jiisEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NoYwxSVEeGGzu7fmW9pXw" name="PlanOfCareActivitySubstanceAdministration">
      <ownedRule xmi:id="_-goNNT_aEeOMf4ibmUJukw" name="PlanOfCareActivitySubstanceAdministrationTemplateId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-goNNj_aEeOMf4ibmUJukw">
          <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="_-gpbUD_aEeOMf4ibmUJukw" name="PlanOfCareActivitySubstanceAdministrationClassCode" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gpbUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::SBADM</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gqpcD_aEeOMf4ibmUJukw" name="PlanOfCareActivitySubstanceAdministrationMoodCode" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gqpcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and 
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in 
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="_-gr3kD_aEeOMf4ibmUJukw" name="PlanOfCareActivitySubstanceAdministrationId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gr3kT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NoY5BSVEeGGzu7fmW9pXw" name="PlanOfCareActivitySupply">
      <ownedRule xmi:id="_-gtFtT_aEeOMf4ibmUJukw" name="PlanOfCareActivitySupplyTemplateId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gtFtj_aEeOMf4ibmUJukw">
          <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="_-guT0D_aEeOMf4ibmUJukw" name="PlanOfCareActivitySupplyClassCode" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-guT0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gu64D_aEeOMf4ibmUJukw" name="PlanOfCareActivitySupplyMoodCode" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gu64T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentSubstanceMood) and 
let value : vocab::x_DocumentSubstanceMood = self.moodCode.oclAsType(vocab::x_DocumentSubstanceMood) in 
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="_-gwwED_aEeOMf4ibmUJukw" name="PlanOfCareActivitySupplyId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gwwET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-gx-NT_aEeOMf4ibmUJukw" name="PregnancyObservationTemplateId" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gx-Nj_aEeOMf4ibmUJukw">
          <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="_-gzMUD_aEeOMf4ibmUJukw" name="PregnancyObservationClassCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gzMUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-gzzYD_aEeOMf4ibmUJukw" name="PregnancyObservationMoodCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-gzzYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g2PoD_aEeOMf4ibmUJukw" name="PregnancyObservationCodeP" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g2PoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g1BgD_aEeOMf4ibmUJukw" name="PregnancyObservationCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g1BgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g3dwD_aEeOMf4ibmUJukw" name="PregnancyObservationStatusCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g3dwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g4r4D_aEeOMf4ibmUJukw" name="PregnancyObservationValue" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g4r4T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.code = '77386006' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g56AD_aEeOMf4ibmUJukw" name="PregnancyObservationEffectiveTime" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g56AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m2J8D_aEeOMf4ibmUJukw" name="PregnancyObservationEstimatedDateOfDelivery" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m2J8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m2xAD_aEeOMf4ibmUJukw" name="getEstimatedDateOfDelivery" isQuery="true" bodyCondition="_-m2xAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m2xAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m2xAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m2xBD_aEeOMf4ibmUJukw">
            <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="_-m2xAT_aEeOMf4ibmUJukw" type="_vBswQBtpEeGT89b80j3MTg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m2xAj_aEeOMf4ibmUJukw" 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.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="_-g6hET_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g6hEj_aEeOMf4ibmUJukw">
          <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="_-g7vMD_aEeOMf4ibmUJukw" name="ProceduresSectionTitle" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g7vMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g-LcD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g-LcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g89UD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g89UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-g_ZkD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalText" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-g_ZkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-useYD_aEeOMf4ibmUJukw" name="ProceduresSectionProcedureActivityProcedure" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-useYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-utFdD_aEeOMf4ibmUJukw" name="ProceduresSectionProcedureActivityObservation" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-utFdT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProcedureActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-utshT_aEeOMf4ibmUJukw" name="ProceduresSectionProcedureActivityAct" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-utshj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-useYj_aEeOMf4ibmUJukw" name="getConsolProcedureActivityProcedures" isQuery="true" bodyCondition="_-utFcj_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-utFcj_aEeOMf4ibmUJukw" name="body" constrainedElement="_-useYj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-utFcz_aEeOMf4ibmUJukw">
            <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="_-utFcD_aEeOMf4ibmUJukw" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-utFcT_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-utsgD_aEeOMf4ibmUJukw" name="getProcedureActivityObservations" isQuery="true" bodyCondition="_-utsgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-utsgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-utsgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-utshD_aEeOMf4ibmUJukw">
            <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="_-utsgT_aEeOMf4ibmUJukw" type="_Aj7JkBg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-utsgj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-uuTkD_aEeOMf4ibmUJukw" name="getConsolProcedureActivityActs" isQuery="true" bodyCondition="_-uuTkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uuTkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uuTkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uuTlD_aEeOMf4ibmUJukw">
            <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="_-uuTkT_aEeOMf4ibmUJukw" type="_awdH4Bg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uuTkj_aEeOMf4ibmUJukw" 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="_-hAnsD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureTemplateId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hAnsT_aEeOMf4ibmUJukw">
          <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="_-hESED_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureClassCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hESET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::PROC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hHVYD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureMoodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hHVYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentProcedureMood) and 
let value : vocab::x_DocumentProcedureMood = self.moodCode.oclAsType(vocab::x_DocumentProcedureMood) in 
value = vocab::x_DocumentProcedureMood::EVN or value = vocab::x_DocumentProcedureMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hIjgD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hIjgT_aEeOMf4ibmUJukw">
          <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="_-hJKkD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hJKkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hJxoD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureStatusCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hJxoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hK_wD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEffectiveTime" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hK_wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hODED_aEeOMf4ibmUJukw" name="ProcedureActivityProcedurePriorityCodeP" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hODET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hM08D_aEeOMf4ibmUJukw" name="ProcedureActivityProcedurePriorityCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hM08T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in 
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="_-hOqID_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureMethodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hOqIT_aEeOMf4ibmUJukw">
          <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="_-hRGYD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureTargetSiteCodeP" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hRGYT_aEeOMf4ibmUJukw">
          <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="_-hP4QD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureTargetSiteCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hP4QT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hcFgD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureIndication" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hcFgT_aEeOMf4ibmUJukw">
          <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="_-hcslT_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureSpecimen" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hdToD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.specimen->exists(specimen : cda::Specimen | not specimen.oclIsUndefined() and specimen.oclIsKindOf(cda::Specimen))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hdToT_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureServiceDeliveryLocation" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hd6sD_aEeOMf4ibmUJukw">
          <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="_-hehwD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedurePerformer" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hehwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hfI0D_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureMedicationActivity" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hfI0T_aEeOMf4ibmUJukw">
          <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="_-hfv5T_aEeOMf4ibmUJukw" name="ProcedureActivityProcedurePatientInstruction" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hfv5j_aEeOMf4ibmUJukw">
          <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="_-mp8sD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProductInstance" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mp8sT_aEeOMf4ibmUJukw">
          <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="_-ukikD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationship" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ukikT_aEeOMf4ibmUJukw">
          <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="_-1r3MD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureSpecimenSpecimenRole" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1r3MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.specimen->excluding(null)->reject(specimenRole->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1r3Mj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureSpecimenSpecimentRoleId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1r3Mz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.specimen->excluding(null)->reject(specimenRole.id->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1tFUD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1tFUT_aEeOMf4ibmUJukw">
          <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="_-1tsYD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationName" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1tsYT_aEeOMf4ibmUJukw">
          <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="_-1tsYj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationTelecom" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1tsYz_aEeOMf4ibmUJukw">
          <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="_-1tsZD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityProcedureActivityRepresentedOrganizationAddr" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1tsZT_aEeOMf4ibmUJukw">
          <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="_-1uTcD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1uTcT_aEeOMf4ibmUJukw">
          <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="_-1uTcj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityAddr" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1uTcz_aEeOMf4ibmUJukw">
          <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="_-1uTdD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityTelecom" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1uTdT_aEeOMf4ibmUJukw">
          <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="_-1u6gD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerProcedureActivityAssignedEntityRepresentedOrganization" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1u6gT_aEeOMf4ibmUJukw">
          <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="_-1u6gj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureProcedureActivityPerformerAssignedEntity" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1u6gz_aEeOMf4ibmUJukw">
          <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="_-1wIoD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterClassCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1wIoT_aEeOMf4ibmUJukw">
          <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="_-1wIoj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterMoodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1wIoz_aEeOMf4ibmUJukw">
          <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="_-1wvsD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounterId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1wvsT_aEeOMf4ibmUJukw">
          <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="_-1wvsj_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipInversionInd" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1wvsz_aEeOMf4ibmUJukw">
          <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="_-1wvtD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipTypeCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1wvtT_aEeOMf4ibmUJukw">
          <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="_-1xWwD_aEeOMf4ibmUJukw" name="ProcedureActivityProcedureEntryRelationshipProcedureActivityEncounter" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1xWwT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_-jiisEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-hcskD_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-hcskz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-hcskz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-hcskD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hcslD_aEeOMf4ibmUJukw">
            <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="_-hcskT_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hcskj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-hd6sT_aEeOMf4ibmUJukw" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_-hd6tD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-hd6tD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-hd6sT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hd6tT_aEeOMf4ibmUJukw">
            <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="_-hd6sj_aEeOMf4ibmUJukw" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hd6sz_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-hfv4D_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-hfv4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-hfv4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-hfv4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hfv5D_aEeOMf4ibmUJukw">
            <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="_-hfv4T_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hfv4j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-hgW8D_aEeOMf4ibmUJukw" name="getPatientInstruction" isQuery="true" bodyCondition="_-hgW8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-hgW8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-hgW8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hgW9D_aEeOMf4ibmUJukw">
            <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="_-hgW8T_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hgW8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mp8sj_aEeOMf4ibmUJukw" name="getProductInstances" isQuery="true" bodyCondition="_-mp8tT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mp8tT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mp8sj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mqjwD_aEeOMf4ibmUJukw">
            <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="_-mp8sz_aEeOMf4ibmUJukw" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mp8tD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OfUcxSVEeGGzu7fmW9pXw" name="VitalSignsSection">
      <ownedRule xmi:id="_-hg-AD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hg-AT_aEeOMf4ibmUJukw">
          <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="_-hizMD_aEeOMf4ibmUJukw" name="VitalSignsSectionCodeP" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hizMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hhlED_aEeOMf4ibmUJukw" name="VitalSignsSectionCode" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hhlET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hkBUD_aEeOMf4ibmUJukw" name="VitalSignsSectionText" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hkBUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hlPcD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalTitle" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hlPcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-h8b0D_aEeOMf4ibmUJukw" name="VitalSignsSectionVitalSignsOrganizer" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h8b0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-h9C4D_aEeOMf4ibmUJukw" name="getConsolVitalSignsOrganizers" isQuery="true" bodyCondition="_-h9C4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-h9C4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-h9C4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h9C5D_aEeOMf4ibmUJukw">
            <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="_-h9C4T_aEeOMf4ibmUJukw" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-h9C4j_aEeOMf4ibmUJukw" 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="_-hl2gD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerTemplateId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hl2gT_aEeOMf4ibmUJukw">
          <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="_-hmdkD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerClassCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hmdkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hoSwD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerMoodCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hoSwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hpg4D_aEeOMf4ibmUJukw" name="VitalSignsOrganizerId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hpg4T_aEeOMf4ibmUJukw">
          <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="_-hrWED_aEeOMf4ibmUJukw" name="VitalSignsOrganizerCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hrWET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '46680005' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-htLQD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerStatusCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-htLQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-huZYD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerEffectiveTime" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-huZYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hvAcD_aEeOMf4ibmUJukw" name="VitalSignsOrganizerVitalSignObservation" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hvAcT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_B6aX4EbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-hvngD_aEeOMf4ibmUJukw" name="getVitalSignObservations" isQuery="true" bodyCondition="_-hvngz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-hvngz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-hvngD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hvnhD_aEeOMf4ibmUJukw">
            <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="_-hvngT_aEeOMf4ibmUJukw" type="_2OrhsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hvngj_aEeOMf4ibmUJukw" 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="_-hvnhT_aEeOMf4ibmUJukw" name="VitalSignObservationTemplateId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hvnhj_aEeOMf4ibmUJukw">
          <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="_-hyDwD_aEeOMf4ibmUJukw" name="VitalSignObservationClassCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hyDwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hyq0D_aEeOMf4ibmUJukw" name="VitalSignObservationMoodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hzR4D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-hz48D_aEeOMf4ibmUJukw" name="VitalSignObservationId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-hz48T_aEeOMf4ibmUJukw">
          <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="_-h1uID_aEeOMf4ibmUJukw" name="VitalSignObservationCodeP" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h1uIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-h1HED_aEeOMf4ibmUJukw" name="VitalSignObservationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h1HET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '9279-1' or value.code = '8867-4' or value.code = '2710-2' or value.code = '8480-6' or value.code = '8462-4' or value.code = '8310-5' or value.code = '8302-2' or value.code = '8306-3' or value.code = '8287-5' or value.code = '3141-9' or value.code = '39156-5' or value.code = '3140-1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-h28QD_aEeOMf4ibmUJukw" name="VitalSignObservationStatusCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h28QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-h4KYD_aEeOMf4ibmUJukw" name="VitalSignObservationEffectiveTime" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h4KYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-h4xcD_aEeOMf4ibmUJukw" name="VitalSignObservationValue" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h4xcT_aEeOMf4ibmUJukw">
          <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="_-h5YgD_aEeOMf4ibmUJukw" name="VitalSignObservationInterpretationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h5YgT_aEeOMf4ibmUJukw">
          <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="_-h6moD_aEeOMf4ibmUJukw" name="VitalSignObservationMethodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h6moT_aEeOMf4ibmUJukw">
          <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="_-h7NsD_aEeOMf4ibmUJukw" name="VitalSignObservationTargetSiteCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h7NsT_aEeOMf4ibmUJukw">
          <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="_-h70wD_aEeOMf4ibmUJukw" name="VitalSignObservationText" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h70wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ulJoD_aEeOMf4ibmUJukw" name="VitalSignObservationAuthor" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ulJoT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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 describes the history related to the patient's past complaints, problems, or diagnoses. It records these details up until and possibly pertinent to the patient's current complaint or reason for seeking medical care.</body>
      </ownedComment>
      <ownedRule xmi:id="_-h9p8D_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionTemplateId" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h9p8T_aEeOMf4ibmUJukw">
          <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="_-h-4ED_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionCode" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-h-4ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11348-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iAGMD_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionCodeP" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iAGMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iBUUD_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionTitle" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iBUUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iB7YD_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionText" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iB7YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oBOoD_aEeOMf4ibmUJukw" name="HistoryOfPastIllnessSectionProblemObservation" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oBOoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-oBOoj_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-oBOpT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-oBOpT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-oBOoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oBOpj_aEeOMf4ibmUJukw">
            <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="_-oBOoz_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-oBOpD_aEeOMf4ibmUJukw" 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="_-iCicD_aEeOMf4ibmUJukw" name="ChiefComplaintSectionTemplateId" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iCicT_aEeOMf4ibmUJukw">
          <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="_-iDwkD_aEeOMf4ibmUJukw" name="ChiefComplaintSectionCode" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iDwkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10154-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iE-sD_aEeOMf4ibmUJukw" name="ChiefComplaintSectionCodeP" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iE-sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iGM0D_aEeOMf4ibmUJukw" name="ChiefComplaintSectionText" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iGM0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iGz4D_aEeOMf4ibmUJukw" name="ChiefComplaintSectionTitle" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iGz4T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-iHa8D_aEeOMf4ibmUJukw" name="ReasonForReferralSectionTemplateId" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iHa8T_aEeOMf4ibmUJukw">
          <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="_-iIpED_aEeOMf4ibmUJukw" name="ReasonForReferralSectionCode" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iIpET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '42349-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iJ3MD_aEeOMf4ibmUJukw" name="ReasonForReferralSectionCodeP" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iJ3MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iLFUD_aEeOMf4ibmUJukw" name="ReasonForReferralSectionTitle" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iLFUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iLsYD_aEeOMf4ibmUJukw" name="ReasonForReferralSectionText" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iLsYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PcWsBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-iMTcD_aEeOMf4ibmUJukw" name="HistoryOfPresentIllnessSectionTemplateId" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iMTcT_aEeOMf4ibmUJukw">
          <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="_-iNhkD_aEeOMf4ibmUJukw" name="HistoryOfPresentIllnessSectionCode" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iNhkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10164-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iOIoD_aEeOMf4ibmUJukw" name="HistoryOfPresentIllnessSectionCodeP" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iOIoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iPWwD_aEeOMf4ibmUJukw" name="HistoryOfPresentIllnessSectionTitle" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iPWwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iQk4D_aEeOMf4ibmUJukw" name="HistoryOfPresentIllnessSectionText" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iQk4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PidQRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-iRL8D_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionTemplateId" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iRL8T_aEeOMf4ibmUJukw">
          <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="_-iRzAD_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionCode" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iRzAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iTBID_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionCodeP" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iTBIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iUPQD_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionTitle" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iUPQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iU2UD_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionText" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iU2UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uXuRT_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisSectionHospitalAdmissionDiagnosis" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uXuRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uYVUD_aEeOMf4ibmUJukw" name="getHospitalAdmissionDiagnosis" isQuery="true" bodyCondition="_-uYVUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uYVUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uYVUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uYVVD_aEeOMf4ibmUJukw">
            <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="_-uYVUT_aEeOMf4ibmUJukw" type="_5K6mAEFHEeGorO80f-Cppg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uYVUj_aEeOMf4ibmUJukw" 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="_-iWEcD_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iWEcT_aEeOMf4ibmUJukw">
          <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="_-iWrgD_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iWrgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iX5oD_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalCodeP" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iX5oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iZHwD_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iZHwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iZu0D_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iZu0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-soo5T_aEeOMf4ibmUJukw" name="HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-soo5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-spP8D_aEeOMf4ibmUJukw" name="getAdmissionMedications" isQuery="true" bodyCondition="_-spP8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-spP8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-spP8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-spP9D_aEeOMf4ibmUJukw">
            <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="_-spP8T_aEeOMf4ibmUJukw" type="_LNP08EFGEeGorO80f-Cppg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-spP8j_aEeOMf4ibmUJukw" 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="_-ia88D_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionTemplateId" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ia88T_aEeOMf4ibmUJukw">
          <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="_-ibkAD_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionCode" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ibkAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '29549-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-icyID_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionCodeP" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-icyIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ieAQD_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionText" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ieAQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ienUD_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionTitle" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ienUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uYVVT_aEeOMf4ibmUJukw" name="MedicationsAdministeredSectionMedicationActivity" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uYVVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uY8YD_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-uY8Yz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uY8Yz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uY8YD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uY8ZD_aEeOMf4ibmUJukw">
            <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="_-uY8YT_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uY8Yj_aEeOMf4ibmUJukw" 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="_-if1cD_aEeOMf4ibmUJukw" name="PhysicalExamSectionTemplateId" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-if1cT_aEeOMf4ibmUJukw">
          <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="_-ihDkD_aEeOMf4ibmUJukw" name="PhysicalExamSectionCode" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ihDkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '29545-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iiRsD_aEeOMf4ibmUJukw" name="PhysicalExamSectionCodeP" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iiRsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ii4wD_aEeOMf4ibmUJukw" name="PhysicalExamSectionTitle" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ijf0D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ikG4D_aEeOMf4ibmUJukw" name="PhysicalExamSectionText" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ikG4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yQvwD_aEeOMf4ibmUJukw" name="PhysicalExamSectionPressureUlcerObservation" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yQvwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PressureUlcerObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yRW0z_aEeOMf4ibmUJukw" name="PhysicalExamSectionNumberOfPressureUlcersObservation" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yRW1D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::NumberOfPressureUlcersObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yR95T_aEeOMf4ibmUJukw" name="PhysicalExamSectionHighestPressureUlcerStage" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yR95j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-yQvwj_aEeOMf4ibmUJukw" name="getPressureUlcerObservations" isQuery="true" bodyCondition="_-yRW0T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yRW0T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yQvwj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yRW0j_aEeOMf4ibmUJukw">
            <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="_-yQvwz_aEeOMf4ibmUJukw" type="_9rQowOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yRW0D_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yR94D_aEeOMf4ibmUJukw" name="getNumberOfPressureUlcersObservations" isQuery="true" bodyCondition="_-yR94z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yR94z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yR94D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yR95D_aEeOMf4ibmUJukw">
            <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="_-yR94T_aEeOMf4ibmUJukw" type="_7c4ssOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yR94j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ySk8D_aEeOMf4ibmUJukw" name="getHighestPressureUlcerStages" isQuery="true" bodyCondition="_-ySk8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ySk8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ySk8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ySk9D_aEeOMf4ibmUJukw">
            <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="_-ySk8T_aEeOMf4ibmUJukw" type="_4YgVsOZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ySk8j_aEeOMf4ibmUJukw" 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="_-ikt8D_aEeOMf4ibmUJukw" name="GeneralStatusSectionTemplateId" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ikt8T_aEeOMf4ibmUJukw">
          <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="_-il8ED_aEeOMf4ibmUJukw" name="GeneralStatusSectionCode" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-il8ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10210-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-imjID_aEeOMf4ibmUJukw" name="GeneralStatusSectionCodeP" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-imjIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-inxQD_aEeOMf4ibmUJukw" name="GeneralStatusSectionTitle" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-inxQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-io_YD_aEeOMf4ibmUJukw" name="GeneralStatusSectionText" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-io_YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2P7e0BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-ipmcD_aEeOMf4ibmUJukw" name="ReviewOfSystemsSectionTemplateId" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ipmcT_aEeOMf4ibmUJukw">
          <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="_-iqNgD_aEeOMf4ibmUJukw" name="ReviewOfSystemsSectionCode" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iqNgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10187-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-irboD_aEeOMf4ibmUJukw" name="ReviewOfSystemsSectionCodeP" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-irboT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ispwD_aEeOMf4ibmUJukw" name="ReviewOfSystemsSectionTitle" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ispwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-itQ0D_aEeOMf4ibmUJukw" name="ReviewOfSystemsSectionText" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-itQ0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RqkOhSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-it34D_aEeOMf4ibmUJukw" name="AssessmentAndPlanSectionTemplateId" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-it34T_aEeOMf4ibmUJukw">
          <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="_-ivGAD_aEeOMf4ibmUJukw" name="AssessmentAndPlanSectionCode" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ivGAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '51847-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ivtED_aEeOMf4ibmUJukw" name="AssessmentAndPlanSectionCodeP" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ivtET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iw7MD_aEeOMf4ibmUJukw" name="AssessmentAndPlanSectionText" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iw7MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oAAgz_aEeOMf4ibmUJukw" name="AssessmentAndPlanSectionPlanOfCareActivityAct" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oAAhD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-oAnkD_aEeOMf4ibmUJukw" name="getPlanOfCareActivityActs" isQuery="true" bodyCondition="_-oAnkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-oAnkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-oAnkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oAnlD_aEeOMf4ibmUJukw">
            <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="_-oAnkT_aEeOMf4ibmUJukw" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-oAnkj_aEeOMf4ibmUJukw" 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="_-ixiQD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationTemplateId" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ixiQT_aEeOMf4ibmUJukw">
          <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="_-iyJUD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationClassCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iyJUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-izXcD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationMoodCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-izXcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-iz-gD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-iz-gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-i1MoD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationStatusCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i1MoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-i2awD_aEeOMf4ibmUJukw" name="FamilyHistoryDeathObservationValue" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i2awT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.code = '419099009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2SPMABSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-i3o4D_aEeOMf4ibmUJukw" name="SurgicalDrainsSectionTemplateId" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i3o4T_aEeOMf4ibmUJukw">
          <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="_-i4P8D_aEeOMf4ibmUJukw" name="SurgicalDrainsSectionCode" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i43AD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11537-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-i5eED_aEeOMf4ibmUJukw" name="SurgicalDrainsSectionCodeP" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i5eET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-i6sMD_aEeOMf4ibmUJukw" name="SurgicalDrainsSectionText" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i6sMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-i7TQD_aEeOMf4ibmUJukw" name="SurgicalDrainsSectionTitle" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i7TQT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-i76UD_aEeOMf4ibmUJukw" name="UnstructuredDocumentTemplateId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-i76UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.21.1.10')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sL88T_aEeOMf4ibmUJukw" name="UnstructuredDocumentRecordTarget" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sL88j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.recordTarget->one(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sMkAD_aEeOMf4ibmUJukw" name="UnstructuredDocumentAuthor" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sMkAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sNyIz_aEeOMf4ibmUJukw" name="UnstructuredDocumentComponent" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sOZMD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.component->one(component : cda::Component2 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sPAQT_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodian" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sPAQj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1zL8D_aEeOMf4ibmUJukw" name="UnstructuredDocumentRecordTargetPatientRole2Id" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1zL8T_aEeOMf4ibmUJukw">
          <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="_-1zL8j_aEeOMf4ibmUJukw" name="UnstructuredDocumentRecordTargetPatientRole2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1zL8z_aEeOMf4ibmUJukw">
          <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="_-10aED_aEeOMf4ibmUJukw" name="UnstructuredDocumentAuthorAssignedAuthor2Addr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-10aET_aEeOMf4ibmUJukw">
          <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="_-10aEj_aEeOMf4ibmUJukw" name="UnstructuredDocumentAuthorAssignedAuthor2Telecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-10aEz_aEeOMf4ibmUJukw">
          <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="_-10aFD_aEeOMf4ibmUJukw" name="UnstructuredDocumentAuthorAssignedAuthor2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-11BID_aEeOMf4ibmUJukw">
          <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="_-12PQD_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-12PQT_aEeOMf4ibmUJukw">
          <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="_-12PQj_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-12PQz_aEeOMf4ibmUJukw">
          <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="_-122UD_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-122UT_aEeOMf4ibmUJukw">
          <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="_-122Uj_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-122Uz_aEeOMf4ibmUJukw">
          <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="_-122VD_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-122VT_aEeOMf4ibmUJukw">
          <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="_-13dYD_aEeOMf4ibmUJukw" name="UnstructuredDocumentCustodianAssignedCustodian2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-13dYT_aEeOMf4ibmUJukw">
          <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="_-jDPED_aEeOMf4ibmUJukw" name="MedicationInformationTemplateId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jDPET_aEeOMf4ibmUJukw">
          <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="_-jD2ID_aEeOMf4ibmUJukw" name="MedicationInformationId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jD2IT_aEeOMf4ibmUJukw">
          <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="_-jEdMD_aEeOMf4ibmUJukw" name="MedicationInformationClassCode" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jEdMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassManufacturedProduct::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m4mNT_aEeOMf4ibmUJukw" name="MedicationInformationManufacturerOrganization" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m4mNj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s7j0D_aEeOMf4ibmUJukw" name="MedicationInformationManufacturedMaterial" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s7j0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-14EcD_aEeOMf4ibmUJukw" name="MedicationInformationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-14EcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-14Ecj_aEeOMf4ibmUJukw" name="MedicationInformationMedicationInformationManufacturedMaterialReference" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-14Ecz_aEeOMf4ibmUJukw">
          <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="_-14EdD_aEeOMf4ibmUJukw" name="MedicationInformationMedicationInformationManufacturedMaterialOriginalTextReferenceValue" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-14EdT_aEeOMf4ibmUJukw">
          <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="_-14rgD_aEeOMf4ibmUJukw" name="MedicationInformationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-14rgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code->size() = 1 implies code.translation->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-14rgj_aEeOMf4ibmUJukw" name="MedicationInformationMedicationInformationManufacturedMaterialCode" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-14rgz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->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.6.88' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2UJQdxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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()->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="_-jIHkT_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jIHkj_aEeOMf4ibmUJukw">
          <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="_-jKj0D_aEeOMf4ibmUJukw" name="DischargeSummaryCodeP" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jKj0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jJVsD_aEeOMf4ibmUJukw" name="DischargeSummaryCode" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jJVsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-jQqcT_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalAdmissionMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jRRgD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jR4kD_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalAdmissionDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jR4kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jSfoD_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalDischargeDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jSfoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jTGtT_aEeOMf4ibmUJukw" name="DischargeSummaryDischargeDietSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jTGtj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jTtxT_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jTtxj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jUU1T_aEeOMf4ibmUJukw" name="DischargeSummaryFunctionalStatusSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jUU1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jVi8D_aEeOMf4ibmUJukw" name="DischargeSummaryHistoryOfPresentIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jVi8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jWKAD_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalCourseSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jWKAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jWxEz_aEeOMf4ibmUJukw" name="DischargeSummaryPlanOfCareSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jWxFD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jXYJT_aEeOMf4ibmUJukw" name="DischargeSummaryHistoryOfPastIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jXYJj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qRRYT_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOf" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qRRYj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qTtoD_aEeOMf4ibmUJukw" name="DischargeSummaryChiefComplaintAndReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qTtoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qUUsT_aEeOMf4ibmUJukw" name="DischargeSummaryChiefComplaintSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qUUsj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qU7xT_aEeOMf4ibmUJukw" name="DischargeSummaryFamilyHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qU7xj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qVi1T_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalConsultationsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qVi1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qWJ5T_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalDischargeInstructionsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qWJ5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qXYAD_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalDischargePhysicalSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qXYAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qX_ED_aEeOMf4ibmUJukw" name="DischargeSummaryHospitalDischargeStudiesSummarySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qX_ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qYmIz_aEeOMf4ibmUJukw" name="DischargeSummaryImmunizationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qYmJD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qZNNT_aEeOMf4ibmUJukw" name="DischargeSummaryProblemSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qZNNj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qZ0RT_aEeOMf4ibmUJukw" name="DischargeSummaryProceduresSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qZ0Rj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qabVT_aEeOMf4ibmUJukw" name="DischargeSummaryReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qbCYD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qbpcD_aEeOMf4ibmUJukw" name="DischargeSummaryReviewOfSystemsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qbpcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qcQgD_aEeOMf4ibmUJukw" name="DischargeSummarySocialHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qcQgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ypxUD_aEeOMf4ibmUJukw" name="DischargeSummaryAllergiesSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ypxUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yqYZT_aEeOMf4ibmUJukw" name="DischargeSummaryVitalSignsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yqYZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-16gsD_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-16gsT_aEeOMf4ibmUJukw">
          <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="_-16gsj_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-16gsz_aEeOMf4ibmUJukw">
          <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="_-17HwD_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17HwT_aEeOMf4ibmUJukw">
          <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="_-17Hwj_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17Hwz_aEeOMf4ibmUJukw">
          <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="_-17HxD_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17HxT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-17u0D_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17u0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->excluding(null).encompassingEncounter->excluding(null)->reject(not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-17u0j_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17u0z_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = dischargeDispositionCode.oclAsType(datatypes::CE) in 
value.codeSystem = '2.16.840.1.113883.12.112' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-17u1D_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeP" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-17u1T_aEeOMf4ibmUJukw">
          <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="_-18V4D_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-18V4T_aEeOMf4ibmUJukw">
          <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="_-18V4j_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-18V4z_aEeOMf4ibmUJukw">
          <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="_-18V5D_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-18V5T_aEeOMf4ibmUJukw">
          <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="_-1888D_aEeOMf4ibmUJukw" name="DischargeSummaryComponentOfEncompassingEncounter" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1888T_aEeOMf4ibmUJukw">
          <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="_-jRRgT_aEeOMf4ibmUJukw" name="getHospitalAdmissionMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-jRRhD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jRRhD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jRRgT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jRRhT_aEeOMf4ibmUJukw">
            <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="_-jRRgj_aEeOMf4ibmUJukw" type="_2Poj5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jRRgz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jR4kj_aEeOMf4ibmUJukw" name="getHospitalAdmissionDiagnosisSection" isQuery="true" bodyCondition="_-jR4lT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jR4lT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jR4kj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jR4lj_aEeOMf4ibmUJukw">
            <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="_-jR4kz_aEeOMf4ibmUJukw" type="_2PidQhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jR4lD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jTGsD_aEeOMf4ibmUJukw" name="getHospitalDischargeDiagnosisSection" isQuery="true" bodyCondition="_-jTGsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jTGsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jTGsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jTGtD_aEeOMf4ibmUJukw">
            <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="_-jTGsT_aEeOMf4ibmUJukw" type="_2PidURSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jTGsj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jTtwD_aEeOMf4ibmUJukw" name="getDischargeDietSection" isQuery="true" bodyCondition="_-jTtwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jTtwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jTtwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jTtxD_aEeOMf4ibmUJukw">
            <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="_-jTtwT_aEeOMf4ibmUJukw" type="_2Uz-4xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jTtwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jUU0D_aEeOMf4ibmUJukw" name="getHospitalDischargeMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-jUU0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jUU0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jUU0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jUU1D_aEeOMf4ibmUJukw">
            <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="_-jUU0T_aEeOMf4ibmUJukw" type="_2Poj7RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jUU0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jU74D_aEeOMf4ibmUJukw" name="getFunctionalStatusSection" isQuery="true" bodyCondition="_-jU74z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jU74z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jU74D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jU75D_aEeOMf4ibmUJukw">
            <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="_-jU74T_aEeOMf4ibmUJukw" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jU74j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jVi8j_aEeOMf4ibmUJukw" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_-jVi9T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jVi9T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jVi8j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jVi9j_aEeOMf4ibmUJukw">
            <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="_-jVi8z_aEeOMf4ibmUJukw" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jVi9D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jWKAj_aEeOMf4ibmUJukw" name="getHospitalCourseSection" isQuery="true" bodyCondition="_-jWxET_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jWxET_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jWKAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jWxEj_aEeOMf4ibmUJukw">
            <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="_-jWKAz_aEeOMf4ibmUJukw" type="_2RqkOxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jWxED_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jXYID_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-jXYIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jXYIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jXYID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jXYJD_aEeOMf4ibmUJukw">
            <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="_-jXYIT_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jXYIj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-jX_MD_aEeOMf4ibmUJukw" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_-jX_Mz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-jX_Mz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-jX_MD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jX_ND_aEeOMf4ibmUJukw">
            <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="_-jX_MT_aEeOMf4ibmUJukw" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-jX_Mj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qTtoj_aEeOMf4ibmUJukw" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_-qTtpT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qTtpT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qTtoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qUUsD_aEeOMf4ibmUJukw">
            <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="_-qTtoz_aEeOMf4ibmUJukw" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qTtpD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qU7wD_aEeOMf4ibmUJukw" name="getChiefComplaintSection" isQuery="true" bodyCondition="_-qU7wz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qU7wz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qU7wD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qU7xD_aEeOMf4ibmUJukw">
            <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="_-qU7wT_aEeOMf4ibmUJukw" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qU7wj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qVi0D_aEeOMf4ibmUJukw" name="getFamilyHistorySection" isQuery="true" bodyCondition="_-qVi0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qVi0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qVi0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qVi1D_aEeOMf4ibmUJukw">
            <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="_-qVi0T_aEeOMf4ibmUJukw" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qVi0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qWJ4D_aEeOMf4ibmUJukw" name="getHospitalConsultationsSection" isQuery="true" bodyCondition="_-qWJ4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qWJ4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qWJ4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qWJ5D_aEeOMf4ibmUJukw">
            <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="_-qWJ4T_aEeOMf4ibmUJukw" type="_eKFbUDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qWJ4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qWw8D_aEeOMf4ibmUJukw" name="getHospitalDischargeInstructionsSection" isQuery="true" bodyCondition="_-qWw8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qWw8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qWw8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qWw9D_aEeOMf4ibmUJukw">
            <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="_-qWw8T_aEeOMf4ibmUJukw" type="_lBergCUMEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qWw8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qXYAj_aEeOMf4ibmUJukw" name="getHospitalDischargePhysicalSection" isQuery="true" bodyCondition="_-qXYBT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qXYBT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qXYAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qXYBj_aEeOMf4ibmUJukw">
            <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="_-qXYAz_aEeOMf4ibmUJukw" type="_WikGsCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qXYBD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qX_Ej_aEeOMf4ibmUJukw" name="getHospitalDischargeStudiesSummarySection" isQuery="true" bodyCondition="_-qYmIT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qYmIT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qX_Ej_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qYmIj_aEeOMf4ibmUJukw">
            <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="_-qX_Ez_aEeOMf4ibmUJukw" type="_38AXoCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qYmID_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qZNMD_aEeOMf4ibmUJukw" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_-qZNMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qZNMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qZNMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qZNND_aEeOMf4ibmUJukw">
            <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="_-qZNMT_aEeOMf4ibmUJukw" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qZNMj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qZ0QD_aEeOMf4ibmUJukw" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_-qZ0Qz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qZ0Qz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qZ0QD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qZ0RD_aEeOMf4ibmUJukw">
            <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="_-qZ0QT_aEeOMf4ibmUJukw" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qZ0Qj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qabUD_aEeOMf4ibmUJukw" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_-qabUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qabUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qabUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qabVD_aEeOMf4ibmUJukw">
            <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="_-qabUT_aEeOMf4ibmUJukw" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qabUj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qbCYT_aEeOMf4ibmUJukw" name="getReasonForVisitSection" isQuery="true" bodyCondition="_-qbCZD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qbCZD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qbCYT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qbCZT_aEeOMf4ibmUJukw">
            <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="_-qbCYj_aEeOMf4ibmUJukw" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qbCYz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qbpcj_aEeOMf4ibmUJukw" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_-qbpdT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qbpdT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qbpcj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qbpdj_aEeOMf4ibmUJukw">
            <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="_-qbpcz_aEeOMf4ibmUJukw" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qbpdD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qcQgj_aEeOMf4ibmUJukw" name="getSocialHistorySection" isQuery="true" bodyCondition="_-qcQhT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qcQhT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qcQgj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qcQhj_aEeOMf4ibmUJukw">
            <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="_-qcQgz_aEeOMf4ibmUJukw" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qcQhD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yqYYD_aEeOMf4ibmUJukw" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_-yqYYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yqYYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yqYYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yqYZD_aEeOMf4ibmUJukw">
            <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="_-yqYYT_aEeOMf4ibmUJukw" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yqYYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yq_cD_aEeOMf4ibmUJukw" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_-yq_cz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yq_cz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yq_cD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yq_dD_aEeOMf4ibmUJukw">
            <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="_-yq_cT_aEeOMf4ibmUJukw" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yq_cj_aEeOMf4ibmUJukw" 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="_-jX_NT_aEeOMf4ibmUJukw" name="IndicationTemplateId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jX_Nj_aEeOMf4ibmUJukw">
          <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="_-jZ0YD_aEeOMf4ibmUJukw" name="IndicationClassCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jZ0YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jbCgD_aEeOMf4ibmUJukw" name="IndicationMoodCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jbCgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jbpkD_aEeOMf4ibmUJukw" name="IndicationId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jbpkT_aEeOMf4ibmUJukw">
          <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="_-jdewD_aEeOMf4ibmUJukw" name="IndicationCodeP" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jdewT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jc3sD_aEeOMf4ibmUJukw" name="IndicationCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jc3sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-jfT8D_aEeOMf4ibmUJukw" name="IndicationStatusCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jfT8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jgiED_aEeOMf4ibmUJukw" name="IndicationEffectiveTime" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jgiET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jhJID_aEeOMf4ibmUJukw" name="IndicationValue" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jhJIT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jiXQD_aEeOMf4ibmUJukw" name="IndicationValueP" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jiXQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->forAll(element | element.oclIsTypeOf(datatypes::CD)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_sHrUoRUSEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-jkMdT_aEeOMf4ibmUJukw" name="DrugVehicleTemplateId" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jkMdj_aEeOMf4ibmUJukw">
          <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="_-jlakD_aEeOMf4ibmUJukw" name="DrugVehicleClassCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jlakT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassRoot::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jmosD_aEeOMf4ibmUJukw" name="DrugVehicleCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jmosT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '412307009' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mbTMD_aEeOMf4ibmUJukw" name="DrugVehiclePlayingEntity" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mbTMT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-jnPwD_aEeOMf4ibmUJukw" name="MedicationDispenseTemplateId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jn20D_aEeOMf4ibmUJukw">
          <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="_-jod4D_aEeOMf4ibmUJukw" name="MedicationDispenseClassCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jod4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jpE8D_aEeOMf4ibmUJukw" name="MedicationDispenseEffectiveTime" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jpE8T_aEeOMf4ibmUJukw">
          <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="_-jpsAD_aEeOMf4ibmUJukw" name="MedicationDispenseId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jpsAT_aEeOMf4ibmUJukw">
          <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="_-jq6ID_aEeOMf4ibmUJukw" name="MedicationDispenseMoodCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jq6IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentSubstanceMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jrhMD_aEeOMf4ibmUJukw" name="MedicationDispenseRepeatNumber" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jrhMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jsIQD_aEeOMf4ibmUJukw" name="MedicationDispenseStatusCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jsIQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'aborted' or value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jtWYD_aEeOMf4ibmUJukw" name="MedicationDispenseQuantity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jtWYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mjPBT_aEeOMf4ibmUJukw" name="MedicationDispenseMedicationSupplyOrder" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mj2ED_aEeOMf4ibmUJukw">
          <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="_-uhfQD_aEeOMf4ibmUJukw" name="MedicationDispensePerformer" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uhfQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-1-yID_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1-yIT_aEeOMf4ibmUJukw">
          <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="_-1_ZMD_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1_ZMT_aEeOMf4ibmUJukw">
          <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="_-1_ZMj_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1_ZMz_aEeOMf4ibmUJukw">
          <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="_-1_ZND_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-1_ZNT_aEeOMf4ibmUJukw">
          <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="_-2AAQD_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AAQT_aEeOMf4ibmUJukw">
          <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="_-2AAQj_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AAQz_aEeOMf4ibmUJukw">
          <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="_-2AARD_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AART_aEeOMf4ibmUJukw">
          <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="_-2AARj_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AARz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-2AnUD_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntityAddr" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AnUT_aEeOMf4ibmUJukw">
          <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="_-2AnUj_aEeOMf4ibmUJukw" name="MedicationDispensePerformerMedicationDispenseAssignedEntity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2AnUz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-mj2ET_aEeOMf4ibmUJukw" name="getMedicationSupplyOrder" isQuery="true" bodyCondition="_-mj2FD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mj2FD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mj2ET_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mj2FT_aEeOMf4ibmUJukw">
            <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="_-mj2Ej_aEeOMf4ibmUJukw" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mj2Ez_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_chEhQBUUEeG6PvUxSTZnaw" name="PreconditionForSubstanceAdministration">
      <ownedRule xmi:id="_pHR7UBrcEeGo461UQq-B1g" name="PreconditionForSubstanceAdministrationCriterionCode" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVPAoBrcEeGo461UQq-B1g">
          <language>OCL</language>
          <body>not self.criterion.oclIsUndefined() implies (not self.criterion.code.oclIsUndefined() or self.criterion.code.isNullFlavorDefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_tZn6QBrcEeGo461UQq-B1g" name="PreconditionForSubstanceAdministrationCriterionText" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_08wUgBrcEeGo461UQq-B1g">
          <language>OCL</language>
          <body>not self.criterion.oclIsUndefined() implies not self.criterion.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vY4cQBrcEeGo461UQq-B1g" name="PreconditionForSubstanceAdministrationCriterionValue" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2wfjABrcEeGo461UQq-B1g">
          <language>OCL</language>
          <body>(self.criterion.value.oclIsUndefined() or self.criterion.value.isNullFlavorUndefined()) implies (self.criterion.value.oclIsTypeOf(datatypes::CD))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-jvyoz_aEeOMf4ibmUJukw" name="PreconditionForSubstanceAdministrationTemplateId" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jvypD_aEeOMf4ibmUJukw">
          <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="_-jxAwD_aEeOMf4ibmUJukw" name="PreconditionForSubstanceAdministrationCriterion" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jxAwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.criterion->one(criterion : cda::Criterion | not criterion.oclIsUndefined() and criterion.oclIsKindOf(rim::Act))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_chEhQRUUEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_OJn4MEcaEd6besF9iFIJkQ"/>
      </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="_-jy19T_aEeOMf4ibmUJukw" name="PolicyActivityTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-jzdAD_aEeOMf4ibmUJukw">
          <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="_-j0EED_aEeOMf4ibmUJukw" name="PolicyActivityClassCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j0EET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-j15QD_aEeOMf4ibmUJukw" name="PolicyActivityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j15QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-j1SMD_aEeOMf4ibmUJukw" name="PolicyActivityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j1SMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-j3HYD_aEeOMf4ibmUJukw" name="PolicyActivityId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j3HYT_aEeOMf4ibmUJukw">
          <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="_-j3ucD_aEeOMf4ibmUJukw" name="PolicyActivityMoodCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j3ucT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-j48kD_aEeOMf4ibmUJukw" name="PolicyActivityStatusCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-j48kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uUq9T_aEeOMf4ibmUJukw" name="PolicyActivityPayer" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uUq9j_aEeOMf4ibmUJukw">
          <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="_-uV5ED_aEeOMf4ibmUJukw" name="PolicyActivityGuarantor" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uV5ET_aEeOMf4ibmUJukw">
          <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="_-uaKgD_aEeOMf4ibmUJukw" name="PolicyActivityCoverage" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uaKgT_aEeOMf4ibmUJukw">
          <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="_-ubYoD_aEeOMf4ibmUJukw" name="PolicyActivityHolder" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ubYoT_aEeOMf4ibmUJukw">
          <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="_-vER0D_aEeOMf4ibmUJukw" name="PolicyActivityEntryRelationship" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vER0T_aEeOMf4ibmUJukw">
          <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="_-2DqoD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2DqoT_aEeOMf4ibmUJukw">
          <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="_-2Dqoj_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Dqoz_aEeOMf4ibmUJukw">
          <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="_-2DqpD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2DqpT_aEeOMf4ibmUJukw">
          <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="_-2ERsD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2ERsT_aEeOMf4ibmUJukw">
          <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="_-2ERsj_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2ERsz_aEeOMf4ibmUJukw">
          <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="_-2ERtD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2ERtT_aEeOMf4ibmUJukw">
          <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="_-2E4wD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2E4wT_aEeOMf4ibmUJukw">
          <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="_-2E4wj_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2E4wz_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-2Ff0D_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityPayerOrganizationName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Ff0T_aEeOMf4ibmUJukw">
          <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="_-2Ff0j_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Ff0z_aEeOMf4ibmUJukw">
          <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="_-2Ff1D_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Ff1T_aEeOMf4ibmUJukw">
          <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="_-2GG4D_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2GG4T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
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="_-2GG4j_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2GG4z_aEeOMf4ibmUJukw">
          <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="_-2GG5D_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityTelecom" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2GG5T_aEeOMf4ibmUJukw">
          <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="_-2Gt8D_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntityPayerOrganization" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Gt8T_aEeOMf4ibmUJukw">
          <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="_-2Gt8j_aEeOMf4ibmUJukw" name="PolicyActivityPayerTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Gt8z_aEeOMf4ibmUJukw">
          <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="_-2Gt9D_aEeOMf4ibmUJukw" name="PolicyActivityPayerTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Gt9T_aEeOMf4ibmUJukw">
          <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="_-2HVAD_aEeOMf4ibmUJukw" name="PolicyActivityPayerPayerAssignedEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2HVAT_aEeOMf4ibmUJukw">
          <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="_-2IjID_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2IjIT_aEeOMf4ibmUJukw">
          <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="_-2JKMD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JKMT_aEeOMf4ibmUJukw">
          <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="_-2JKMj_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JKMz_aEeOMf4ibmUJukw">
          <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="_-2JKND_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JKNT_aEeOMf4ibmUJukw">
          <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="_-2JxQD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JxQT_aEeOMf4ibmUJukw">
          <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="_-2JxQj_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JxQz_aEeOMf4ibmUJukw">
          <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="_-2JxRD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2JxRT_aEeOMf4ibmUJukw">
          <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="_-2KYUD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2KYUT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-2KYUj_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2KYUz_aEeOMf4ibmUJukw">
          <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="_-2KYVD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2K_YD_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
value.code = 'GUAR' and value.codeSystem = '2.16.840.1.113883.5.110'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2K_YT_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2K_Yj_aEeOMf4ibmUJukw">
          <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="_-2K_Yz_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2K_ZD_aEeOMf4ibmUJukw">
          <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="_-2LmcD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntityTelecom" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2LmcT_aEeOMf4ibmUJukw">
          <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="_-2Lmcj_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Lmcz_aEeOMf4ibmUJukw">
          <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="_-2LmdD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2LmdT_aEeOMf4ibmUJukw">
          <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="_-2MNgD_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2MNgT_aEeOMf4ibmUJukw">
          <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(isDefined('typeCode') and typeCode=vocab::ParticipationPhysicalPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2MNgj_aEeOMf4ibmUJukw" name="PolicyActivityGuarantorGuarantorAssignedEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2MNgz_aEeOMf4ibmUJukw">
          <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="_-2OCsD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2OCsT_aEeOMf4ibmUJukw">
          <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="_-2OCsj_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2OCsz_aEeOMf4ibmUJukw">
          <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="_-2OCtD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2OCtT_aEeOMf4ibmUJukw">
          <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="_-2OpwD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2OpwT_aEeOMf4ibmUJukw">
          <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="_-2Opwj_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Opwz_aEeOMf4ibmUJukw">
          <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="_-2OpxD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2OpxT_aEeOMf4ibmUJukw">
          <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="_-2PQ0D_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2PQ0T_aEeOMf4ibmUJukw">
          <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="_-2PQ0j_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2PQ0z_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-2P34D_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2P34T_aEeOMf4ibmUJukw">
          <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="_-2Qe8D_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Qe8T_aEeOMf4ibmUJukw">
          <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="_-2Qe8j_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Qe8z_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CE = code.oclAsType(datatypes::CE) in 
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="_-2Qe9D_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleCodeP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Qe9T_aEeOMf4ibmUJukw">
          <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="_-2RGAD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2RGAT_aEeOMf4ibmUJukw">
          <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="_-2RGAj_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRoleCoveragePlayingEntity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2RGAz_aEeOMf4ibmUJukw">
          <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="_-2RGBD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageLowTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2RtED_aEeOMf4ibmUJukw">
          <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="_-2RtET_aEeOMf4ibmUJukw" name="PolicyActivityCoverageHighTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2RtEj_aEeOMf4ibmUJukw">
          <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="_-2RtEz_aEeOMf4ibmUJukw" name="PolicyActivityCoverageTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2RtFD_aEeOMf4ibmUJukw">
          <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="_-2SUID_aEeOMf4ibmUJukw" name="PolicyActivityCoverageTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2SUIT_aEeOMf4ibmUJukw">
          <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="_-2SUIj_aEeOMf4ibmUJukw" name="PolicyActivityCoverageTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2SUIz_aEeOMf4ibmUJukw">
          <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="_-2S7MD_aEeOMf4ibmUJukw" name="PolicyActivityCoverageCoverageRole" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2S7MT_aEeOMf4ibmUJukw">
          <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="_-2UJUD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2UJUT_aEeOMf4ibmUJukw">
          <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="_-2UJUj_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2UJUz_aEeOMf4ibmUJukw">
          <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="_-2UwYD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2UwYT_aEeOMf4ibmUJukw">
          <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="_-2UwYj_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2UwYz_aEeOMf4ibmUJukw">
          <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="_-2VXcD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2VXcT_aEeOMf4ibmUJukw">
          <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="_-2VXcj_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2VXcz_aEeOMf4ibmUJukw">
          <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="_-2VXdD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2VXdT_aEeOMf4ibmUJukw">
          <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="_-2V-gD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2V-gT_aEeOMf4ibmUJukw">
          <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 
let value : vocab::PostalAddressUse = element.oclAsType(vocab::PostalAddressUse) in 
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="_-2V-gj_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2V-gz_aEeOMf4ibmUJukw">
          <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="_-2WlkD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRoleAddr" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2WlkT_aEeOMf4ibmUJukw">
          <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="_-2Wlkj_aEeOMf4ibmUJukw" name="PolicyActivityHolderTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Wlkz_aEeOMf4ibmUJukw">
          <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="_-2XMoD_aEeOMf4ibmUJukw" name="PolicyActivityHolderTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2XMoT_aEeOMf4ibmUJukw">
          <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="_-2XMoj_aEeOMf4ibmUJukw" name="PolicyActivityHolderTime" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2XMoz_aEeOMf4ibmUJukw">
          <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="_-2XMpD_aEeOMf4ibmUJukw" name="PolicyActivityHolderHolderRole" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2XzsD_aEeOMf4ibmUJukw">
          <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="_-2YawD_aEeOMf4ibmUJukw" name="PolicyActivityEntryRelationshipTargetActActivity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2YawT_aEeOMf4ibmUJukw">
          <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="_-2Yawj_aEeOMf4ibmUJukw" name="PolicyActivityEntryRelationshipDescriptionCoveragePlan" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2Yawz_aEeOMf4ibmUJukw">
          <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="_-2YaxD_aEeOMf4ibmUJukw" name="PolicyActivityEntryRelationshipTypeCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2ZB0D_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Cg3pkBUmEeGvPruliC3crg" name="CoverageActivity">
      <ownedRule xmi:id="_xtqFkDZXEeGUovy31cP2ng" name="CoverageActivityRelationshipSequenceNumber" 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="_-kSlMD_aEeOMf4ibmUJukw" name="CoverageActivityTemplateId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kSlMT_aEeOMf4ibmUJukw">
          <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="_-kTzUD_aEeOMf4ibmUJukw" name="CoverageActivityClassCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kTzUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kUaYD_aEeOMf4ibmUJukw" name="CoverageActivityCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kUaYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kVogD_aEeOMf4ibmUJukw" name="CoverageActivityId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kVogT_aEeOMf4ibmUJukw">
          <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="_-kWPkD_aEeOMf4ibmUJukw" name="CoverageActivityMoodCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kWPkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kXdsD_aEeOMf4ibmUJukw" name="CoverageActivityStatusCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kXdsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kYr0D_aEeOMf4ibmUJukw" name="CoverageActivityPolicyActivity" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kYr0T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-kYr0j_aEeOMf4ibmUJukw" name="getPolicyActivities" isQuery="true" bodyCondition="_-kZS4j_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kZS4j_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kYr0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kZS4z_aEeOMf4ibmUJukw">
            <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="_-kZS4D_aEeOMf4ibmUJukw" type="_PZBdMBUlEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kZS4T_aEeOMf4ibmUJukw" 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>This field represents the resolution date (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="_-kbIED_aEeOMf4ibmUJukw" name="ProblemObservationTemplateId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kbIET_aEeOMf4ibmUJukw">
          <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="_-keycD_aEeOMf4ibmUJukw" name="ProblemObservationClassCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-keycT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kfZgD_aEeOMf4ibmUJukw" name="ProblemObservationMoodCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kfZgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kgAkD_aEeOMf4ibmUJukw" name="ProblemObservationNegationInd" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kgAkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kgnoD_aEeOMf4ibmUJukw" name="ProblemObservationId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kgnoT_aEeOMf4ibmUJukw">
          <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="_-kjD4D_aEeOMf4ibmUJukw" name="ProblemObservationCodeP" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kjD4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kh1wD_aEeOMf4ibmUJukw" name="ProblemObservationCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kh1wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-kkSAD_aEeOMf4ibmUJukw" name="ProblemObservationText" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kkSAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kk5ED_aEeOMf4ibmUJukw" name="ProblemObservationStatusCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kk5ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kmHMD_aEeOMf4ibmUJukw" name="ProblemObservationEffectiveTime" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kmHMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-knVUD_aEeOMf4ibmUJukw" name="ProblemObservationValue" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-knVUT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kn8YD_aEeOMf4ibmUJukw" name="ProblemObservationValueP" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kn8YT_aEeOMf4ibmUJukw">
          <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="_-kpKgD_aEeOMf4ibmUJukw" name="ProblemObservationAgeObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kpKgT_aEeOMf4ibmUJukw">
          <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="_-kq_sD_aEeOMf4ibmUJukw" name="ProblemObservationHealthStatusObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kq_sT_aEeOMf4ibmUJukw">
          <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="_-ky7gD_aEeOMf4ibmUJukw" name="ProblemObservationProblemStatus" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ky7gT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-kpxkD_aEeOMf4ibmUJukw" name="getAgeObservation" isQuery="true" bodyCondition="_-kpxkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kpxkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kpxkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kpxlD_aEeOMf4ibmUJukw">
            <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="_-kpxkT_aEeOMf4ibmUJukw" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kpxkj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-krmwD_aEeOMf4ibmUJukw" name="getHealthStatusObservation" isQuery="true" bodyCondition="_-krmwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-krmwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-krmwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-krmxD_aEeOMf4ibmUJukw">
            <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="_-krmwT_aEeOMf4ibmUJukw" type="_2ExXsBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-krmwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-kzikD_aEeOMf4ibmUJukw" name="getProblemStatus" isQuery="true" bodyCondition="_-kzikz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-kzikz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-kzikD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kzilD_aEeOMf4ibmUJukw">
            <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="_-kzikT_aEeOMf4ibmUJukw" type="_SjN_8BUzEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-kzikj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_SjN_8BUzEeGbmN_W114JUw" name="ProblemStatus">
      <ownedComment xmi:id="_DRGcECA8EeG9GZYpu7WBOQ">
        <body>The Problem Status records whether the indicated problem is active, inactive, or resolved.</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="_-krmxT_aEeOMf4ibmUJukw" name="ProblemStatusTemplateId" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-krmxj_aEeOMf4ibmUJukw">
          <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="_-ks04D_aEeOMf4ibmUJukw" name="ProblemStatusClassCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ks04T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kuDAD_aEeOMf4ibmUJukw" name="ProblemStatusMoodCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kuDAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kuqED_aEeOMf4ibmUJukw" name="ProblemStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kuqET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kv4MD_aEeOMf4ibmUJukw" name="ProblemStatusText" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kv4MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kwfQD_aEeOMf4ibmUJukw" name="ProblemStatusStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kwfQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-kyUcD_aEeOMf4ibmUJukw" name="ProblemStatusValue" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-kyUcT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="__qYdcBVNEeGbmN_W114JUw" name="ImmunizationRefusalReason">
      <ownedRule xmi:id="_-k6QQD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonTemplateId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k6QQT_aEeOMf4ibmUJukw">
          <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="_-k63UD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonClassCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k63UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-k8FcD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k8FcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="_-k9TkD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k9TkT_aEeOMf4ibmUJukw">
          <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="_-k96oD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonMoodCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k96oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-k-hsD_aEeOMf4ibmUJukw" name="ImmunizationRefusalReasonStatusCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-k-hsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__qr_cBVNEeGbmN_W114JUw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-lAW5T_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationTemplateId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lAW5j_aEeOMf4ibmUJukw">
          <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="_-lBlAD_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationClassCode" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lBlAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('classCode') and self.classCode=vocab::RoleClassManufacturedProduct::MANU</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lCMED_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lCMET_aEeOMf4ibmUJukw">
          <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="_-mmSVT_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationManufacturerOrganization" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mmSVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s8K4D_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationManufacturedMaterial" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s8K4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(cda::Material))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2uZAD_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeOriginalText" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2uZAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code.originalText->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2uZAj_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialOriginalTextReference" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2uZAz_aEeOMf4ibmUJukw">
          <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="_-2vAED_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialTextReferenceValue" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2vAET_aEeOMf4ibmUJukw">
          <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="_-2vAEj_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCodeTranslation" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2vAEz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->excluding(null)->reject(code->size() = 1 implies code.translation->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2vAFD_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialCode" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2vAFT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.manufacturedMaterial->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.12.292' and (value.code = '143' or value.code = '54' or value.code = '55' or value.code = '82' or value.code = '24' or value.code = '19' or value.code = '27' or value.code = '26' or value.code = '29' or value.code = '56' or value.code = '12' or value.code = '28' or value.code = '20' or value.code = '106' or value.code = '107' or value.code = '146' or value.code = '110' or value.code = '50' or value.code = '120' or value.code = '130' or value.code = '132' or value.code = '01' or value.code = '22' or value.code = '102' or value.code = '57' or value.code = '30' or value.code = '52' or value.code = '83' or value.code = '84' or value.code = '31' or value.code = '85' or value.code = '104' or value.code = '08' or value.code = '42' or value.code = '43' or value.code = '44' or value.code = '45' or value.code = '58' or value.code = '59' or value.code = '60' or value.code = '47' or value.code = '46' or value.code = '49' or value.code = '48' or value.code = '17' or value.code = '51' or value.code = '61' or value.code = '118' or value.code = '62' or value.code = '137' or value.code = '86' or value.code = '14' or value.code = '87' or value.code = '123' or value.code = '135' or value.code = '111' or value.code = '149' or value.code = '141' or value.code = '140' or value.code = '144' or value.code = '15' or value.code = '88' or value.code = '16' or value.code = '10' or value.code = '134' or value.code = '39' or value.code = '129' or value.code = '63' or value.code = '64' or value.code = '65' or value.code = '66' or value.code = '04' or value.code = '67' or value.code = '05' or value.code = '68' or value.code = '103' or value.code = '148' or value.code = '147' or value.code = '136' or value.code = '114' or value.code = '32' or value.code = '108' or value.code = '03' or value.code = '94' or value.code = '07' or value.code = '998' or value.code = '127' or value.code = '128' or value.code = '125' or value.code = '126' or value.code = '02' or value.code = '69' or value.code = '11' or value.code = '23' or value.code = '133' or value.code = '100' or value.code = '33' or value.code = '109' or value.code = '89' or value.code = '70' or value.code = '40' or value.code = '18' or value.code = '90' or value.code = '99' or value.code = '72' or value.code = '73' or value.code = '34' or value.code = '119' or value.code = '116' or value.code = '74' or value.code = '122' or value.code = '71' or value.code = '93' or value.code = '145' or value.code = '06' or value.code = '38' or value.code = '76' or value.code = '138' or value.code = '113' or value.code = '09' or value.code = '139' or value.code = '115' or value.code = '35' or value.code = '142' or value.code = '112' or value.code = '77' or value.code = '13' or value.code = '98' or value.code = '95' or value.code = '96' or value.code = '97' or value.code = '78' or value.code = '25' or value.code = '41' or value.code = '53' or value.code = '91' or value.code = '101' or value.code = '131' or value.code = '999' or value.code = '75' or value.code = '105' or value.code = '79' or value.code = '21' or value.code = '81' or value.code = '80' or value.code = '92' or value.code = '36' or value.code = '117' or value.code = '37' or value.code = '121')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2vnID_aEeOMf4ibmUJukw" name="ImmunizationMedicationInformationImmunizationMedicationInformationManufacturedMaterialLotNumberText" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2vnIT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-lHElT_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lHElj_aEeOMf4ibmUJukw">
          <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="_-lISsD_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lISsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lJg0D_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalCodeP" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lJg0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lKH4D_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalTitle" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lKu8D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lLWAD_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalText" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lLWAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m3YED_aEeOMf4ibmUJukw" name="AllergiesSectionEntriesOptionalAllergyProblemAct" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m3YET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m3YEj_aEeOMf4ibmUJukw" name="getAllergyProblemActs" isQuery="true" bodyCondition="_-m3YFT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m3YFT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m3YEj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m3_ID_aEeOMf4ibmUJukw">
            <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="_-m3YEz_aEeOMf4ibmUJukw" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m3YFD_aEeOMf4ibmUJukw" 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="_-lL9ED_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lL9ET_aEeOMf4ibmUJukw">
          <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="_-lMkID_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lMkIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lNyQD_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalTitle" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lNyQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lPAYD_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalText" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lPAYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m3_IT_aEeOMf4ibmUJukw" name="MedicationsSectionEntriesOptionalMedicationActivity" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m3_Ij_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m4mMD_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-m4mMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m4mMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m4mMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m4mND_aEeOMf4ibmUJukw">
            <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="_-m4mMT_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m4mMj_aEeOMf4ibmUJukw" 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="_-lPAYj_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lPncD_aEeOMf4ibmUJukw">
          <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="_-lQOgD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalCode" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lQOgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lRcoD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalCodeP" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lRcoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lSDsD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalTitle" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lSDsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lSqwD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalText" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lSqwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m7pgD_aEeOMf4ibmUJukw" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m7pgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m7pgj_aEeOMf4ibmUJukw" name="getProblemConcerns" isQuery="true" bodyCondition="_-m7phT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m7phT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m7pgj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m7phj_aEeOMf4ibmUJukw">
            <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="_-m7pgz_aEeOMf4ibmUJukw" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m7phD_aEeOMf4ibmUJukw" 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="_-lTR0D_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lTR0T_aEeOMf4ibmUJukw">
          <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="_-lUf8D_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lUf8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lVHAD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalCodeP" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lVuED_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lWVID_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalTitle" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lWVIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lW8MD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalText" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lW8MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mm5YD_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalProcedureActivityProcedure" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mm5YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mngdT_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalProcedureAcivityObservation" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mngdj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProcedureActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-moHhT_aEeOMf4ibmUJukw" name="ProceduresSectionEntriesOptionalProcedureActivityAct" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-moHhj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-mngcD_aEeOMf4ibmUJukw" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_-mngcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mngcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mngcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mngdD_aEeOMf4ibmUJukw">
            <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="_-mngcT_aEeOMf4ibmUJukw" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mngcj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-moHgD_aEeOMf4ibmUJukw" name="getProcedureAcivityObservations" isQuery="true" bodyCondition="_-moHgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-moHgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-moHgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-moHhD_aEeOMf4ibmUJukw">
            <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="_-moHgT_aEeOMf4ibmUJukw" type="_Aj7JkBg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-moHgj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-moukD_aEeOMf4ibmUJukw" name="getProcedureActivityActs" isQuery="true" bodyCondition="_-moukz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-moukz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-moukD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-moulD_aEeOMf4ibmUJukw">
            <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="_-moukT_aEeOMf4ibmUJukw" type="_awdH4Bg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-moukj_aEeOMf4ibmUJukw" 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="_-lXjQD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lXjQT_aEeOMf4ibmUJukw">
          <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="_-lYxYD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalCode" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lYxYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lZYcD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalCodeP" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lZYcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lamkD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalTitle" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lamkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lbNoD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalText" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lbNoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m5NQD_aEeOMf4ibmUJukw" name="ResultsSectionEntriesOptionalResultOrganizer" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m5NQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m50UD_aEeOMf4ibmUJukw" name="getResultOrganizers" isQuery="true" bodyCondition="_-m50Uz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m50Uz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m50UD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m50VD_aEeOMf4ibmUJukw">
            <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="_-m50UT_aEeOMf4ibmUJukw" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m50Uj_aEeOMf4ibmUJukw" 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="_-lb0sD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lb0sT_aEeOMf4ibmUJukw">
          <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="_-ldC0D_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ldC0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ldp4D_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalCodeP" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ldp4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-le4AD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalTitle" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-le4AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lffED_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalText" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lffET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-njUkD_aEeOMf4ibmUJukw" name="AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-njUkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-nj7oD_aEeOMf4ibmUJukw" name="getAdvanceDirectiveObservations" isQuery="true" bodyCondition="_-nj7oz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-nj7oz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-nj7oD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nj7pD_aEeOMf4ibmUJukw">
            <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="_-nj7oT_aEeOMf4ibmUJukw" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-nj7oj_aEeOMf4ibmUJukw" 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="_-lgGID_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lgGIT_aEeOMf4ibmUJukw">
          <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="_-lhUQD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalCode" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lhUQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-liiYD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalCodeP" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-liiYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ljJcD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalTitle" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ljJcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lkXkD_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalText" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lkXkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oDD0D_aEeOMf4ibmUJukw" name="EncountersSectionEntriesOptionalEncounterActivities" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oDD0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-oDq4D_aEeOMf4ibmUJukw" name="getEncounterActivitiess" isQuery="true" bodyCondition="_-oDq4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-oDq4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-oDq4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oDq5D_aEeOMf4ibmUJukw">
            <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="_-oDq4T_aEeOMf4ibmUJukw" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-oDq4j_aEeOMf4ibmUJukw" 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="_-lk-oD_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lk-oT_aEeOMf4ibmUJukw">
          <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="_-lllsD_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lllsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lmz0D_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalCodeP" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lmz0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lna4D_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalTitle" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lna4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lopAD_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalText" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lopAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m6bZT_aEeOMf4ibmUJukw" name="ImmunizationsSectionEntriesOptionalImmunizationActivity" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m6bZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m7CcD_aEeOMf4ibmUJukw" name="getImmunizationActivities" isQuery="true" bodyCondition="_-m7Ccz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m7Ccz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m7CcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m7CdD_aEeOMf4ibmUJukw">
            <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="_-m7CcT_aEeOMf4ibmUJukw" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m7Ccj_aEeOMf4ibmUJukw" 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="_-lpQED_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lpQET_aEeOMf4ibmUJukw">
          <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="_-lp3ID_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lp3IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lrFQD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalCodeP" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lrFQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lsTYD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalText" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lsTYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ls6cD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalTitle" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ls6cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mpVoD_aEeOMf4ibmUJukw" name="VitalSignsSectionEntriesOptionalVitalSignsOrganizer" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mpVoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-mpVoj_aEeOMf4ibmUJukw" name="getVitalSignsOrganizers" isQuery="true" bodyCondition="_-mpVpT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mpVpT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mpVoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mpVpj_aEeOMf4ibmUJukw">
            <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="_-mpVoz_aEeOMf4ibmUJukw" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mpVpD_aEeOMf4ibmUJukw" 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="_-lthgD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationTemplateId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lthgT_aEeOMf4ibmUJukw">
          <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="_-lwk0D_aEeOMf4ibmUJukw" name="ProcedureActivityObservationClassCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lwk0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lxy8D_aEeOMf4ibmUJukw" name="ProcedureActivityObservationMoodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lxy8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_ActMoodDocumentObservation) and 
let value : vocab::x_ActMoodDocumentObservation = self.moodCode.oclAsType(vocab::x_ActMoodDocumentObservation) in 
value = vocab::x_ActMoodDocumentObservation::EVN or value = vocab::x_ActMoodDocumentObservation::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-lzBED_aEeOMf4ibmUJukw" name="ProcedureActivityObservationId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lzBET_aEeOMf4ibmUJukw">
          <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="_-lzoID_aEeOMf4ibmUJukw" name="ProcedureActivityObservationCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-lzoIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-l0PMD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationStatusCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l02QD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-l1dUD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationValue" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l1dUT_aEeOMf4ibmUJukw">
          <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="_-l2EYD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEffectiveTime" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l2EYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-l4goD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationPriorityCodeP" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l4goT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-l3SgD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationPriorityCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l3SgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in 
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="_-l5HsD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationMethodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l5HsT_aEeOMf4ibmUJukw">
          <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="_-l7j8D_aEeOMf4ibmUJukw" name="ProcedureActivityObservationTargetSiteCodeP" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l7j8T_aEeOMf4ibmUJukw">
          <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="_-l6V0D_aEeOMf4ibmUJukw" name="ProcedureActivityObservationTargetSiteCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-l6V0T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mtnFT_aEeOMf4ibmUJukw" name="ProcedureActivityObservationPerformer" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mtnFj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-muOID_aEeOMf4ibmUJukw" name="ProcedureActivityObservationServiceDeliveryLocation" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-muOIT_aEeOMf4ibmUJukw">
          <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="_-mu1NT_aEeOMf4ibmUJukw" name="ProcedureActivityObservationInstructions" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mu1Nj_aEeOMf4ibmUJukw">
          <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="_-mwDUD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationIndication" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mwDUT_aEeOMf4ibmUJukw">
          <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="_-mwqYD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationMedicationActivity" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mwqYT_aEeOMf4ibmUJukw">
          <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="_-ujUcD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationship" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ujUcT_aEeOMf4ibmUJukw">
          <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="_-2xcUD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2xcUT_aEeOMf4ibmUJukw">
          <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="_-2xcUj_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationName" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2xcUz_aEeOMf4ibmUJukw">
          <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="_-2xcVD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationTelecom" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2xcVT_aEeOMf4ibmUJukw">
          <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="_-2yDYD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityProcedureObservationRepresentedOrganizationAddr" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yDYT_aEeOMf4ibmUJukw">
          <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="_-2yDYj_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yDYz_aEeOMf4ibmUJukw">
          <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="_-2yDZD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityAddr" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yDZT_aEeOMf4ibmUJukw">
          <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="_-2yqcD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityTelecom" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yqcT_aEeOMf4ibmUJukw">
          <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="_-2yqcj_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerProcedureObservationAssignedEntityRepresentedOrganization" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yqcz_aEeOMf4ibmUJukw">
          <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="_-2yqdD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationProcedureObservationPerformerAssignedEntity" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2yqdT_aEeOMf4ibmUJukw">
          <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="_-2z4kD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterClassCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2z4kT_aEeOMf4ibmUJukw">
          <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="_-20foD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterMoodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-20foT_aEeOMf4ibmUJukw">
          <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="_-20foj_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounterId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-20foz_aEeOMf4ibmUJukw">
          <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="_-20fpD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipInversionInd" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-20fpT_aEeOMf4ibmUJukw">
          <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="_-21GsD_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipTypeCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-21GsT_aEeOMf4ibmUJukw">
          <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="_-21Gsj_aEeOMf4ibmUJukw" name="ProcedureActivityObservationEntryRelationshipProcedureObservationEncounter" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-21Gsz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-mu1MD_aEeOMf4ibmUJukw" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_-mu1Mz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mu1Mz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mu1MD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mu1ND_aEeOMf4ibmUJukw">
            <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="_-mu1MT_aEeOMf4ibmUJukw" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mu1Mj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mvcQD_aEeOMf4ibmUJukw" name="getInstructions" isQuery="true" bodyCondition="_-mvcQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mvcQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mvcQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mvcRD_aEeOMf4ibmUJukw">
            <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="_-mvcQT_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mvcQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mwDUj_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-mwDVT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mwDVT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mwDUj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mwDVj_aEeOMf4ibmUJukw">
            <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="_-mwDUz_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mwDVD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mwqYj_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-mwqZT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mwqZT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mwqYj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mwqZj_aEeOMf4ibmUJukw">
            <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="_-mwqYz_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mwqZD_aEeOMf4ibmUJukw" 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="_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="_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="_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="_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="_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="_-mFU8D_aEeOMf4ibmUJukw" name="ProcedureActivityActTemplateId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mFU8T_aEeOMf4ibmUJukw">
          <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="_-mIYQD_aEeOMf4ibmUJukw" name="ProcedureActivityActClassCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mIYQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mJmYD_aEeOMf4ibmUJukw" name="ProcedureActivityActMoodCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mJmYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.moodCode.oclIsUndefined() and self.moodCode.oclIsKindOf(vocab::x_DocumentActMood) and 
let value : vocab::x_DocumentActMood = self.moodCode.oclAsType(vocab::x_DocumentActMood) in 
value = vocab::x_DocumentActMood::EVN or value = vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mK0gD_aEeOMf4ibmUJukw" name="ProcedureActivityActId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mK0gT_aEeOMf4ibmUJukw">
          <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="_-mLbkD_aEeOMf4ibmUJukw" name="ProcedureActivityActCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mLbkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mMCoD_aEeOMf4ibmUJukw" name="ProcedureActivityActStatusCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mMCoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mNQwD_aEeOMf4ibmUJukw" name="ProcedureActivityActEffectiveTime" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mNQwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mPF8D_aEeOMf4ibmUJukw" name="ProcedureActivityActPriorityCodeP" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mPF8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mOe4D_aEeOMf4ibmUJukw" name="ProcedureActivityActPriorityCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mOe4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined() and self.priorityCode.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.priorityCode.oclAsType(datatypes::CE) in 
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="_-mqjwT_aEeOMf4ibmUJukw" name="ProcedureActivityActPerformer" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mqjwj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mrK0D_aEeOMf4ibmUJukw" name="ProcedureActivityActServiceDeliveryLocation" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mrK0T_aEeOMf4ibmUJukw">
          <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="_-mrx4T_aEeOMf4ibmUJukw" name="ProcedureActivityActInstructions" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mrx4j_aEeOMf4ibmUJukw">
          <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="_-msY9T_aEeOMf4ibmUJukw" name="ProcedureActivityActIndication" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-msY9j_aEeOMf4ibmUJukw">
          <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="_-mtABT_aEeOMf4ibmUJukw" name="ProcedureActivityActMedicationActivity" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mtABj_aEeOMf4ibmUJukw">
          <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="_-uitYD_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationship" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uitYT_aEeOMf4ibmUJukw">
          <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="_-21twD_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntity" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-21twT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-22U0D_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-22U0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.id->size() >= 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-22U0j_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityAddr" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-22U0z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.addr->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-22U1D_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityTelecom" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-22U1T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.telecom->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2274D_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityRepOrg" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2274T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.representedOrganization->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2274j_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2274z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.representedOrganization.id->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-2275D_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgName" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2275T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.representedOrganization.name->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-23i8D_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgAddr" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-23i8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.representedOrganization.addr->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-23i8j_aEeOMf4ibmUJukw" name="ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgTelecom" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-23i8z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.performer->excluding(null)->reject(assignedEntity.representedOrganization.telecom->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-24xED_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-24xET_aEeOMf4ibmUJukw">
          <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="_-24xEj_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-24xEz_aEeOMf4ibmUJukw">
          <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="_-24xFD_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipProcedureActEncounterId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-24xFT_aEeOMf4ibmUJukw">
          <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="_-25YID_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipInversionInd" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-25YIT_aEeOMf4ibmUJukw">
          <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="_-25YIj_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipTypeCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-25YIz_aEeOMf4ibmUJukw">
          <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="_-25YJD_aEeOMf4ibmUJukw" name="ProcedureActivityActEntryRelationshipProcedureActEncounter" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-25YJT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-mrK0j_aEeOMf4ibmUJukw" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_-mrK1T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mrK1T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mrK0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mrx4D_aEeOMf4ibmUJukw">
            <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="_-mrK0z_aEeOMf4ibmUJukw" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mrK1D_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-msY8D_aEeOMf4ibmUJukw" name="getInstructions" isQuery="true" bodyCondition="_-msY8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-msY8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-msY8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-msY9D_aEeOMf4ibmUJukw">
            <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="_-msY8T_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-msY8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mtAAD_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-mtAAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mtAAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mtAAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mtABD_aEeOMf4ibmUJukw">
            <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="_-mtAAT_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mtAAj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-mtnED_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-mtnEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mtnEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mtnED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mtnFD_aEeOMf4ibmUJukw">
            <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="_-mtnET_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mtnEj_aEeOMf4ibmUJukw" 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="_-mWasT_aEeOMf4ibmUJukw" name="AuthorizationActivityTemplateId" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mWasj_aEeOMf4ibmUJukw">
          <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="_-mXo0D_aEeOMf4ibmUJukw" name="AuthorizationActivityClassCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mXo0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mYP4D_aEeOMf4ibmUJukw" name="AuthorizationActivityId" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mYP4T_aEeOMf4ibmUJukw">
          <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="_-mY28D_aEeOMf4ibmUJukw" name="AuthorizationActivityMoodCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mY28T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ufDAD_aEeOMf4ibmUJukw" name="AuthorizationActivityEntryRelationship" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ufDAT_aEeOMf4ibmUJukw">
          <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="_-26mQD_aEeOMf4ibmUJukw" name="AuthorizationActivityEntryRelationshipHasClinicalStatement" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-26mQT_aEeOMf4ibmUJukw">
          <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="_-26mQj_aEeOMf4ibmUJukw" name="AuthorizationActivityEntryRelationshipHasAuthorizedPerformers" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-26mQz_aEeOMf4ibmUJukw">
          <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="_-26mRD_aEeOMf4ibmUJukw" name="AuthorizationActivityEntryRelationshipTypeCode" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-26mRT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-mb6QD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderTemplateId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mb6QT_aEeOMf4ibmUJukw">
          <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="_-mdvcD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderClassCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mdvcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassSupply::SPLY</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-meWgD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderEffectiveTime" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-meWgT_aEeOMf4ibmUJukw">
          <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="_-me9kD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderMoodCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-me9kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentSubstanceMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mfkoD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderQuantity" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mfkoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mgLsD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderRepeatNumber" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mgLsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mgywD_aEeOMf4ibmUJukw" name="MedicationSupplyOrderStatusCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mgywT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mhZ0D_aEeOMf4ibmUJukw" name="MedicationSupplyOrderId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mhZ0T_aEeOMf4ibmUJukw">
          <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="_-miA4D_aEeOMf4ibmUJukw" name="MedicationSupplyOrderAuthor" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-miA4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-min8D_aEeOMf4ibmUJukw" name="MedicationSupplyOrderInstructions" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-min8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_-mjPAD_aEeOMf4ibmUJukw" name="getInstructions" isQuery="true" bodyCondition="_-mjPAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-mjPAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-mjPAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mjPBD_aEeOMf4ibmUJukw">
            <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="_-mjPAT_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-mjPAj_aEeOMf4ibmUJukw" 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="_-mxRcD_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryTemplateId" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mxRcT_aEeOMf4ibmUJukw">
          <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="_-mx4gD_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryClassCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mx4gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-myfkD_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-myfkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '11778-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-mztsD_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryMoodCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-mztsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m070D_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryStatusCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m070T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m1i4D_aEeOMf4ibmUJukw" name="EstimatedDateOfDeliveryValue" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m1i4T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-m9etj_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionTemplateId" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m9etz_aEeOMf4ibmUJukw">
          <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="_-m-s0D_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionCode" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m-s0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-m_68D_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionCodeP" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m_68T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nAiAD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionTitle" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nAiAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nBJED_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionText" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nBJET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nr3cD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nr3cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-nsegD_aEeOMf4ibmUJukw" name="getHospitalDischargeDiagnosis" isQuery="true" bodyCondition="_-nsegz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-nsegz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-nsegD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nsehD_aEeOMf4ibmUJukw">
            <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="_-nsegT_aEeOMf4ibmUJukw" type="_KtwVgCULEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-nsegj_aEeOMf4ibmUJukw" 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="_-nBwID_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nBwIT_aEeOMf4ibmUJukw">
          <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="_-nC-QD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nC-QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nDlUD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalCodeP" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nEMYD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nEzcD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nEzcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nFagD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nFagT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ntFkD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ntFkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-ntFkj_aEeOMf4ibmUJukw" name="getDischargeMedications" isQuery="true" bodyCondition="_-ntFlT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ntFlT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ntFkj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ntFlj_aEeOMf4ibmUJukw">
            <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="_-ntFkz_aEeOMf4ibmUJukw" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ntFlD_aEeOMf4ibmUJukw" 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="_-nGBkD_aEeOMf4ibmUJukw" name="HospitalCourseSectionTemplateId" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nGBkT_aEeOMf4ibmUJukw">
          <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="_-nHPsD_aEeOMf4ibmUJukw" name="HospitalCourseSectionCode" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nHPsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '8648-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nId0D_aEeOMf4ibmUJukw" name="HospitalCourseSectionCodeP" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nId0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nJE4D_aEeOMf4ibmUJukw" name="HospitalCourseSectionTitle" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nJE4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nJr8D_aEeOMf4ibmUJukw" name="HospitalCourseSectionText" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nJr8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RqkQxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-nKTAD_aEeOMf4ibmUJukw" name="DischargeDietSectionTemplateId" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nKTAT_aEeOMf4ibmUJukw">
          <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="_-nLhID_aEeOMf4ibmUJukw" name="DischargeDietSectionCode" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nLhIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '42344-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nMIMD_aEeOMf4ibmUJukw" name="DischargeDietSectionCodeP" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nMIMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nNWUD_aEeOMf4ibmUJukw" name="DischargeDietSectionTitle" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nNWUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nN9YD_aEeOMf4ibmUJukw" name="DischargeDietSectionText" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nN9YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2U6FchSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-nOkcD_aEeOMf4ibmUJukw" name="HospitalDischargeStudiesSummarySectionTemplateId" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nOkcT_aEeOMf4ibmUJukw">
          <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="_-nPykD_aEeOMf4ibmUJukw" name="HospitalDischargeStudiesSummarySectionCode" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nPykT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11493-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nQZoD_aEeOMf4ibmUJukw" name="HospitalDischargeStudiesSummarySectionCodeP" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nQZoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nRnwD_aEeOMf4ibmUJukw" name="HospitalDischargeStudiesSummarySectionTitle" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nRnwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nSO0D_aEeOMf4ibmUJukw" name="HospitalDischargeStudiesSummarySectionText" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nSO0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_38JhkCUTEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-m8QkD_aEeOMf4ibmUJukw" name="DischargeMedicationMedicationActivity" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m8QkT_aEeOMf4ibmUJukw">
          <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="_-nS14D_aEeOMf4ibmUJukw" name="DischargeMedicationTemplateId" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nS14T_aEeOMf4ibmUJukw">
          <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="_-nTc8D_aEeOMf4ibmUJukw" name="DischargeMedicationClassCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nTc8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nUrED_aEeOMf4ibmUJukw" name="DischargeMedicationMoodCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nUrET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nVSID_aEeOMf4ibmUJukw" name="DischargeMedicationCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nVSIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m83oT_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-m83pD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m83pD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m83oT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m83pT_aEeOMf4ibmUJukw">
            <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="_-m83oj_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m83oz_aEeOMf4ibmUJukw" 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="_-m83pj_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisProblemObservation" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m83pz_aEeOMf4ibmUJukw">
          <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="_-nWgQD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisTemplateId" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nWgQT_aEeOMf4ibmUJukw">
          <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="_-nXHUD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisClassCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nXHUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nXuYD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisMoodCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nXuYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nY8gD_aEeOMf4ibmUJukw" name="HospitalDischargeDiagnosisCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nY8gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-m9esT_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-m9etD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-m9etD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-m9esT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-m9etT_aEeOMf4ibmUJukw">
            <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="_-m9esj_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-m9esz_aEeOMf4ibmUJukw" 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="_-nZjkD_aEeOMf4ibmUJukw" name="HospitalDischargeInstructionsSectionTemplateId" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nZjkT_aEeOMf4ibmUJukw">
          <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="_-naxsD_aEeOMf4ibmUJukw" name="HospitalDischargeInstructionsSectionCode" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-naxsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '8653-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nb_0D_aEeOMf4ibmUJukw" name="HospitalDischargeInstructionsSectionCodeP" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nb_0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ncm4D_aEeOMf4ibmUJukw" name="HospitalDischargeInstructionsSectionTitle" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ncm4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ndN8D_aEeOMf4ibmUJukw" name="HospitalDischargeInstructionsSectionText" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ndN8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_lBfSkCUMEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-necED_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-necET_aEeOMf4ibmUJukw">
          <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="_-ngRQD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalCodeP" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ngRQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nfDID_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nfqMD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nhfYD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalText" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nhfYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nitgD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalTitle" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nitgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ntsoD_aEeOMf4ibmUJukw" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ntsoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="_-nuTsD_aEeOMf4ibmUJukw" name="getConsolDischargeMedications" isQuery="true" bodyCondition="_-nuTsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-nuTsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-nuTsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nuTtD_aEeOMf4ibmUJukw">
            <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="_-nuTsT_aEeOMf4ibmUJukw" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-nuTsj_aEeOMf4ibmUJukw" 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="_-nnmAT_aEeOMf4ibmUJukw" name="HospitalDischargePhysicalSectionTemplateId" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nnmAj_aEeOMf4ibmUJukw">
          <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="_-no0ID_aEeOMf4ibmUJukw" name="HospitalDischargePhysicalSectionCode" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-no0IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10184-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-npbMD_aEeOMf4ibmUJukw" name="HospitalDischargePhysicalSectionCodeP" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-npbMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nqpUD_aEeOMf4ibmUJukw" name="HospitalDischargePhysicalSectionTitle" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nqpUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nrQYD_aEeOMf4ibmUJukw" name="HospitalDischargePhysicalSectionText" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nrQYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_WikGsSUTEeGiOPpZVnfEJA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-nuTtT_aEeOMf4ibmUJukw" name="ChiefComplaintAndReasonForVisitSectionTemplateId" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nuTtj_aEeOMf4ibmUJukw">
          <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="_-nu6wD_aEeOMf4ibmUJukw" name="ChiefComplaintAndReasonForVisitSectionCode" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nu6wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '46239-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nwI4D_aEeOMf4ibmUJukw" name="ChiefComplaintAndReasonForVisitSectionCodeP" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nwI4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nxXAD_aEeOMf4ibmUJukw" name="ChiefComplaintAndReasonForVisitSectionText" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nxXAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-nx-ED_aEeOMf4ibmUJukw" name="ChiefComplaintAndReasonForVisitSectionTitle" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nx-ET_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-nylID_aEeOMf4ibmUJukw" name="ReasonForVisitSectionTemplateId" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nylIT_aEeOMf4ibmUJukw">
          <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="_-nzzQD_aEeOMf4ibmUJukw" name="ReasonForVisitSectionCode" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-nzzQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '29299-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n0aUD_aEeOMf4ibmUJukw" name="ReasonForVisitSectionCodeP" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n0aUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n1ocD_aEeOMf4ibmUJukw" name="ReasonForVisitSectionText" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n1ocT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-n2PgD_aEeOMf4ibmUJukw" name="ReasonForVisitSectionTitle" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-n2PgT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-oGuMD_aEeOMf4ibmUJukw" name="AnesthesiaSectionTemplateId" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oGuMT_aEeOMf4ibmUJukw">
          <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="_-oHVQD_aEeOMf4ibmUJukw" name="AnesthesiaSectionCode" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oHVQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59774-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oIjYD_aEeOMf4ibmUJukw" name="AnesthesiaSectionCodeP" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oIjYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oJxgD_aEeOMf4ibmUJukw" name="AnesthesiaSectionText" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oJxgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oKYkD_aEeOMf4ibmUJukw" name="AnesthesiaSectionTitle" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oKYkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pw7ED_aEeOMf4ibmUJukw" name="AnesthesiaSectionProcedureActivityProcedure" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pw7ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::ProcedureActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pxiID_aEeOMf4ibmUJukw" name="AnesthesiaSectionMedicationActivity" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pxiIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-pw7Ej_aEeOMf4ibmUJukw" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_-pw7FT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-pw7FT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-pw7Ej_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pw7Fj_aEeOMf4ibmUJukw">
            <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="_-pw7Ez_aEeOMf4ibmUJukw" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-pw7FD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-pyJMD_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-pyJMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-pyJMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-pyJMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pyJND_aEeOMf4ibmUJukw">
            <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="_-pyJMT_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-pyJMj_aEeOMf4ibmUJukw" 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="_-oK_oD_aEeOMf4ibmUJukw" name="ComplicationsSectionTemplateId" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oK_oT_aEeOMf4ibmUJukw">
          <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="_-oMNwD_aEeOMf4ibmUJukw" name="ComplicationsSectionCode" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oMNwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '55109-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oNb4D_aEeOMf4ibmUJukw" name="ComplicationsSectionCodeP" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oNb4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oOC8D_aEeOMf4ibmUJukw" name="ComplicationsSectionTitle" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oOC8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oOqAD_aEeOMf4ibmUJukw" name="ComplicationsSectionText" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oOqAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uXHMD_aEeOMf4ibmUJukw" name="ComplicationsSectionProblemObservation" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uXHMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uXuQD_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-uXuQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uXuQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uXuQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uXuRD_aEeOMf4ibmUJukw">
            <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="_-uXuQT_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uXuQj_aEeOMf4ibmUJukw" 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="_-oPRED_aEeOMf4ibmUJukw" name="DICOMObjectCatalogSectionTemplateId" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oPRET_aEeOMf4ibmUJukw">
          <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="_-oQfMD_aEeOMf4ibmUJukw" name="DICOMObjectCatalogSectionCode" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oQfMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '121181' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oRtUD_aEeOMf4ibmUJukw" name="DICOMObjectCatalogSectionCodeP" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oRtUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uPydT_aEeOMf4ibmUJukw" name="DICOMObjectCatalogSectionStudyAct" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uPydj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uQZgD_aEeOMf4ibmUJukw" name="getStudyActs" isQuery="true" bodyCondition="_-uQZgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uQZgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uQZgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uQZhD_aEeOMf4ibmUJukw">
            <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="_-uQZgT_aEeOMf4ibmUJukw" type="_vjf-wEb4EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uQZgj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_ZcC-4DVyEeGaW4kr-GbV8Q" name="FindingsSection">
      <ownedRule xmi:id="_-oSUYD_aEeOMf4ibmUJukw" name="FindingsSectionTemplateId" constrainedElement="_ZcC-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oS7cD_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-oTigD_aEeOMf4ibmUJukw" name="HospitalConsultationsSectionTemplateId" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oTigT_aEeOMf4ibmUJukw">
          <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="_-oUJkD_aEeOMf4ibmUJukw" name="HospitalConsultationsSectionCode" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oUJkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '18841-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oVXsD_aEeOMf4ibmUJukw" name="HospitalConsultationsSectionCodeP" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oVXsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oWl0D_aEeOMf4ibmUJukw" name="HospitalConsultationsSectionText" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oWl0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oXM4D_aEeOMf4ibmUJukw" name="HospitalConsultationsSectionTitle" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oXM4T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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>The Interventions section contains information about the specific interventions provided during the healthcare visit. Depending on the type of intervention(s) provided (procedural, education, application of assistive equipment, etc.), the details will vary but may include specification of frequency, intensity, and duration.</body>
      </ownedComment>
      <ownedRule xmi:id="_-oXz8D_aEeOMf4ibmUJukw" name="InterventionsSectionTemplateId" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oXz8T_aEeOMf4ibmUJukw">
          <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="_-oYbAD_aEeOMf4ibmUJukw" name="InterventionsSectionCode" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oYbAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '62387-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oZpID_aEeOMf4ibmUJukw" name="InterventionsSectionCodeP" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oZpIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oa3QD_aEeOMf4ibmUJukw" name="InterventionsSectionText" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oa3QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-obeUD_aEeOMf4ibmUJukw" name="InterventionsSectionTitle" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-obeUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_hqzJATVyEeGaW4kr-GbV8Q">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-ocFYD_aEeOMf4ibmUJukw" name="MedicalHistorySectionTemplateId" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ocFYT_aEeOMf4ibmUJukw">
          <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="_-ocscD_aEeOMf4ibmUJukw" name="MedicalHistorySectionCode" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ocscT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '11329-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-od6kD_aEeOMf4ibmUJukw" name="MedicalHistorySectionCodeP" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-od6kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ofIsD_aEeOMf4ibmUJukw" name="MedicalHistorySectionText" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ofIsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ofvwD_aEeOMf4ibmUJukw" name="MedicalHistorySectionTitle" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ofvwT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-ogW0D_aEeOMf4ibmUJukw" name="ObjectiveSectionTemplateId" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ogW0T_aEeOMf4ibmUJukw">
          <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="_-og94D_aEeOMf4ibmUJukw" name="ObjectiveSectionCode" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-og94T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '61149-1' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oiMAD_aEeOMf4ibmUJukw" name="ObjectiveSectionCodeP" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oiMAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-oizED_aEeOMf4ibmUJukw" name="ObjectiveSectionText" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-oizET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-okBMD_aEeOMf4ibmUJukw" name="ObjectiveSectionTitle" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-okBMT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-okBMj_aEeOMf4ibmUJukw" name="OperativeNoteFluidSectionTemplateId" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-okoQD_aEeOMf4ibmUJukw">
          <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="_-olPUD_aEeOMf4ibmUJukw" name="OperativeNoteFluidSectionCode" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-olPUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10216-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-omdcD_aEeOMf4ibmUJukw" name="OperativeNoteFluidSectionCodeP" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-omdcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o2VED_aEeOMf4ibmUJukw" name="OperativeNoteFluidSectionText" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o2VET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o3jMD_aEeOMf4ibmUJukw" name="OperativeNoteFluidSectionTitle" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o3jMT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-o4KQD_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSectionTemplateId" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o4KQT_aEeOMf4ibmUJukw">
          <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="_-o4xUD_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSectionCode" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o4xUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10223-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o5_cD_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSectionCodeP" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o5_cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o7NkD_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSectionText" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o7NkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o70oD_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSectionTitle" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o70oT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-o8bsD_aEeOMf4ibmUJukw" name="PlannedProcedureSectionTemplateId" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o8bsT_aEeOMf4ibmUJukw">
          <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="_-o9CwD_aEeOMf4ibmUJukw" name="PlannedProcedureSectionCode" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o9CwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59772-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o-Q4D_aEeOMf4ibmUJukw" name="PlannedProcedureSectionCodeP" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o-Q4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-o_fAD_aEeOMf4ibmUJukw" name="PlannedProcedureSectionText" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-o_fAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pAGED_aEeOMf4ibmUJukw" name="PlannedProcedureSectionTitle" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pAGET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sQOYT_aEeOMf4ibmUJukw" name="PlannedProcedureSectionPlanOfCareActivityProcedure" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sQOYj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sQ1cD_aEeOMf4ibmUJukw" name="getPlanOfCareActivityProcedures" isQuery="true" bodyCondition="_-sQ1cz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sQ1cz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sQ1cD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sQ1dD_aEeOMf4ibmUJukw">
            <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="_-sQ1cT_aEeOMf4ibmUJukw" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sQ1cj_aEeOMf4ibmUJukw" 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="_-pAtID_aEeOMf4ibmUJukw" name="PostoperativeDiagnosisSectionTemplateId" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pAtIT_aEeOMf4ibmUJukw">
          <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="_-pBUMD_aEeOMf4ibmUJukw" name="PostoperativeDiagnosisSectionCode" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pBUMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10218-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pCiUD_aEeOMf4ibmUJukw" name="PostoperativeDiagnosisSectionCodeP" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pCiUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pDJYD_aEeOMf4ibmUJukw" name="PostoperativeDiagnosisSectionText" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pDJYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pEXgD_aEeOMf4ibmUJukw" name="PostoperativeDiagnosisSectionTitle" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pEXgT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-pE-kD_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionTemplateId" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pE-kT_aEeOMf4ibmUJukw">
          <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="_-pGzwD_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionCodeP" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pGzwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pFloD_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionCode" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pFloT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pHa0D_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionText" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pHa0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pIo8D_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionTitle" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pIo8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sVG5T_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisSectionPostprocedureDiagnosis" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sVG5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sVt8D_aEeOMf4ibmUJukw" name="getPostprocedureDiagnosis" isQuery="true" bodyCondition="_-sVt8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sVt8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sVt8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sVt9D_aEeOMf4ibmUJukw">
            <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="_-sVt8T_aEeOMf4ibmUJukw" type="_0fjXAEEvEeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sVt8j_aEeOMf4ibmUJukw" 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="_-pJQAD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionTemplateId" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pJQAT_aEeOMf4ibmUJukw">
          <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="_-pJ3ED_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionCode" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pJ3ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pLFMD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionCodeP" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pLFMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pLsQD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionText" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pMTUD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pM6YD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionTitle" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pM6YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uZjcD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisSectionPreoperativeDiagnosis" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uZjcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uZjcj_aEeOMf4ibmUJukw" name="getPreoperativeDiagnosis" isQuery="true" bodyCondition="_-uZjdT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uZjdT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uZjcj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uZjdj_aEeOMf4ibmUJukw">
            <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="_-uZjcz_aEeOMf4ibmUJukw" type="_0baBYEEwEeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uZjdD_aEeOMf4ibmUJukw" 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="_-pNhcD_aEeOMf4ibmUJukw" name="ProcedureDescriptionSectionTemplateId" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pNhcT_aEeOMf4ibmUJukw">
          <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="_-pOIgD_aEeOMf4ibmUJukw" name="ProcedureDescriptionSectionCode" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pOIgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '29554-3' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pPWoD_aEeOMf4ibmUJukw" name="ProcedureDescriptionSectionCodeP" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pPWoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pQkwD_aEeOMf4ibmUJukw" name="ProcedureDescriptionSectionText" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pQkwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pRL0D_aEeOMf4ibmUJukw" name="ProcedureDescriptionSectionTitle" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pRL0T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-pRy4D_aEeOMf4ibmUJukw" name="ProcedureDispositionSectionTemplateId" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pRy4T_aEeOMf4ibmUJukw">
          <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="_-pSZ8D_aEeOMf4ibmUJukw" name="ProcedureDispositionSectionCode" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pSZ8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59775-7' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pToED_aEeOMf4ibmUJukw" name="ProcedureDispositionSectionCodeP" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pToET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pUPID_aEeOMf4ibmUJukw" name="ProcedureDispositionSectionText" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pU2MD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pVdQD_aEeOMf4ibmUJukw" name="ProcedureDispositionSectionTitle" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pVdQT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-pWEUD_aEeOMf4ibmUJukw" name="ProcedureEstimatedBloodLossSectionTemplateId" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pWEUT_aEeOMf4ibmUJukw">
          <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="_-pWrYD_aEeOMf4ibmUJukw" name="ProcedureEstimatedBloodLossSectionCode" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pWrYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59770-8' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pX5gD_aEeOMf4ibmUJukw" name="ProcedureEstimatedBloodLossSectionCodeP" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pX5gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pZHoD_aEeOMf4ibmUJukw" name="ProcedureEstimatedBloodLossSectionText" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pZHoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pZusD_aEeOMf4ibmUJukw" name="ProcedureEstimatedBloodLossSectionTitle" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pZusT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-paVwD_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionTemplateId" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-paVwT_aEeOMf4ibmUJukw">
          <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="_-pbj4D_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionCode" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pbj4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59776-5' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pcK8D_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionCodeP" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pcK8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pdZED_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionText" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pdZET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-peAID_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionTitle" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-peAIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sZ_ZT_aEeOMf4ibmUJukw" name="ProcedureFindingsSectionProblemObservation" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sZ_Zj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-samcD_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-samcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-samcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-samcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-samdD_aEeOMf4ibmUJukw">
            <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="_-samcT_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-samcj_aEeOMf4ibmUJukw" 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="_-penMD_aEeOMf4ibmUJukw" name="ProcedureImplantsSectionTemplateId" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-penMT_aEeOMf4ibmUJukw">
          <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="_-pf1UD_aEeOMf4ibmUJukw" name="ProcedureImplantsSectionCode" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pf1UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59771-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-phDcD_aEeOMf4ibmUJukw" name="ProcedureImplantsSectionCodeP" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-phDcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-phqgD_aEeOMf4ibmUJukw" name="ProcedureImplantsSectionText" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-phqgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-piRkD_aEeOMf4ibmUJukw" name="ProcedureImplantsSectionTitle" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-piRkT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-pi4oD_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionTemplateId" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pi4oT_aEeOMf4ibmUJukw">
          <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="_-pkGwD_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionCode" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pkGwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59768-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-plU4D_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionCodeP" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-plU4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pl78D_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionText" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pl78T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pmjAD_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionTitle" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pmjAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-samdT_aEeOMf4ibmUJukw" name="ProcedureIndicationsSectionIndication" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sbNgD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sbNgT_aEeOMf4ibmUJukw" name="getIndications" isQuery="true" bodyCondition="_-sbNhD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sbNhD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sbNgT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sbNhT_aEeOMf4ibmUJukw">
            <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="_-sbNgj_aEeOMf4ibmUJukw" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sbNgz_aEeOMf4ibmUJukw" 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="_-pnxID_aEeOMf4ibmUJukw" name="ProcedureSpecimensTakenSectionTemplateId" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pnxIT_aEeOMf4ibmUJukw">
          <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="_-po_QD_aEeOMf4ibmUJukw" name="ProcedureSpecimensTakenSectionCode" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-po_QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '59773-2' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ppmUD_aEeOMf4ibmUJukw" name="ProcedureSpecimensTakenSectionCodeP" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ppmUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pq0cD_aEeOMf4ibmUJukw" name="ProcedureSpecimensTakenSectionText" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pq0cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-prbgD_aEeOMf4ibmUJukw" name="ProcedureSpecimensTakenSectionTitle" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-prbgT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-psCkD_aEeOMf4ibmUJukw" name="SubjectiveSectionTemplateId" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-psCkT_aEeOMf4ibmUJukw">
          <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="_-ptQsD_aEeOMf4ibmUJukw" name="SubjectiveSectionCode" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ptQsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '61150-9' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pt3wD_aEeOMf4ibmUJukw" name="SubjectiveSectionCodeP" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pt3wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pvF4D_aEeOMf4ibmUJukw" name="SubjectiveSectionText" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pvF4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-pvs8D_aEeOMf4ibmUJukw" name="SubjectiveSectionTitle" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pvs8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-pyJNT_aEeOMf4ibmUJukw" name="ConsultationNoteTemplateId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-pyJNj_aEeOMf4ibmUJukw">
          <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="_-p1zkD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p1zkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-p0lcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p0lcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-p6sET_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p6sEj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-p9IUD_aEeOMf4ibmUJukw" name="ConsultationNoteAssessmentSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p9IUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-p9vZT_aEeOMf4ibmUJukw" name="ConsultationNoteAssessmentAndPlanSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p9vZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qDO8D_aEeOMf4ibmUJukw" name="ConsultationNotePlanOfCareSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qDO8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qD2BT_aEeOMf4ibmUJukw" name="ConsultationNoteHistoryOfPresentIllness" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qD2Bj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qFEID_aEeOMf4ibmUJukw" name="ConsultationNotePhysicalExamSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qFEIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qFrMD_aEeOMf4ibmUJukw" name="ConsultationNoteReasonForReferralSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qFrMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qGSQD_aEeOMf4ibmUJukw" name="ConsultationNoteReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qGSQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qG5VT_aEeOMf4ibmUJukw" name="ConsultationNoteAllergiesSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qG5Vj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qHgZT_aEeOMf4ibmUJukw" name="ConsultationNoteChiefComplaintSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qHgZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qIHdT_aEeOMf4ibmUJukw" name="ConsultationNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qIugD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qJVkD_aEeOMf4ibmUJukw" name="ConsultationNoteFamilyHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qJVkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qJ8oD_aEeOMf4ibmUJukw" name="ConsultationNoteGeneralStatusSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qJ8oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qKjtT_aEeOMf4ibmUJukw" name="ConsultationNoteHistoryOfPastIllnessSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qKjtj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qLKxT_aEeOMf4ibmUJukw" name="ConsultationNoteImmunizationsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qLKxj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qLx1T_aEeOMf4ibmUJukw" name="ConsultationNoteMedicationsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qLx1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qM_8D_aEeOMf4ibmUJukw" name="ConsultationNoteProblemSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qM_8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qNnAD_aEeOMf4ibmUJukw" name="ConsultationNoteProceduresSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qNnAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qOOEj_aEeOMf4ibmUJukw" name="ConsultationNoteResultsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qOOEz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qO1JT_aEeOMf4ibmUJukw" name="ConsultationNoteReviewOfSystemsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qO1Jj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qPcNT_aEeOMf4ibmUJukw" name="ConsultationNoteSocialHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qPcNj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qQDRT_aEeOMf4ibmUJukw" name="ConsultationNoteVitalSignsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qQDRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ypKRT_aEeOMf4ibmUJukw" name="ConsultationNoteInFulfillmentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ypKRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-29pkD_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-29pkT_aEeOMf4ibmUJukw">
          <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="_-29pkj_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2-QoD_aEeOMf4ibmUJukw">
          <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="_-2-3sD_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2-3sT_aEeOMf4ibmUJukw">
          <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="_-2-3sj_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2-3sz_aEeOMf4ibmUJukw">
          <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="_-2-3tD_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2-3tT_aEeOMf4ibmUJukw">
          <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="_-2_ewD_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2Id" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2_ewT_aEeOMf4ibmUJukw">
          <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="_-2_ewj_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2_ewz_aEeOMf4ibmUJukw">
          <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="_-2_exD_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-2_exT_aEeOMf4ibmUJukw">
          <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="_-3AF0D_aEeOMf4ibmUJukw" name="ConsultationNoteComponentOfEncompassingEncounter" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3AF0T_aEeOMf4ibmUJukw">
          <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="_-3BT8D_aEeOMf4ibmUJukw" name="ConsultationNoteInFulfillmentOfOrderId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3BT8T_aEeOMf4ibmUJukw">
          <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="_-3B7AD_aEeOMf4ibmUJukw" name="ConsultationNoteInFulfillmentOfOrder" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3B7AT_aEeOMf4ibmUJukw">
          <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="_-p9vYD_aEeOMf4ibmUJukw" name="getAssessmentSection" isQuery="true" bodyCondition="_-p9vYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-p9vYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-p9vYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p9vZD_aEeOMf4ibmUJukw">
            <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="_-p9vYT_aEeOMf4ibmUJukw" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-p9vYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-p-WcD_aEeOMf4ibmUJukw" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_-p-Wcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-p-Wcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-p-WcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p-WdD_aEeOMf4ibmUJukw">
            <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="_-p-WcT_aEeOMf4ibmUJukw" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-p-Wcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qD2AD_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-qD2Az_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qD2Az_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qD2AD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qD2BD_aEeOMf4ibmUJukw">
            <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="_-qD2AT_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qD2Aj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qEdED_aEeOMf4ibmUJukw" name="getHistoryOfPresentIllness" isQuery="true" bodyCondition="_-qEdEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qEdEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qEdED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qEdFD_aEeOMf4ibmUJukw">
            <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="_-qEdET_aEeOMf4ibmUJukw" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qEdEj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qFEIj_aEeOMf4ibmUJukw" name="getPhysicalExamSection" isQuery="true" bodyCondition="_-qFEJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qFEJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qFEIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qFEJj_aEeOMf4ibmUJukw">
            <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="_-qFEIz_aEeOMf4ibmUJukw" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qFEJD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qFrMj_aEeOMf4ibmUJukw" name="getReasonForReferralSection" isQuery="true" bodyCondition="_-qFrNT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qFrNT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qFrMj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qFrNj_aEeOMf4ibmUJukw">
            <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="_-qFrMz_aEeOMf4ibmUJukw" type="_2PWQFxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qFrND_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qG5UD_aEeOMf4ibmUJukw" name="getReasonForVisitSection" isQuery="true" bodyCondition="_-qG5Uz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qG5Uz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qG5UD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qG5VD_aEeOMf4ibmUJukw">
            <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="_-qG5UT_aEeOMf4ibmUJukw" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qG5Uj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qHgYD_aEeOMf4ibmUJukw" name="getAllergiesSection" isQuery="true" bodyCondition="_-qHgYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qHgYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qHgYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qHgZD_aEeOMf4ibmUJukw">
            <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="_-qHgYT_aEeOMf4ibmUJukw" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qHgYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qIHcD_aEeOMf4ibmUJukw" name="getChiefComplaintSection" isQuery="true" bodyCondition="_-qIHcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qIHcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qIHcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qIHdD_aEeOMf4ibmUJukw">
            <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="_-qIHcT_aEeOMf4ibmUJukw" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qIHcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qIugT_aEeOMf4ibmUJukw" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_-qIuhD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qIuhD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qIugT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qIuhT_aEeOMf4ibmUJukw">
            <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="_-qIugj_aEeOMf4ibmUJukw" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qIugz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qJVkj_aEeOMf4ibmUJukw" name="getFamilyHistorySection" isQuery="true" bodyCondition="_-qJVlT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qJVlT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qJVkj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qJVlj_aEeOMf4ibmUJukw">
            <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="_-qJVkz_aEeOMf4ibmUJukw" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qJVlD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qKjsD_aEeOMf4ibmUJukw" name="getGeneralStatusSection" isQuery="true" bodyCondition="_-qKjsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qKjsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qKjsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qKjtD_aEeOMf4ibmUJukw">
            <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="_-qKjsT_aEeOMf4ibmUJukw" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qKjsj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qLKwD_aEeOMf4ibmUJukw" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_-qLKwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qLKwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qLKwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qLKxD_aEeOMf4ibmUJukw">
            <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="_-qLKwT_aEeOMf4ibmUJukw" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qLKwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qLx0D_aEeOMf4ibmUJukw" name="getImmunizationsSection" isQuery="true" bodyCondition="_-qLx0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qLx0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qLx0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qLx1D_aEeOMf4ibmUJukw">
            <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="_-qLx0T_aEeOMf4ibmUJukw" type="_2L7voBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qLx0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qMY4D_aEeOMf4ibmUJukw" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-qMY4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qMY4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qMY4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qMY5D_aEeOMf4ibmUJukw">
            <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="_-qMY4T_aEeOMf4ibmUJukw" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qMY4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qM_8j_aEeOMf4ibmUJukw" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_-qM_9T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qM_9T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qM_8j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qM_9j_aEeOMf4ibmUJukw">
            <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="_-qM_8z_aEeOMf4ibmUJukw" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qM_9D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qNnAj_aEeOMf4ibmUJukw" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_-qOOED_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qOOED_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qNnAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qOOET_aEeOMf4ibmUJukw">
            <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="_-qNnAz_aEeOMf4ibmUJukw" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qNnBD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qO1ID_aEeOMf4ibmUJukw" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_-qO1Iz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qO1Iz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qO1ID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qO1JD_aEeOMf4ibmUJukw">
            <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="_-qO1IT_aEeOMf4ibmUJukw" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qO1Ij_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qPcMD_aEeOMf4ibmUJukw" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_-qPcMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qPcMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qPcMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qPcND_aEeOMf4ibmUJukw">
            <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="_-qPcMT_aEeOMf4ibmUJukw" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qPcMj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qQDQD_aEeOMf4ibmUJukw" name="getSocialHistorySection" isQuery="true" bodyCondition="_-qQDQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qQDQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qQDQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qQDRD_aEeOMf4ibmUJukw">
            <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="_-qQDQT_aEeOMf4ibmUJukw" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qQDQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qQqUD_aEeOMf4ibmUJukw" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_-qQqUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qQqUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qQqUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qQqVD_aEeOMf4ibmUJukw">
            <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="_-qQqUT_aEeOMf4ibmUJukw" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qQqUj_aEeOMf4ibmUJukw" 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="_-p-9gD_aEeOMf4ibmUJukw" name="AssessmentSectionTemplateId" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-p-9gT_aEeOMf4ibmUJukw">
          <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="_-qALoD_aEeOMf4ibmUJukw" name="AssessmentSectionCode" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qALoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '51848-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qBZwD_aEeOMf4ibmUJukw" name="AssessmentSectionCodeP" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qBZwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qCA0D_aEeOMf4ibmUJukw" name="AssessmentSectionText" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qCA0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qCn4D_aEeOMf4ibmUJukw" name="AssessmentSectionTitle" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qCn4T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-qdeoT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteTemplateId" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qdeoj_aEeOMf4ibmUJukw">
          <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="_-qhJAD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qhJAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qf64D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qf64T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-qmBgT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteInFulfillmentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qmBgj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qpE0j_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qpE0z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qpr4D_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteAllergiesSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qpr4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qq6AD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteAssessmentSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qq6AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qrhEz_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNotePlanOfCareSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qrhFD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qsIJT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteAssessmentAndPlanSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qsIJj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qsvNT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteChiefComplaintSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qtWQD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qt9UT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qt9Uj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qukZT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteFamilyHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qvLcD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qvygD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteGeneralStatusSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qvygT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qwZlD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteHistoryOfPastIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qwZlT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qxApT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteMedicationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qxApj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qxntT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNotePhysicalExamSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qxntj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qy10D_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qy10T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-qzc4z_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteResultsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qzc5D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q0D9T_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteReviewOfSystemsSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q0D9j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q0rBT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteSocialHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q0rBj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q15ID_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteHistoryOfPresentIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q15IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q2gMT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteImmunizationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q2gMj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q3HRT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteProblemSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q3HRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q3uVT_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteProceduresSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q3uVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q48cD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q48cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ymuAD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteInstructionsSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ymuAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3DwMD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3DwMT_aEeOMf4ibmUJukw">
          <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="_-3EXQD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3EXQT_aEeOMf4ibmUJukw">
          <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="_-3E-UD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3E-UT_aEeOMf4ibmUJukw">
          <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="_-3E-Uj_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3E-Uz_aEeOMf4ibmUJukw">
          <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="_-3FlYD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3FlYT_aEeOMf4ibmUJukw">
          <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="_-3FlYj_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3FlYz_aEeOMf4ibmUJukw">
          <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="_-3FlZD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3FlZT_aEeOMf4ibmUJukw">
          <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="_-3GMcD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3GMcT_aEeOMf4ibmUJukw">
          <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="_-3GMcj_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3GMcz_aEeOMf4ibmUJukw">
          <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="_-3GzgD_aEeOMf4ibmUJukw" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3GzgT_aEeOMf4ibmUJukw">
          <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="_-qqS8D_aEeOMf4ibmUJukw" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_-qqS8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qqS8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qqS8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qqS9D_aEeOMf4ibmUJukw">
            <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="_-qqS8T_aEeOMf4ibmUJukw" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qqS8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qq6Aj_aEeOMf4ibmUJukw" name="getAssessmentSection" isQuery="true" bodyCondition="_-qrhET_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qrhET_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qq6Aj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qrhEj_aEeOMf4ibmUJukw">
            <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="_-qq6Az_aEeOMf4ibmUJukw" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qrhED_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qsIID_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-qsIIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qsIIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qsIID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qsIJD_aEeOMf4ibmUJukw">
            <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="_-qsIIT_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qsIIj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qsvMD_aEeOMf4ibmUJukw" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_-qsvMz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qsvMz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qsvMD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qsvND_aEeOMf4ibmUJukw">
            <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="_-qsvMT_aEeOMf4ibmUJukw" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qsvMj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qtWQT_aEeOMf4ibmUJukw" name="getChiefComplaintSection" isQuery="true" bodyCondition="_-qtWRD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qtWRD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qtWQT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qt9UD_aEeOMf4ibmUJukw">
            <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="_-qtWQj_aEeOMf4ibmUJukw" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qtWQz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qukYD_aEeOMf4ibmUJukw" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_-qukYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qukYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qukYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qukZD_aEeOMf4ibmUJukw">
            <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="_-qukYT_aEeOMf4ibmUJukw" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qukYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qvLcT_aEeOMf4ibmUJukw" name="getFamilyHistorySection" isQuery="true" bodyCondition="_-qvLdD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qvLdD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qvLcT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qvLdT_aEeOMf4ibmUJukw">
            <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="_-qvLcj_aEeOMf4ibmUJukw" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qvLcz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qvygj_aEeOMf4ibmUJukw" name="getGeneralStatusSection" isQuery="true" bodyCondition="_-qwZkj_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qwZkj_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qvygj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qwZkz_aEeOMf4ibmUJukw">
            <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="_-qwZkD_aEeOMf4ibmUJukw" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qwZkT_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qxAoD_aEeOMf4ibmUJukw" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_-qxAoz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qxAoz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qxAoD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qxApD_aEeOMf4ibmUJukw">
            <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="_-qxAoT_aEeOMf4ibmUJukw" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qxAoj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qxnsD_aEeOMf4ibmUJukw" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-qxnsz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qxnsz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qxnsD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qxntD_aEeOMf4ibmUJukw">
            <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="_-qxnsT_aEeOMf4ibmUJukw" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qxnsj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qyOwD_aEeOMf4ibmUJukw" name="getPhysicalExamSection" isQuery="true" bodyCondition="_-qyOwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qyOwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qyOwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qyOxD_aEeOMf4ibmUJukw">
            <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="_-qyOwT_aEeOMf4ibmUJukw" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qyOwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-qy10j_aEeOMf4ibmUJukw" name="getReasonForVisitSection" isQuery="true" bodyCondition="_-qzc4T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-qzc4T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-qy10j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-qzc4j_aEeOMf4ibmUJukw">
            <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="_-qy10z_aEeOMf4ibmUJukw" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-qzc4D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q0D8D_aEeOMf4ibmUJukw" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_-q0D8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q0D8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q0D8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q0D9D_aEeOMf4ibmUJukw">
            <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="_-q0D8T_aEeOMf4ibmUJukw" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q0D8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q0rAD_aEeOMf4ibmUJukw" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_-q0rAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q0rAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q0rAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q0rBD_aEeOMf4ibmUJukw">
            <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="_-q0rAT_aEeOMf4ibmUJukw" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q0rAj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q1SED_aEeOMf4ibmUJukw" name="getSocialHistorySection" isQuery="true" bodyCondition="_-q1SEz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q1SEz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q1SED_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q1SFD_aEeOMf4ibmUJukw">
            <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="_-q1SET_aEeOMf4ibmUJukw" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q1SEj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q15Ij_aEeOMf4ibmUJukw" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_-q15JT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q15JT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q15Ij_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q2gMD_aEeOMf4ibmUJukw">
            <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="_-q15Iz_aEeOMf4ibmUJukw" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q15JD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q3HQD_aEeOMf4ibmUJukw" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_-q3HQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q3HQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q3HQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q3HRD_aEeOMf4ibmUJukw">
            <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="_-q3HQT_aEeOMf4ibmUJukw" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q3HQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q3uUD_aEeOMf4ibmUJukw" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_-q3uUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q3uUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q3uUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q3uVD_aEeOMf4ibmUJukw">
            <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="_-q3uUT_aEeOMf4ibmUJukw" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q3uUj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q4VYD_aEeOMf4ibmUJukw" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_-q4VYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q4VYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q4VYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q4VZD_aEeOMf4ibmUJukw">
            <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="_-q4VYT_aEeOMf4ibmUJukw" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q4VYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-q48cj_aEeOMf4ibmUJukw" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_-q48dT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-q48dT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-q48cj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q48dj_aEeOMf4ibmUJukw">
            <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="_-q48cz_aEeOMf4ibmUJukw" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-q48dD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ymuAj_aEeOMf4ibmUJukw" name="getInstructionsSection" isQuery="true" bodyCondition="_-ymuBT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ymuBT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ymuAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ymuBj_aEeOMf4ibmUJukw">
            <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="_-ymuAz_aEeOMf4ibmUJukw" type="_4qKukEE1EeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ymuBD_aEeOMf4ibmUJukw" 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="_-q6xoD_aEeOMf4ibmUJukw" name="OperativeNoteTemplateId" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q6xoT_aEeOMf4ibmUJukw">
          <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="_-q9N4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q9N4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-q7_wD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-q7_wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-rFwwD_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOf" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rFwwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rGX0D_aEeOMf4ibmUJukw" name="OperativeNoteAnesthesiaSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rGX0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rG-5T_aEeOMf4ibmUJukw" name="OperativeNoteComplicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rG-5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rHl9T_aEeOMf4ibmUJukw" name="OperativeNotePostoperativeDiagnosisSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rHl9j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rI0ED_aEeOMf4ibmUJukw" name="OperativeNotePreoperativeDiagnosisSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rI0ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rJbID_aEeOMf4ibmUJukw" name="OperativeNoteProcedureEstimatedBloodLossSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rJbIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rKCND_aEeOMf4ibmUJukw" name="OperativeNoteProcedureFindingsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rKCNT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rKpRT_aEeOMf4ibmUJukw" name="OperativeNoteProcedureSpecimensTakenSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rKpRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rLQVT_aEeOMf4ibmUJukw" name="OperativeNoteProcedureDescriptionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rLQVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rMecD_aEeOMf4ibmUJukw" name="OperativeNoteProcedureImplantsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rMecT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rNFgD_aEeOMf4ibmUJukw" name="OperativeNoteFluidSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rNFgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rNslT_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rNslj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rOTpT_aEeOMf4ibmUJukw" name="OperativeNotePlanOfCareSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rOTpj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rPhwD_aEeOMf4ibmUJukw" name="OperativeNotePlannedProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rPhwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rQI0D_aEeOMf4ibmUJukw" name="OperativeNoteProcedureDispositionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rQI0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rQv4z_aEeOMf4ibmUJukw" name="OperativeNoteProcedureIndicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rQv5D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rRW9T_aEeOMf4ibmUJukw" name="OperativeNoteSurgicalDrainsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rRW9j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3JPwD_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3JPwT_aEeOMf4ibmUJukw">
          <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 
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="_-3JPwj_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3J20D_aEeOMf4ibmUJukw">
          <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="_-3J20T_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3J20j_aEeOMf4ibmUJukw">
          <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="_-3J20z_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3J21D_aEeOMf4ibmUJukw">
          <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="_-3Kd4D_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventProcedureCodes" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Kd4T_aEeOMf4ibmUJukw">
          <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="_-3Kd4j_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Kd4z_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3LE8D_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3LE8T_aEeOMf4ibmUJukw">
          <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="_-3LE8j_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3LE8z_aEeOMf4ibmUJukw">
          <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="_-3LE9D_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3LE9T_aEeOMf4ibmUJukw">
          <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="_-3LsAD_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventEffectiveTime" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3LsAT_aEeOMf4ibmUJukw">
          <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="_-3LsAj_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformer" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3LsAz_aEeOMf4ibmUJukw">
          <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="_-3MTED_aEeOMf4ibmUJukw" name="OperativeNoteDocumentationOfServiceEvent" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3MTET_aEeOMf4ibmUJukw">
          <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="_-rG-4D_aEeOMf4ibmUJukw" name="getAnesthesiaSection" isQuery="true" bodyCondition="_-rG-4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rG-4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rG-4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rG-5D_aEeOMf4ibmUJukw">
            <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="_-rG-4T_aEeOMf4ibmUJukw" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rG-4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rHl8D_aEeOMf4ibmUJukw" name="getComplicationsSection" isQuery="true" bodyCondition="_-rHl8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rHl8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rHl8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rHl9D_aEeOMf4ibmUJukw">
            <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="_-rHl8T_aEeOMf4ibmUJukw" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rHl8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rINAD_aEeOMf4ibmUJukw" name="getPostoperativeDiagnosisSection" isQuery="true" bodyCondition="_-rINAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rINAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rINAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rINBD_aEeOMf4ibmUJukw">
            <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="_-rINAT_aEeOMf4ibmUJukw" type="_7UA-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rINAj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rI0Ej_aEeOMf4ibmUJukw" name="getPreoperativeDiagnosisSection" isQuery="true" bodyCondition="_-rI0FT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rI0FT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rI0Ej_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rI0Fj_aEeOMf4ibmUJukw">
            <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="_-rI0Ez_aEeOMf4ibmUJukw" type="_Cu6qMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rI0FD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rJbIj_aEeOMf4ibmUJukw" name="getProcedureEstimatedBloodLossSection" isQuery="true" bodyCondition="_-rKCMj_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rKCMj_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rJbIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rKCMz_aEeOMf4ibmUJukw">
            <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="_-rKCMD_aEeOMf4ibmUJukw" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rKCMT_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rKpQD_aEeOMf4ibmUJukw" name="getProcedureFindingsSection" isQuery="true" bodyCondition="_-rKpQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rKpQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rKpQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rKpRD_aEeOMf4ibmUJukw">
            <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="_-rKpQT_aEeOMf4ibmUJukw" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rKpQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rLQUD_aEeOMf4ibmUJukw" name="getProcedureSpecimensTakenSection" isQuery="true" bodyCondition="_-rLQUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rLQUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rLQUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rLQVD_aEeOMf4ibmUJukw">
            <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="_-rLQUT_aEeOMf4ibmUJukw" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rLQUj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rL3YD_aEeOMf4ibmUJukw" name="getProcedureDescriptionSection" isQuery="true" bodyCondition="_-rL3Yz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rL3Yz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rL3YD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rL3ZD_aEeOMf4ibmUJukw">
            <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="_-rL3YT_aEeOMf4ibmUJukw" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rL3Yj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rMecj_aEeOMf4ibmUJukw" name="getProcedureImplantsSection" isQuery="true" bodyCondition="_-rMedT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rMedT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rMecj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rMedj_aEeOMf4ibmUJukw">
            <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="_-rMecz_aEeOMf4ibmUJukw" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rMedD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rNskD_aEeOMf4ibmUJukw" name="getOperativeNoteFluidSection" isQuery="true" bodyCondition="_-rNskz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rNskz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rNskD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rNslD_aEeOMf4ibmUJukw">
            <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="_-rNskT_aEeOMf4ibmUJukw" type="_vHfXoDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rNskj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rOToD_aEeOMf4ibmUJukw" name="getOperativeNoteSurgicalProcedureSection" isQuery="true" bodyCondition="_-rOToz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rOToz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rOToD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rOTpD_aEeOMf4ibmUJukw">
            <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="_-rOToT_aEeOMf4ibmUJukw" type="_zel6wDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rOToj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rO6sD_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-rO6sz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rO6sz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rO6sD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rO6tD_aEeOMf4ibmUJukw">
            <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="_-rO6sT_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rO6sj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rPhwj_aEeOMf4ibmUJukw" name="getPlannedProcedureSection" isQuery="true" bodyCondition="_-rPhxT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rPhxT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rPhwj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rPhxj_aEeOMf4ibmUJukw">
            <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="_-rPhwz_aEeOMf4ibmUJukw" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rPhxD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rQI0j_aEeOMf4ibmUJukw" name="getProcedureDispositionSection" isQuery="true" bodyCondition="_-rQv4T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rQv4T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rQI0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rQv4j_aEeOMf4ibmUJukw">
            <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="_-rQI0z_aEeOMf4ibmUJukw" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rQv4D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rRW8D_aEeOMf4ibmUJukw" name="getProcedureIndicationsSection" isQuery="true" bodyCondition="_-rRW8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rRW8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rRW8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rRW9D_aEeOMf4ibmUJukw">
            <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="_-rRW8T_aEeOMf4ibmUJukw" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rRW8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rR-AD_aEeOMf4ibmUJukw" name="getSurgicalDrainsSection" isQuery="true" bodyCondition="_-rR-Az_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rR-Az_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rR-AD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rR-BD_aEeOMf4ibmUJukw">
            <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="_-rR-AT_aEeOMf4ibmUJukw" type="_luQh8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rR-Aj_aEeOMf4ibmUJukw" 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="_-rSlED_aEeOMf4ibmUJukw" name="ProcedureNoteTemplateId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rSlET_aEeOMf4ibmUJukw">
          <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="_-rVoYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rVoYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rUaQD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rUaQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-rgAcD_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOf" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rgAcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ricsD_aEeOMf4ibmUJukw" name="ProcedureNoteAssessmentSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ricsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rjDxT_aEeOMf4ibmUJukw" name="ProcedureNotePlanOfCareSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rjDxj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rjq1T_aEeOMf4ibmUJukw" name="ProcedureNoteAssessmentAndPlanSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rjq1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rkR5T_aEeOMf4ibmUJukw" name="ProcedureNoteComplicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rkR5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rk49T_aEeOMf4ibmUJukw" name="ProcedureNotePostprocedureDiagnosisSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rk49j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rmHED_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureDescriptionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rmHET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rmuID_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureIndicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rmuIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rnVMD_aEeOMf4ibmUJukw" name="ProcedureNoteAllergiesSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rnVMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rn8Qj_aEeOMf4ibmUJukw" name="ProcedureNoteAnesthesiaSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rn8Qz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rojVT_aEeOMf4ibmUJukw" name="ProcedureNoteChiefComplaintSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rojVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rpKZT_aEeOMf4ibmUJukw" name="ProcedureNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rpKZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rpxdT_aEeOMf4ibmUJukw" name="ProcedureNoteFamilyHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rpxdj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rqYhT_aEeOMf4ibmUJukw" name="ProcedureNoteHistoryOfPastIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rqYhj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rrmoD_aEeOMf4ibmUJukw" name="ProcedureNoteHistoryOfPresentIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rrmoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rsNsD_aEeOMf4ibmUJukw" name="ProcedureNoteMedicalHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rsNsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rs0wT_aEeOMf4ibmUJukw" name="ProcedureNoteMedicationsSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rs0wj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rtb1T_aEeOMf4ibmUJukw" name="ProcedureNoteMedicationsAdministeredSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rtb1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ruC5T_aEeOMf4ibmUJukw" name="ProcedureNotePhysicalExamSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ruC5j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rup9T_aEeOMf4ibmUJukw" name="ProcedureNotePlannedProcedureSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rup9j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rvRBT_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureDispositionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rv4ED_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rwfID_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureEstimatedBloodLossSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rwfIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rxGMD_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureFindingsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rxGMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-rxtRD_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureImplantsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rxtRT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ryUVT_aEeOMf4ibmUJukw" name="ProcedureNoteProcedureSpecimensTakenSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ryUVj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ry7ZT_aEeOMf4ibmUJukw" name="ProcedureNoteProceduresSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ry7Zj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-r0JgD_aEeOMf4ibmUJukw" name="ProcedureNoteReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r0JgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-r0wkD_aEeOMf4ibmUJukw" name="ProcedureNoteReviewOfSystemsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r0wkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-r1XoD_aEeOMf4ibmUJukw" name="ProcedureNoteSocialHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r1XoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ynVEj_aEeOMf4ibmUJukw" name="ProcedureNoteParticipant1" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ynVEz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ysNkD_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOf" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ysNkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3P9cD_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3QkgD_aEeOMf4ibmUJukw">
          <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="_-3QkgT_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Qkgj_aEeOMf4ibmUJukw">
          <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="_-3RLkD_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3RLkT_aEeOMf4ibmUJukw">
          <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="_-3RLkj_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5Code" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3RLkz_aEeOMf4ibmUJukw">
          <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="_-3RLlD_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5Location" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3RLlT_aEeOMf4ibmUJukw">
          <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="_-3RyoD_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3RyoT_aEeOMf4ibmUJukw">
          <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="_-3Ryoj_aEeOMf4ibmUJukw" name="ProcedureNoteComponentOfEncompassingEncounter5" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Ryoz_aEeOMf4ibmUJukw">
          <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="_-3UO4D_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3UO4T_aEeOMf4ibmUJukw">
          <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="_-3UO4j_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3UO4z_aEeOMf4ibmUJukw">
          <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 
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="_-3UO5D_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3UO5T_aEeOMf4ibmUJukw">
          <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="_-3U18D_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3U18T_aEeOMf4ibmUJukw">
          <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="_-3U18j_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3U18z_aEeOMf4ibmUJukw">
          <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="_-3U19D_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3U19T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3VdAD_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3VdAT_aEeOMf4ibmUJukw">
          <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="_-3VdAj_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3VdAz_aEeOMf4ibmUJukw">
          <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="_-3VdBD_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1Code" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3VdBT_aEeOMf4ibmUJukw">
          <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="_-3WEED_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1EffectiveTime" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3WEET_aEeOMf4ibmUJukw">
          <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="_-3WEEj_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3WEEz_aEeOMf4ibmUJukw">
          <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="_-3WEFD_aEeOMf4ibmUJukw" name="ProcedureNoteDocumentationOfServiceEvent1" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3WrID_aEeOMf4ibmUJukw">
          <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="_-rjDwD_aEeOMf4ibmUJukw" name="getAssessmentSection" isQuery="true" bodyCondition="_-rjDwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rjDwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rjDwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rjDxD_aEeOMf4ibmUJukw">
            <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="_-rjDwT_aEeOMf4ibmUJukw" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rjDwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rjq0D_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-rjq0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rjq0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rjq0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rjq1D_aEeOMf4ibmUJukw">
            <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="_-rjq0T_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rjq0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rkR4D_aEeOMf4ibmUJukw" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_-rkR4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rkR4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rkR4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rkR5D_aEeOMf4ibmUJukw">
            <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="_-rkR4T_aEeOMf4ibmUJukw" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rkR4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rk48D_aEeOMf4ibmUJukw" name="getComplicationsSection" isQuery="true" bodyCondition="_-rk48z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rk48z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rk48D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rk49D_aEeOMf4ibmUJukw">
            <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="_-rk48T_aEeOMf4ibmUJukw" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rk48j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rlgAD_aEeOMf4ibmUJukw" name="getPostprocedureDiagnosisSection" isQuery="true" bodyCondition="_-rlgAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rlgAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rlgAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rlgBD_aEeOMf4ibmUJukw">
            <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="_-rlgAT_aEeOMf4ibmUJukw" type="_-jlSMDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rlgAj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rmHEj_aEeOMf4ibmUJukw" name="getProcedureDescriptionSection" isQuery="true" bodyCondition="_-rmHFT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rmHFT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rmHEj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rmHFj_aEeOMf4ibmUJukw">
            <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="_-rmHEz_aEeOMf4ibmUJukw" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rmHFD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rmuIj_aEeOMf4ibmUJukw" name="getProcedureIndicationsSection" isQuery="true" bodyCondition="_-rmuJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rmuJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rmuIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rmuJj_aEeOMf4ibmUJukw">
            <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="_-rmuIz_aEeOMf4ibmUJukw" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rmuJD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rnVMj_aEeOMf4ibmUJukw" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_-rn8QD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rn8QD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rnVMj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rn8QT_aEeOMf4ibmUJukw">
            <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="_-rnVMz_aEeOMf4ibmUJukw" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rnVND_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rojUD_aEeOMf4ibmUJukw" name="getAnesthesiaSection" isQuery="true" bodyCondition="_-rojUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rojUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rojUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rojVD_aEeOMf4ibmUJukw">
            <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="_-rojUT_aEeOMf4ibmUJukw" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rojUj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rpKYD_aEeOMf4ibmUJukw" name="getChiefComplaintSection" isQuery="true" bodyCondition="_-rpKYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rpKYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rpKYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rpKZD_aEeOMf4ibmUJukw">
            <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="_-rpKYT_aEeOMf4ibmUJukw" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rpKYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rpxcD_aEeOMf4ibmUJukw" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_-rpxcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rpxcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rpxcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rpxdD_aEeOMf4ibmUJukw">
            <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="_-rpxcT_aEeOMf4ibmUJukw" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rpxcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rqYgD_aEeOMf4ibmUJukw" name="getFamilyHistorySection" isQuery="true" bodyCondition="_-rqYgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rqYgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rqYgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rqYhD_aEeOMf4ibmUJukw">
            <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="_-rqYgT_aEeOMf4ibmUJukw" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rqYgj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rq_kD_aEeOMf4ibmUJukw" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_-rq_kz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rq_kz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rq_kD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rq_lD_aEeOMf4ibmUJukw">
            <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="_-rq_kT_aEeOMf4ibmUJukw" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rq_kj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rrmoj_aEeOMf4ibmUJukw" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_-rrmpT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rrmpT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rrmoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rrmpj_aEeOMf4ibmUJukw">
            <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="_-rrmoz_aEeOMf4ibmUJukw" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rrmpD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rsNsj_aEeOMf4ibmUJukw" name="getMedicalHistorySection" isQuery="true" bodyCondition="_-rsNtT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rsNtT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rsNsj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rs0wD_aEeOMf4ibmUJukw">
            <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="_-rsNsz_aEeOMf4ibmUJukw" type="_mEIgwDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rsNtD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rtb0D_aEeOMf4ibmUJukw" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-rtb0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rtb0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rtb0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rtb1D_aEeOMf4ibmUJukw">
            <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="_-rtb0T_aEeOMf4ibmUJukw" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rtb0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ruC4D_aEeOMf4ibmUJukw" name="getMedicationsAdministeredSection" isQuery="true" bodyCondition="_-ruC4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ruC4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ruC4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ruC5D_aEeOMf4ibmUJukw">
            <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="_-ruC4T_aEeOMf4ibmUJukw" type="_2Poj_BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ruC4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rup8D_aEeOMf4ibmUJukw" name="getPhysicalExamSection" isQuery="true" bodyCondition="_-rup8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rup8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rup8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rup9D_aEeOMf4ibmUJukw">
            <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="_-rup8T_aEeOMf4ibmUJukw" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rup8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rvRAD_aEeOMf4ibmUJukw" name="getPlannedProcedureSection" isQuery="true" bodyCondition="_-rvRAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rvRAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rvRAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rvRBD_aEeOMf4ibmUJukw">
            <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="_-rvRAT_aEeOMf4ibmUJukw" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rvRAj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rv4ET_aEeOMf4ibmUJukw" name="getProcedureDispositionSection" isQuery="true" bodyCondition="_-rv4FD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rv4FD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rv4ET_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rv4FT_aEeOMf4ibmUJukw">
            <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="_-rv4Ej_aEeOMf4ibmUJukw" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rv4Ez_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rwfIj_aEeOMf4ibmUJukw" name="getProcedureEstimatedBloodLossSection" isQuery="true" bodyCondition="_-rwfJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rwfJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rwfIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rwfJj_aEeOMf4ibmUJukw">
            <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="_-rwfIz_aEeOMf4ibmUJukw" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rwfJD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rxGMj_aEeOMf4ibmUJukw" name="getProcedureFindingsSection" isQuery="true" bodyCondition="_-rxtQj_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rxtQj_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rxGMj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rxtQz_aEeOMf4ibmUJukw">
            <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="_-rxtQD_aEeOMf4ibmUJukw" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rxtQT_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ryUUD_aEeOMf4ibmUJukw" name="getProcedureImplantsSection" isQuery="true" bodyCondition="_-ryUUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ryUUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ryUUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ryUVD_aEeOMf4ibmUJukw">
            <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="_-ryUUT_aEeOMf4ibmUJukw" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ryUUj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ry7YD_aEeOMf4ibmUJukw" name="getProcedureSpecimensTakenSection" isQuery="true" bodyCondition="_-ry7Yz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ry7Yz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ry7YD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ry7ZD_aEeOMf4ibmUJukw">
            <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="_-ry7YT_aEeOMf4ibmUJukw" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ry7Yj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-rzicD_aEeOMf4ibmUJukw" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_-rzicz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-rzicz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-rzicD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-rzidD_aEeOMf4ibmUJukw">
            <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="_-rzicT_aEeOMf4ibmUJukw" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rzicj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-r0Jgj_aEeOMf4ibmUJukw" name="getReasonForVisitSection" isQuery="true" bodyCondition="_-r0JhT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-r0JhT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-r0Jgj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r0Jhj_aEeOMf4ibmUJukw">
            <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="_-r0Jgz_aEeOMf4ibmUJukw" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-r0JhD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-r0wkj_aEeOMf4ibmUJukw" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_-r0wlT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-r0wlT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-r0wkj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r0wlj_aEeOMf4ibmUJukw">
            <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="_-r0wkz_aEeOMf4ibmUJukw" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-r0wlD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-r1Xoj_aEeOMf4ibmUJukw" name="getSocialHistorySection" isQuery="true" bodyCondition="_-r1-sT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-r1-sT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-r1Xoj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r1-sj_aEeOMf4ibmUJukw">
            <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="_-r1Xoz_aEeOMf4ibmUJukw" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-r1-sD_aEeOMf4ibmUJukw" 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="_-r1-sz_aEeOMf4ibmUJukw" name="ProgressNoteTemplateId" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r1-tD_aEeOMf4ibmUJukw">
          <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="_-r4a8D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r4a8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-r3z4D_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r3z4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-r_IoT_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r_Ioj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-r_vsD_aEeOMf4ibmUJukw" name="ProgressNoteComponentOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-r_vsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sBk4z_aEeOMf4ibmUJukw" name="ProgressNoteAssessmentSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sBk5D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sCL9T_aEeOMf4ibmUJukw" name="ProgressNotePlanOfCareSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sCzAD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sDaED_aEeOMf4ibmUJukw" name="ProgressNoteAssessmentAndPlanSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sDaET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sEBID_aEeOMf4ibmUJukw" name="ProgressNoteAllergiesSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sEBIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sEoMT_aEeOMf4ibmUJukw" name="ProgressNoteChiefComplaintSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sEoMj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sFPRT_aEeOMf4ibmUJukw" name="ProgressNoteInterventionsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sFPRj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sF2VT_aEeOMf4ibmUJukw" name="ProgressNoteMedicationsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sF2Vj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sGdZT_aEeOMf4ibmUJukw" name="ProgressNoteObjectiveSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sGdZj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sHEdT_aEeOMf4ibmUJukw" name="ProgressNotePhysicalExamSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sHEdj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sISkD_aEeOMf4ibmUJukw" name="ProgressNoteProblemSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sISkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sI5oD_aEeOMf4ibmUJukw" name="ProgressNoteResultsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sI5oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sJgsT_aEeOMf4ibmUJukw" name="ProgressNoteReviewOfSystemsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sJgsj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sKHxT_aEeOMf4ibmUJukw" name="ProgressNoteSubjectiveSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sKHxj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sKu1T_aEeOMf4ibmUJukw" name="ProgressNoteVitalSignsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sKu1j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yojMD_aEeOMf4ibmUJukw" name="ProgressNoteInstructionsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yojMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3ZHYD_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ZHYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->excluding(null).serviceEvent->excluding(null)->reject(effectiveTime->forAll(not low.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3ZucD_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ZucT_aEeOMf4ibmUJukw">
          <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="_-3Zucj_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2TemplateId" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3Zucz_aEeOMf4ibmUJukw">
          <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="_-3ZudD_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2ClassCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ZudT_aEeOMf4ibmUJukw">
          <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="_-3aVgD_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3aVgT_aEeOMf4ibmUJukw">
          <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="_-3aVgj_aEeOMf4ibmUJukw" name="ProgressNoteDocumentationOfServiceEvent2" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3aVgz_aEeOMf4ibmUJukw">
          <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="_-3bjoD_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3bjoT_aEeOMf4ibmUJukw">
          <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="_-3cKsD_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3cKsT_aEeOMf4ibmUJukw">
          <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="_-3cKsj_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3cKsz_aEeOMf4ibmUJukw">
          <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="_-3cKtD_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3cKtT_aEeOMf4ibmUJukw">
          <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="_-3cxwD_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6Location" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3cxwT_aEeOMf4ibmUJukw">
          <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="_-3cxwj_aEeOMf4ibmUJukw" name="ProgressNoteComponentOfEncompassingEncounter6" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3cxwz_aEeOMf4ibmUJukw">
          <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="_-sCL8D_aEeOMf4ibmUJukw" name="getAssessmentSection" isQuery="true" bodyCondition="_-sCL8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sCL8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sCL8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sCL9D_aEeOMf4ibmUJukw">
            <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="_-sCL8T_aEeOMf4ibmUJukw" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sCL8j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sCzAT_aEeOMf4ibmUJukw" name="getPlanOfCareSection" isQuery="true" bodyCondition="_-sCzBD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sCzBD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sCzAT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sCzBT_aEeOMf4ibmUJukw">
            <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="_-sCzAj_aEeOMf4ibmUJukw" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sCzAz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sDaEj_aEeOMf4ibmUJukw" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_-sDaFT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sDaFT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sDaEj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sDaFj_aEeOMf4ibmUJukw">
            <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="_-sDaEz_aEeOMf4ibmUJukw" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sDaFD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sEBIj_aEeOMf4ibmUJukw" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_-sEBJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sEBJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sEBIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sEoMD_aEeOMf4ibmUJukw">
            <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="_-sEBIz_aEeOMf4ibmUJukw" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sEBJD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sFPQD_aEeOMf4ibmUJukw" name="getChiefComplaintSection" isQuery="true" bodyCondition="_-sFPQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sFPQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sFPQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sFPRD_aEeOMf4ibmUJukw">
            <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="_-sFPQT_aEeOMf4ibmUJukw" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sFPQj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sF2UD_aEeOMf4ibmUJukw" name="getInterventionsSection" isQuery="true" bodyCondition="_-sF2Uz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sF2Uz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sF2UD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sF2VD_aEeOMf4ibmUJukw">
            <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="_-sF2UT_aEeOMf4ibmUJukw" type="_hqzJADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sF2Uj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sGdYD_aEeOMf4ibmUJukw" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_-sGdYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sGdYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sGdYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sGdZD_aEeOMf4ibmUJukw">
            <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="_-sGdYT_aEeOMf4ibmUJukw" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sGdYj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sHEcD_aEeOMf4ibmUJukw" name="getObjectiveSection" isQuery="true" bodyCondition="_-sHEcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sHEcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sHEcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sHEdD_aEeOMf4ibmUJukw">
            <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="_-sHEcT_aEeOMf4ibmUJukw" type="_rNJpADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sHEcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sHrgD_aEeOMf4ibmUJukw" name="getPhysicalExamSection" isQuery="true" bodyCondition="_-sHrgz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sHrgz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sHrgD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sHrhD_aEeOMf4ibmUJukw">
            <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="_-sHrgT_aEeOMf4ibmUJukw" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sHrgj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sISkj_aEeOMf4ibmUJukw" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_-sISlT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sISlT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sISkj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sISlj_aEeOMf4ibmUJukw">
            <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="_-sISkz_aEeOMf4ibmUJukw" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sISlD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sI5oj_aEeOMf4ibmUJukw" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_-sI5pT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sI5pT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sI5oj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sJgsD_aEeOMf4ibmUJukw">
            <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="_-sI5oz_aEeOMf4ibmUJukw" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sI5pD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sKHwD_aEeOMf4ibmUJukw" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_-sKHwz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sKHwz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sKHwD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sKHxD_aEeOMf4ibmUJukw">
            <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="_-sKHwT_aEeOMf4ibmUJukw" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sKHwj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sKu0D_aEeOMf4ibmUJukw" name="getSubjectiveSection" isQuery="true" bodyCondition="_-sKu0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sKu0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sKu0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sKu1D_aEeOMf4ibmUJukw">
            <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="_-sKu0T_aEeOMf4ibmUJukw" type="_iy8nYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sKu0j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-sLV4D_aEeOMf4ibmUJukw" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_-sLV4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sLV4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sLV4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sLV5D_aEeOMf4ibmUJukw">
            <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="_-sLV4T_aEeOMf4ibmUJukw" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sLV4j_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-ypKQD_aEeOMf4ibmUJukw" name="getInstructionsSection" isQuery="true" bodyCondition="_-ypKQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-ypKQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-ypKQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ypKRD_aEeOMf4ibmUJukw">
            <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="_-ypKQT_aEeOMf4ibmUJukw" type="_4qKukEE1EeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-ypKQj_aEeOMf4ibmUJukw" 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="_-sQ1dT_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisTemplateId" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sQ1dj_aEeOMf4ibmUJukw">
          <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="_-sRcgT_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisClassCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sRcgj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sSqoD_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisMoodCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sSqoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sTRsD_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sTRsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sUf0D_aEeOMf4ibmUJukw" name="PostprocedureDiagnosisProblemObservation" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sUf0T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sVG4D_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-sVG4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sVG4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sVG4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sVG5D_aEeOMf4ibmUJukw">
            <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="_-sVG4T_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sVG4j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0baBYEEwEeGdmoWy_aLP0Q" name="PreoperativeDiagnosis">
      <ownedRule xmi:id="_-sVt9T_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisTemplateId" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sVt9j_aEeOMf4ibmUJukw">
          <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="_-sW8ED_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisClassCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sW8ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sXjID_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sXjIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sYxQD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisMoodCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sYxQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sZYUD_aEeOMf4ibmUJukw" name="PreoperativeDiagnosisProblemObservation" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sZYUT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sZ_YD_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-sZ_Yz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sZ_Yz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sZ_YD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sZ_ZD_aEeOMf4ibmUJukw">
            <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="_-sZ_YT_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sZ_Yj_aEeOMf4ibmUJukw" 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="_-sbNhj_aEeOMf4ibmUJukw" name="InstructionsSectionTemplateId" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sb0kD_aEeOMf4ibmUJukw">
          <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="_-scboD_aEeOMf4ibmUJukw" name="InstructionsSectionCode" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-scboT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '69730-0' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sdpwD_aEeOMf4ibmUJukw" name="InstructionsSectionCodeP" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sdpwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-seQ0D_aEeOMf4ibmUJukw" name="InstructionsSectionText" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-seQ0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-se34D_aEeOMf4ibmUJukw" name="InstructionsSectionTitle" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-se34T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-sgGAD_aEeOMf4ibmUJukw" name="InstructionsSectionInstructions" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sgGAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sgGAj_aEeOMf4ibmUJukw" name="getInstructionss" isQuery="true" bodyCondition="_-sgGBT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sgGBT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sgGAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sgGBj_aEeOMf4ibmUJukw">
            <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="_-sgGAz_aEeOMf4ibmUJukw" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sgGBD_aEeOMf4ibmUJukw" 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="_-sgtED_aEeOMf4ibmUJukw" name="AdmissionMedicationTemplateId" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sgtET_aEeOMf4ibmUJukw">
          <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="_-shUID_aEeOMf4ibmUJukw" name="AdmissionMedicationClassCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-shUIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-smMoD_aEeOMf4ibmUJukw" name="AdmissionMedicationCodeP" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-smMoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-siiQD_aEeOMf4ibmUJukw" name="AdmissionMedicationCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-siiQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-snawD_aEeOMf4ibmUJukw" name="AdmissionMedicationMoodCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-snawT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-soB0D_aEeOMf4ibmUJukw" name="AdmissionMedicationMedicationActivity" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-soB0T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-soo4D_aEeOMf4ibmUJukw" name="getMedicationActivities" isQuery="true" bodyCondition="_-soo4z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-soo4z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-soo4D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-soo5D_aEeOMf4ibmUJukw">
            <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="_-soo4T_aEeOMf4ibmUJukw" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-soo4j_aEeOMf4ibmUJukw" 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="_-spP9T_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisTemplateId" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-spP9j_aEeOMf4ibmUJukw">
          <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="_-sqeED_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisClassCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sqeET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-srFID_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-srFIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ssTQD_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisMoodCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ssTQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ss6UD_aEeOMf4ibmUJukw" name="HospitalAdmissionDiagnosisProblemObservation" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ss6UT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-sthYD_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-sthYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-sthYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-sthYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-sthZD_aEeOMf4ibmUJukw">
            <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="_-sthYT_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-sthYj_aEeOMf4ibmUJukw" 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="_-s8x8D_aEeOMf4ibmUJukw" name="DiagnosticImagingReportTemplateId" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s8x8T_aEeOMf4ibmUJukw">
          <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="_-tBDYD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCodeP" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tBDYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-s_1QD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsCode" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-s_1QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
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="_-tBqcD_aEeOMf4ibmUJukw" name="GeneralHeaderConstraintsId" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tBqcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tIYID_aEeOMf4ibmUJukw" name="DiagnosticImagingReportInformant" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tIYIT_aEeOMf4ibmUJukw">
          <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="_-tI_MD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportInformationRecipient" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tI_MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tJmQD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportParticipant1" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tJmQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tK0Yz_aEeOMf4ibmUJukw" name="DiagnosticImagingReportInFulfillmentOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tK0ZD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.inFulfillmentOf->one(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tLbcD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tLbcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tQ7AD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportRelatedDocument" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tQ7AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.relatedDocument->one(relatedDocument : cda::RelatedDocument | not relatedDocument.oclIsUndefined() and relatedDocument.oclIsKindOf(cda::RelatedDocument))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tVzgD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOf" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tVzgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uPLYD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportFindingsSection" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uPLYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ygnYT_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDICOMObjectCatalogSection" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ygnYj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DICOMObjectCatalogSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3fOAD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportParticipantAssociatedEntityPersonName" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3fOAT_aEeOMf4ibmUJukw">
          <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="_-3fOAj_aEeOMf4ibmUJukw" name="DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3fOAz_aEeOMf4ibmUJukw">
          <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="_-3fOBD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportParticipantAssociatedEntity" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3fOBT_aEeOMf4ibmUJukw">
          <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="_-3gcID_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3gcIT_aEeOMf4ibmUJukw">
          <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="_-3hDMD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOfServiceEvent4Code" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3hDMT_aEeOMf4ibmUJukw">
          <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="_-3hDMj_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOfServiceEvent4Id" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3hDMz_aEeOMf4ibmUJukw">
          <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="_-3hDND_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3hDNT_aEeOMf4ibmUJukw">
          <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="_-3hqQD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportDocumentationOfServiceEvent3" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3hqQT_aEeOMf4ibmUJukw">
          <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="_-3jfcD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3jfcT_aEeOMf4ibmUJukw">
          <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="_-3jfcj_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3jfcz_aEeOMf4ibmUJukw">
          <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="_-3kGgD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3kGgT_aEeOMf4ibmUJukw">
          <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="_-3kGgj_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7Id" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3kGgz_aEeOMf4ibmUJukw">
          <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="_-3kGhD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3kGhT_aEeOMf4ibmUJukw">
          <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="_-3ktkD_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ktkT_aEeOMf4ibmUJukw">
          <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="_-3ktkj_aEeOMf4ibmUJukw" name="DiagnosticImagingReportComponentOfEncompassingEncounter" constrainedElement="_XwBooEUuEeGdQ4KWAmnbhw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ktkz_aEeOMf4ibmUJukw">
          <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="_-uPycD_aEeOMf4ibmUJukw" name="getFindingsSection" isQuery="true" bodyCondition="_-uPycz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uPycz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uPycD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uPydD_aEeOMf4ibmUJukw">
            <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="_-uPycT_aEeOMf4ibmUJukw" type="_ZcC-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uPycj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yhOcD_aEeOMf4ibmUJukw" name="getDICOMObjectCatalogSection" isQuery="true" bodyCondition="_-yhOcz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yhOcz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yhOcD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yhOdD_aEeOMf4ibmUJukw">
            <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="_-yhOcT_aEeOMf4ibmUJukw" type="_WPTWEDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yhOcj_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_H1UdcEVEEeGAh_iQGJvI5w" name="PhysicianReadingStudyPerformer">
      <ownedRule xmi:id="_-tMpkT_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerTemplateId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tMpkj_aEeOMf4ibmUJukw">
          <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="_-tNQoD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerTime" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tNQoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tN3sD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerTypeCode" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tN3sT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>isDefined('typeCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uN9QD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntity" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uN9QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3l7sD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3l7sT_aEeOMf4ibmUJukw">
          <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="_-3l7sj_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntityHasDICOM" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3l7sz_aEeOMf4ibmUJukw">
          <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="_-3l7tD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3l7tT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject(not assignedPerson->isEmpty() or  not representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3miwD_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntityCode" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3miwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3miwj_aEeOMf4ibmUJukw" name="PhysicianReadingStudyPerformerAssignedEntityId" constrainedElement="_H1UdcEVEEeGAh_iQGJvI5w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3miwz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_H1UdcUVEEeGAh_iQGJvI5w">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-tRiED_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantTemplateId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tRiET_aEeOMf4ibmUJukw">
          <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="_-tSJIT_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantTypeCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tSJIj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.typeCode=vocab::x_EncounterParticipant::ATND</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uOkUD_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntity" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uOkUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3nJ0D_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityAssignedPersonName" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3nJ0T_aEeOMf4ibmUJukw">
          <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="_-3nw4D_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityHasDICOMOrNUCCCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3nw4T_aEeOMf4ibmUJukw">
          <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="_-3nw4j_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityHasNationalProviderId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3nw4z_aEeOMf4ibmUJukw">
          <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="_-3nw5D_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityCode" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3nw5T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.assignedEntity->excluding(null)->reject((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3oX8D_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityId" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3oX8T_aEeOMf4ibmUJukw">
          <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="_-3oX8j_aEeOMf4ibmUJukw" name="PhysicianofRecordParticipantAssignedEntityAssignedPerson" constrainedElement="_H_izsEb1EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3oX8z_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-tXosT_aEeOMf4ibmUJukw" name="StudyActTemplateId" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tXosj_aEeOMf4ibmUJukw">
          <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="_-tZd4D_aEeOMf4ibmUJukw" name="StudyActClassCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tZd4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-taE8D_aEeOMf4ibmUJukw" name="StudyActMoodCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tasAD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tbTED_aEeOMf4ibmUJukw" name="StudyActId" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tbTET_aEeOMf4ibmUJukw">
          <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="_-tb6ID_aEeOMf4ibmUJukw" name="StudyActCode" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tb6IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '113014' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tdIQD_aEeOMf4ibmUJukw" name="StudyActEffectiveTime" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tdIQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tdvUD_aEeOMf4ibmUJukw" name="StudyActText" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tdvUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uQZhT_aEeOMf4ibmUJukw" name="StudyActSeriesAct" constrainedElement="_vjf-wEb4EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uQZhj_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uRAkD_aEeOMf4ibmUJukw" name="getSeriesAct" isQuery="true" bodyCondition="_-uRAkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uRAkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uRAkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uRAlD_aEeOMf4ibmUJukw">
            <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="_-uRAkT_aEeOMf4ibmUJukw" type="_N2wscEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uRAkj_aEeOMf4ibmUJukw" 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() and val.oclIsKindOf(datatypes::ANY))</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="_-teWYD_aEeOMf4ibmUJukw" name="SeriesActTemplateId" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-teWYT_aEeOMf4ibmUJukw">
          <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="_-tgyoD_aEeOMf4ibmUJukw" name="SeriesActClassCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tgyoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-thZsD_aEeOMf4ibmUJukw" name="SeriesActMoodCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-thZsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tin0D_aEeOMf4ibmUJukw" name="SeriesActCode" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tin0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '113015' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tjO4D_aEeOMf4ibmUJukw" name="SeriesActEffectiveTime" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tjO4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tj18D_aEeOMf4ibmUJukw" name="SeriesActId" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tj18T_aEeOMf4ibmUJukw">
          <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="_-tlEED_aEeOMf4ibmUJukw" name="SeriesActText" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tlEET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uRAlT_aEeOMf4ibmUJukw" name="SeriesActSOPInstanceObservation" constrainedElement="_N2wscEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uRAlj_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uRnoD_aEeOMf4ibmUJukw" name="getSOPInstanceObservations" isQuery="true" bodyCondition="_-uRnoz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uRnoz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uRnoD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uRnpD_aEeOMf4ibmUJukw">
            <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="_-uRnoT_aEeOMf4ibmUJukw" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uRnoj_aEeOMf4ibmUJukw" 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="_-tlrID_aEeOMf4ibmUJukw" name="SOPInstanceObservationTemplateId" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tlrIT_aEeOMf4ibmUJukw">
          <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="_-tpVgD_aEeOMf4ibmUJukw" name="SOPInstanceObservationClassCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tpVgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::DGIMG</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tqjoD_aEeOMf4ibmUJukw" name="SOPInstanceObservationEffectiveTime" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tqjoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-trxwD_aEeOMf4ibmUJukw" name="SOPInstanceObservationId" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-trxwT_aEeOMf4ibmUJukw">
          <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="_-ts_4D_aEeOMf4ibmUJukw" name="SOPInstanceObservationMoodCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ts_4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tuOAD_aEeOMf4ibmUJukw" name="SOPInstanceObservationText" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tuOAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-twDMD_aEeOMf4ibmUJukw" name="SOPInstanceObservationCodeP" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-twDMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tvcID_aEeOMf4ibmUJukw" name="SOPInstanceObservationCode" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tvcIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.codeSystem = '1.2.840.10008.2.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uSOsD_aEeOMf4ibmUJukw" name="SOPInstanceObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uSOsT_aEeOMf4ibmUJukw">
          <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="_-uS1wD_aEeOMf4ibmUJukw" name="SOPInstanceObservationPurposeofReferenceObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uS1wT_aEeOMf4ibmUJukw">
          <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="_-uTc0D_aEeOMf4ibmUJukw" name="SOPInstanceObservationReferencedFramesObservation" constrainedElement="_9o7WcEb6EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uTc0T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uSOsj_aEeOMf4ibmUJukw" name="getSOPInstanceObservations" isQuery="true" bodyCondition="_-uSOtT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uSOtT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uSOsj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uSOtj_aEeOMf4ibmUJukw">
            <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="_-uSOsz_aEeOMf4ibmUJukw" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uSOtD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-uS1wj_aEeOMf4ibmUJukw" name="getPurposeofReferenceObservations" isQuery="true" bodyCondition="_-uS1xT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uS1xT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uS1wj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uS1xj_aEeOMf4ibmUJukw">
            <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="_-uS1wz_aEeOMf4ibmUJukw" type="_J-F8UEb7EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uS1xD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-uTc0j_aEeOMf4ibmUJukw" name="getReferencedFramesObservations" isQuery="true" bodyCondition="_-uTc1T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uTc1T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uTc0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uUD4D_aEeOMf4ibmUJukw">
            <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="_-uTc0z_aEeOMf4ibmUJukw" type="_1Zyf4Eb8EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uTc1D_aEeOMf4ibmUJukw" 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="_-twqQD_aEeOMf4ibmUJukw" name="PurposeofReferenceObservationTemplateId" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-txRUD_aEeOMf4ibmUJukw">
          <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="_-tx4YD_aEeOMf4ibmUJukw" name="PurposeofReferenceObservationClassCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tx4YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tyfcD_aEeOMf4ibmUJukw" name="PurposeofReferenceObservationCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tyfcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-tzGgD_aEeOMf4ibmUJukw" name="PurposeofReferenceObservationMoodCode" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tzGgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t0UoD_aEeOMf4ibmUJukw" name="PurposeofReferenceObservationValue" constrainedElement="_J-F8UEb7EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t0UoT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="../../org.openhealthtools.mdht.uml.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="_-t07sD_aEeOMf4ibmUJukw" name="ReferencedFramesObservationTemplateId" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t07sT_aEeOMf4ibmUJukw">
          <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="_-t2J0D_aEeOMf4ibmUJukw" name="ReferencedFramesObservationClassCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t2J0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::ROIBND</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t2w4D_aEeOMf4ibmUJukw" name="ReferencedFramesObservationMoodCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t2w4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t3X8D_aEeOMf4ibmUJukw" name="ReferencedFramesObservationCode" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t3X8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '121190' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uUD4T_aEeOMf4ibmUJukw" name="ReferencedFramesObservationBoundaryObservation" constrainedElement="_1Zyf4Eb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uUD4j_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-uUq8D_aEeOMf4ibmUJukw" name="getBoundaryObservation" isQuery="true" bodyCondition="_-uUq8z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-uUq8z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-uUq8D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uUq9D_aEeOMf4ibmUJukw">
            <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="_-uUq8T_aEeOMf4ibmUJukw" type="_9Yv6gEb8EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uUq8j_aEeOMf4ibmUJukw" 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="_-t4mED_aEeOMf4ibmUJukw" name="BoundaryObservationTemplateId" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t4mET_aEeOMf4ibmUJukw">
          <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="_-t5NID_aEeOMf4ibmUJukw" name="BoundaryObservationClassCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t5NIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t50MD_aEeOMf4ibmUJukw" name="BoundaryObservationCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t6bQD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '113036' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t7CUD_aEeOMf4ibmUJukw" name="BoundaryObservationMoodCode" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t7CUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t7pYD_aEeOMf4ibmUJukw" name="BoundaryObservationValue" constrainedElement="_9Yv6gEb8EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t7pYT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-t8QcD_aEeOMf4ibmUJukw" name="TextObservationTemplateId" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t8QcT_aEeOMf4ibmUJukw">
          <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="_-t-FoD_aEeOMf4ibmUJukw" name="TextObservationClassCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t-FoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t-ssD_aEeOMf4ibmUJukw" name="TextObservationMoodCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t-ssT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t_TwD_aEeOMf4ibmUJukw" name="TextObservationCode" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t_TwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-t_60D_aEeOMf4ibmUJukw" name="TextObservationEffectiveTime" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-t_60T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uAh4D_aEeOMf4ibmUJukw" name="TextObservationText" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uAh4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uBI8D_aEeOMf4ibmUJukw" name="TextObservationValue" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uBI8T_aEeOMf4ibmUJukw">
          <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="_-vtLBT_aEeOMf4ibmUJukw" name="TextObservationSOPInstanceObservation" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vtyED_aEeOMf4ibmUJukw">
          <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="_-vuZID_aEeOMf4ibmUJukw" name="TextObservationQuantityMeasurementObservation" constrainedElement="_9xjKIEb-EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vuZIT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-vtyET_aEeOMf4ibmUJukw" name="getSOPInstanceObservations" isQuery="true" bodyCondition="_-vtyFD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vtyFD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vtyET_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vtyFT_aEeOMf4ibmUJukw">
            <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="_-vtyEj_aEeOMf4ibmUJukw" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vtyEz_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-vuZIj_aEeOMf4ibmUJukw" name="getQuantityMeasurementObservations" isQuery="true" bodyCondition="_-vuZJT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vuZJT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vuZIj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vuZJj_aEeOMf4ibmUJukw">
            <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="_-vuZIz_aEeOMf4ibmUJukw" type="_Px2t4Eb_EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vuZJD_aEeOMf4ibmUJukw" 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="_-uBwAD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationTemplateId" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uCXED_aEeOMf4ibmUJukw">
          <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="_-uDlMD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationClassCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uDlMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uEMQD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationMoodCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uEMQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uEzUD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationCode" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uEzUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uFaYD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationEffectiveTime" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uFaYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uGBcD_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationValue" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uGogD_aEeOMf4ibmUJukw">
          <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="_-vsj8D_aEeOMf4ibmUJukw" name="QuantityMeasurementObservationSOPInstanceObservation" constrainedElement="_Px2t4Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vsj8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-vtLAD_aEeOMf4ibmUJukw" name="getSOPInstanceObservations" isQuery="true" bodyCondition="_-vtLAz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vtLAz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vtLAD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vtLBD_aEeOMf4ibmUJukw">
            <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="_-vtLAT_aEeOMf4ibmUJukw" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vtLAj_aEeOMf4ibmUJukw" 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="_-uGogT_aEeOMf4ibmUJukw" name="CodeObservationsTemplateId" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uHPkD_aEeOMf4ibmUJukw">
          <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="_-uH2oD_aEeOMf4ibmUJukw" name="CodeObservationsClassCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uH2oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uIdsD_aEeOMf4ibmUJukw" name="CodeObservationsMoodCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uIdsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uJEwD_aEeOMf4ibmUJukw" name="CodeObservationsCode" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uJEwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uJr0D_aEeOMf4ibmUJukw" name="CodeObservationsEffectiveTime" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uJr0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uKS4D_aEeOMf4ibmUJukw" name="CodeObservationsValue" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uK58D_aEeOMf4ibmUJukw">
          <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="_-vg9wT_aEeOMf4ibmUJukw" name="CodeObservationsSOPInstanceObservation" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vg9wj_aEeOMf4ibmUJukw">
          <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="_-vhk1T_aEeOMf4ibmUJukw" name="CodeObservationsQuantityMeasurementObservation" constrainedElement="_pmiz8Eb_EeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-viL4D_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-vhk0D_aEeOMf4ibmUJukw" name="getSOPInstanceObservations" isQuery="true" bodyCondition="_-vhk0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vhk0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vhk0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vhk1D_aEeOMf4ibmUJukw">
            <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="_-vhk0T_aEeOMf4ibmUJukw" type="_9o7WcEb6EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vhk0j_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-viL4T_aEeOMf4ibmUJukw" name="getQuantityMeasurementObservations" isQuery="true" bodyCondition="_-viL5D_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-viL5D_aEeOMf4ibmUJukw" name="body" constrainedElement="_-viL4T_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-viL5T_aEeOMf4ibmUJukw">
            <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="_-viL4j_aEeOMf4ibmUJukw" type="_Px2t4Eb_EeGp67IkyTw1fg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-viL4z_aEeOMf4ibmUJukw" 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="_-uLhAD_aEeOMf4ibmUJukw" name="ProcedureContextTemplateId" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uLhAT_aEeOMf4ibmUJukw">
          <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="_-uMIED_aEeOMf4ibmUJukw" name="ProcedureContextCode" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uMIET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uMvID_aEeOMf4ibmUJukw" name="ProcedureContextEffectiveTime" constrainedElement="_crHC0EcAEeGp67IkyTw1fg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uMvIT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-umXxT_aEeOMf4ibmUJukw" name="EncounterDiagnosisTemplateId" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-umXxj_aEeOMf4ibmUJukw">
          <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="_-um-0T_aEeOMf4ibmUJukw" name="EncounterDiagnosisClassCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-um-0j_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uoM8D_aEeOMf4ibmUJukw" name="EncounterDiagnosisMoodCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uoM8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uqCID_aEeOMf4ibmUJukw" name="EncounterDiagnosisCodeP" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uqCIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uo0AD_aEeOMf4ibmUJukw" name="EncounterDiagnosisCode" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uo0AT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '29308-4' and value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uqpMD_aEeOMf4ibmUJukw" name="EncounterDiagnosisProblemObservation" constrainedElement="_Ker6MOM2EeGfv4R-kzpM0g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uqpMT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-urQQD_aEeOMf4ibmUJukw" name="getProblemObservations" isQuery="true" bodyCondition="_-urQQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-urQQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-urQQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-urQRD_aEeOMf4ibmUJukw">
            <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="_-urQQT_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-urQQj_aEeOMf4ibmUJukw" 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="_5lXR0OWUEeGKmvzED_He2w" name="SmokingStatusObservationEffectiveTimeLow" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7peeoOWUEeGKmvzED_He2w">
          <language>OCL</language>
          <body>not self.effectiveTime.oclIsUndefined() implies not self.effectiveTime.low.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uuTlj_aEeOMf4ibmUJukw" name="TobaccoUseTemplateId" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uu6oD_aEeOMf4ibmUJukw">
          <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="_-uvhsD_aEeOMf4ibmUJukw" name="SmokingStatusObservationClassCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uvhsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uwIwD_aEeOMf4ibmUJukw" name="SmokingStatusObservationMoodCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uwv0D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uylAD_aEeOMf4ibmUJukw" name="SmokingStatusObservationCodeP" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uylAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uxW4D_aEeOMf4ibmUJukw" name="SmokingStatusObservationCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uxW4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-uzzID_aEeOMf4ibmUJukw" name="SmokingStatusObservationEffectiveTime" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-uzzIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u1oUD_aEeOMf4ibmUJukw" name="SmokingStatusObservationStatusCodeP" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u1oUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u0aMD_aEeOMf4ibmUJukw" name="SmokingStatusObservationStatusCode" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u0aMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u4EkD_aEeOMf4ibmUJukw" name="SmokingStatusObservationValueP" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u4EkT_aEeOMf4ibmUJukw">
          <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="_-u22cD_aEeOMf4ibmUJukw" name="SmokingStatusObservationValue" constrainedElement="_RYJj0OWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u22cT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_reIG0OWTEeGKmvzED_He2w" general="_gIH_QOWQEeGKmvzED_He2w"/>
    </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="_-u4roD_aEeOMf4ibmUJukw" name="TobaccoUseTemplateId" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u5SsD_aEeOMf4ibmUJukw">
          <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="_-u55wD_aEeOMf4ibmUJukw" name="TobaccoUseClassCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u55wT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u6g0D_aEeOMf4ibmUJukw" name="TobaccoUseMoodCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u6g0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u89ED_aEeOMf4ibmUJukw" name="TobaccoUseCodeP" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u89ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u7u8D_aEeOMf4ibmUJukw" name="TobaccoUseCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u7u8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u9kID_aEeOMf4ibmUJukw" name="TobaccoUseEffectiveTime" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u9kIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u-yQD_aEeOMf4ibmUJukw" name="TobaccoUseStatusCode" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u-yQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-u_ZUD_aEeOMf4ibmUJukw" name="TobaccoUseStatusCodeP" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-u_ZUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vAncD_aEeOMf4ibmUJukw" name="TobaccoUseValue" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vAncT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vB1kD_aEeOMf4ibmUJukw" name="TobaccoUseValueP" constrainedElement="_gIH_QOWQEeGKmvzED_He2w">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vB1kT_aEeOMf4ibmUJukw">
          <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="_gIH_QeWQEeGKmvzED_He2w">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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="_-vER0j_aEeOMf4ibmUJukw" name="AssessmentScaleObservationTemplateId" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vE44D_aEeOMf4ibmUJukw">
          <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="_-vGHAD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationClassCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vGHAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vGuED_aEeOMf4ibmUJukw" name="AssessmentScaleObservationMoodCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vGuET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vHVID_aEeOMf4ibmUJukw" name="AssessmentScaleObservationCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vHVIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vH8MD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationDerivationExpr" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vH8MT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.derivationExpr.oclIsUndefined() or self.derivationExpr.isNullFlavorUndefined()) implies (not self.derivationExpr.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vIjQD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationEffectiveTime" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vIjQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vJKUD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationId" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vJKUT_aEeOMf4ibmUJukw">
          <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="_-vJxYD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationInterpretationCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vJxYT_aEeOMf4ibmUJukw">
          <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="_-vK_gD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationStatusCode" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vK_gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vLmkD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationStatusCodeP" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vLmkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vM0sD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vM0sT_aEeOMf4ibmUJukw">
          <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="_-vOp4D_aEeOMf4ibmUJukw" name="AssessmentScaleObservationAuthor" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vOp4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vPQ8D_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRange" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vPQ8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vXMwD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationAssessmentScaleSupportingObservation" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vXMwT_aEeOMf4ibmUJukw">
          <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="_-3qNID_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRangeObservationRangeTextReference" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3qNIT_aEeOMf4ibmUJukw">
          <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="_-3qNIj_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRangeObservationRangeTextReferenceValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3qNIz_aEeOMf4ibmUJukw">
          <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="_-3qNJD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRangeObservationRangeReferenceValue" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3qNJT_aEeOMf4ibmUJukw">
          <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="_-3q0MD_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRangeObservationRangeText" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3q0MT_aEeOMf4ibmUJukw">
          <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="_-3q0Mj_aEeOMf4ibmUJukw" name="AssessmentScaleObservationReferenceRangeObservationRange" constrainedElement="_Zi33YOYxEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3q0Mz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-vXz0D_aEeOMf4ibmUJukw" name="getAssessmentScaleSupportingObservations" isQuery="true" bodyCondition="_-vXz0z_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-vXz0z_aEeOMf4ibmUJukw" name="body" constrainedElement="_-vXz0D_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vXz1D_aEeOMf4ibmUJukw">
            <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="_-vXz0T_aEeOMf4ibmUJukw" type="_1ZKPgOY2EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-vXz0j_aEeOMf4ibmUJukw" 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="_-vQfED_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationTemplateId" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vQfET_aEeOMf4ibmUJukw">
          <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="_-vRtMD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationClassCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vRtMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vSUQD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationMoodCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vSUQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vS7UD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vS7UT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vTiYD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationId" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vTiYT_aEeOMf4ibmUJukw">
          <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="_-vUwgD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationStatusCode" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vUwgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vVXkD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationStatusCodeP" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vVXkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vWlsD_aEeOMf4ibmUJukw" name="AssessmentScaleSupportingObservationValue" constrainedElement="_1ZKPgOY2EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vWlsT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-vXz1T_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsTemplateId" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vXz1j_aEeOMf4ibmUJukw">
          <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="_-vZB8D_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsClassCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vZB8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vZpAD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsMoodCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vZpAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vaQED_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsId" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vaQET_aEeOMf4ibmUJukw">
          <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="_-va3ID_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-va3IT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vbeMD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsStatusCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vcFQD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vcsUD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsStatusCodeP" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vcsUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vdTYD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsValue" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vdTYT_aEeOMf4ibmUJukw">
          <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="_-vgWsD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipant" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vgWsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3sCUD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipantParticipantRoleClassCode" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3sCUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null).participantRole->excluding(null)->reject(isDefined('classCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3sCUj_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipantTimeLow" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3sCUz_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not time.oclIsUndefined() implies time.low->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3sCVD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipantTimeHigh" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3sCVT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject(not time.oclIsUndefined() implies time.high->size() = 1)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3spYD_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipantTime" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3spYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.participant->excluding(null)->reject((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3spYj_aEeOMf4ibmUJukw" name="CaregiverCharacteristicsParticipantParticipantRole" constrainedElement="__pNCUOY-EeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3spYz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-viL5j_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownTemplateId" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-viy8D_aEeOMf4ibmUJukw">
          <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="_-vkBED_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownClassCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vkBET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vkoID_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownMoodCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vkoIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vlPMD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownId" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vlPMT_aEeOMf4ibmUJukw">
          <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="_-vnEYD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownCodeP" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vnEYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vmdUD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vmdUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-voSgD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownEffectiveTime" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-voSgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vo5kD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownStatusCode" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vo5kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vqHsD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownStatusCodeP" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vqHsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vquwD_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownText" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vquwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vr84D_aEeOMf4ibmUJukw" name="MedicationUseNoneKnownValue" constrainedElement="_6kIXMOZEEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vr84T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.code = '182904002' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_6kIXMeZEEeGINOJ_SD9_dA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.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>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;
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.</body>
      </ownedComment>
      <ownedRule xmi:id="_daqkUOZdEeGINOJ_SD9_dA" name="CognitiveStatusProblemObservationHasTextReference">
        <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="CognitiveStatusProblemObservationHasTextReferenceValue" 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="CognitiveStatusProblemObservationHasOnsetDate">
        <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="CognitiveStatusProblemObservationHasResolutionDate">
        <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="_-vvAMT_aEeOMf4ibmUJukw" name="ProblemObservationTemplateId" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vvAMj_aEeOMf4ibmUJukw">
          <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="_-vw1YD_aEeOMf4ibmUJukw" name="ProblemObservationClassCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vw1YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vxccD_aEeOMf4ibmUJukw" name="ProblemObservationMoodCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vyDgD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vyqkD_aEeOMf4ibmUJukw" name="ProblemObservationNegationInd" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vyqkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-vzRoD_aEeOMf4ibmUJukw" name="ProblemObservationId" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-vzRoT_aEeOMf4ibmUJukw">
          <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="_-v1G0D_aEeOMf4ibmUJukw" name="ProblemObservationCodeP" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v1t4D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v0fwD_aEeOMf4ibmUJukw" name="ProblemObservationCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v0fwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '373930000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v2U8D_aEeOMf4ibmUJukw" name="ProblemObservationText" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v2U8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v3jED_aEeOMf4ibmUJukw" name="ProblemObservationStatusCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v3jET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v4xMD_aEeOMf4ibmUJukw" name="ProblemObservationEffectiveTime" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v4xMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v5YQD_aEeOMf4ibmUJukw" name="CognitiveStatusProblemObservationMethodCode" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v5YQT_aEeOMf4ibmUJukw">
          <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="_-v7NcD_aEeOMf4ibmUJukw" name="ProblemObservationValueP" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v7NcT_aEeOMf4ibmUJukw">
          <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="_-v6mYD_aEeOMf4ibmUJukw" name="ProblemObservationValue" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v6mYT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-x_C8D_aEeOMf4ibmUJukw" name="CognitiveStatusProblemObservationNonMedicinalSupplyActivity" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-x_C8T_aEeOMf4ibmUJukw">
          <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="_-x_qAD_aEeOMf4ibmUJukw" name="CognitiveStatusProblemObservationCaregiverCharacteristics" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-x_qAT_aEeOMf4ibmUJukw">
          <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="_-yARED_aEeOMf4ibmUJukw" name="CognitiveStatusProblemObservationAssessmentScaleObservation" constrainedElement="_dXKPQOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yARET_aEeOMf4ibmUJukw">
          <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="_-x_C8j_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_-x_C9T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-x_C9T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-x_C8j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-x_C9j_aEeOMf4ibmUJukw">
            <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="_-x_C8z_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-x_C9D_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-x_qAj_aEeOMf4ibmUJukw" name="getCaregiverCharacteristicss" isQuery="true" bodyCondition="_-x_qBT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-x_qBT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-x_qAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-x_qBj_aEeOMf4ibmUJukw">
            <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="_-x_qAz_aEeOMf4ibmUJukw" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-x_qBD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yA4ID_aEeOMf4ibmUJukw" name="getAssessmentScaleObservations" isQuery="true" bodyCondition="_-yA4Iz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yA4Iz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yA4ID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yA4JD_aEeOMf4ibmUJukw">
            <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="_-yA4IT_aEeOMf4ibmUJukw" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yA4Ij_aEeOMf4ibmUJukw" 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="CognitiveStatusResultObservationTextReference">
        <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="CognitiveStatusResultObservationTextReferenceValue" 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="_-v9CoD_aEeOMf4ibmUJukw" name="ResultObservationTemplateId" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v9CoT_aEeOMf4ibmUJukw">
          <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="_-v-QwD_aEeOMf4ibmUJukw" name="ResultObservationClassCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v-QwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-v_e4D_aEeOMf4ibmUJukw" name="ResultObservationMoodCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-v_e4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wAF8D_aEeOMf4ibmUJukw" name="ResultObservationId" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wAF8T_aEeOMf4ibmUJukw">
          <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="_-wCiMD_aEeOMf4ibmUJukw" name="ResultObservationCodeP" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wCiMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wBUED_aEeOMf4ibmUJukw" name="ResultObservationCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wBUET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '373930000' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wDJQD_aEeOMf4ibmUJukw" name="ResultObservationText" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wDwUD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wFlgD_aEeOMf4ibmUJukw" name="ResultObservationStatusCodeP" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wFlgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wEXYD_aEeOMf4ibmUJukw" name="ResultObservationStatusCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wEXYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wGzoD_aEeOMf4ibmUJukw" name="ResultObservationEffectiveTime" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wGzoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wHasD_aEeOMf4ibmUJukw" name="ResultObservationValue" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wHasT_aEeOMf4ibmUJukw">
          <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="_-wIBwD_aEeOMf4ibmUJukw" name="ResultObservationInterpretationCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wIBwT_aEeOMf4ibmUJukw">
          <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="_-wIo0D_aEeOMf4ibmUJukw" name="ResultObservationMethodCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wIo0T_aEeOMf4ibmUJukw">
          <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="_-wJ28D_aEeOMf4ibmUJukw" name="ResultObservationTargetSiteCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wJ28T_aEeOMf4ibmUJukw">
          <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="_-yA4JT_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationAuthor" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yA4Jj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yBfMD_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yBfMT_aEeOMf4ibmUJukw">
          <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="_-yCGRT_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationCaregiverCharacteristics" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yCGRj_aEeOMf4ibmUJukw">
          <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="_-yCtVT_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationAssessmentScaleObservation" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yCtVj_aEeOMf4ibmUJukw">
          <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="_-yD7cD_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationReferenceRange" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yD7cT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3t3gD_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3t3gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3uekD_aEeOMf4ibmUJukw" name="CognitiveStatusResultObservationReferenceRangeObservationRange" constrainedElement="_gkBM0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3uekT_aEeOMf4ibmUJukw">
          <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="_-yCGQD_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_-yCGQz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yCGQz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yCGQD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yCGRD_aEeOMf4ibmUJukw">
            <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="_-yCGQT_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yCGQj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yCtUD_aEeOMf4ibmUJukw" name="getCaregiverCharacteristicss" isQuery="true" bodyCondition="_-yCtUz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yCtUz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yCtUD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yCtVD_aEeOMf4ibmUJukw">
            <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="_-yCtUT_aEeOMf4ibmUJukw" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yCtUj_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yDUYD_aEeOMf4ibmUJukw" name="getAssessmentScaleObservations" isQuery="true" bodyCondition="_-yDUYz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yDUYz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yDUYD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yDUZD_aEeOMf4ibmUJukw">
            <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="_-yDUYT_aEeOMf4ibmUJukw" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yDUYj_aEeOMf4ibmUJukw" 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="_-wLFET_aEeOMf4ibmUJukw" name="ResultOrganizerTemplateId" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wLFEj_aEeOMf4ibmUJukw">
          <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="_-wLsID_aEeOMf4ibmUJukw" name="ResultOrganizerClassCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wMTMD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wM6QD_aEeOMf4ibmUJukw" name="ResultOrganizerMoodCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wM6QT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wNhUD_aEeOMf4ibmUJukw" name="ResultOrganizerId" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wNhUT_aEeOMf4ibmUJukw">
          <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="_-wOIYD_aEeOMf4ibmUJukw" name="ResultOrganizerCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wOIYT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wQkoD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCodeP" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wQkoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wPWgD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCode" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wPWgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yEigT_aEeOMf4ibmUJukw" name="CognitiveStatusResultOrganizerCognitiveStatusResultObservation" constrainedElement="_jfoCUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yEigj_aEeOMf4ibmUJukw">
          <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="_-yFJkD_aEeOMf4ibmUJukw" name="getCognitiveStatusResultObservations" isQuery="true" bodyCondition="_-yFJkz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yFJkz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yFJkD_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yFJlD_aEeOMf4ibmUJukw">
            <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="_-yFJkT_aEeOMf4ibmUJukw" type="_gkBM0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yFJkj_aEeOMf4ibmUJukw" 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="_-wRLsD_aEeOMf4ibmUJukw" name="DeceasedObservationTemplateId" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wRLsT_aEeOMf4ibmUJukw">
          <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="_-wSZ0D_aEeOMf4ibmUJukw" name="DeceasedObservationClassCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wSZ0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wTA4D_aEeOMf4ibmUJukw" name="DeceasedObservationMoodCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wTA4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wTn8D_aEeOMf4ibmUJukw" name="DeceasedObservationId" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wTn8T_aEeOMf4ibmUJukw">
          <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="_-wVdID_aEeOMf4ibmUJukw" name="DeceasedObservationCodeP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wVdIT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wU2ED_aEeOMf4ibmUJukw" name="DeceasedObservationCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wU2ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wWrQD_aEeOMf4ibmUJukw" name="DeceasedObservationStatusCode" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wWrQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wX5YD_aEeOMf4ibmUJukw" name="DeceasedObservationStatusCodeP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wX5YT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wYgcD_aEeOMf4ibmUJukw" name="DeceasedObservationEffectiveTime" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wZHgD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wZukD_aEeOMf4ibmUJukw" name="DeceasedObservationValue" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wZukT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.code = '419099009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wa8sD_aEeOMf4ibmUJukw" name="DeceasedObservationValueP" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wa8sT_aEeOMf4ibmUJukw">
          <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="_-yFJlT_aEeOMf4ibmUJukw" name="DeceasedObservationProblemObservation" constrainedElement="_lm3boOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yFwoD_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_-yFwoT_aEeOMf4ibmUJukw" name="getProblemObservation" isQuery="true" bodyCondition="_-yFwpD_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yFwpD_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yFwoT_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yFwpT_aEeOMf4ibmUJukw">
            <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="_-yFwoj_aEeOMf4ibmUJukw" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yFwoz_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_rVl5AOZbEeGINOJ_SD9_dA" name="FunctionalStatusProblemObservation">
      <ownedComment xmi:id="_1PP4wObqEeGINOJ_SD9_dA">
        <body>A functional status problem observation is a clinical statement that represents a patient's functional perfomance and ability.</body>
      </ownedComment>
      <ownedRule xmi:id="_4AP2MObpEeGINOJ_SD9_dA" name="FunctionalStatusProblemObservationHasTextReference">
        <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="FunctionalStatusProblemObservationTextReferenceValue" 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="FunctionalStatusProblemObservationHasTextReferenceValue" 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="FunctionalStatusProblemObservationHasOnsetDate">
        <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="FunctionalStatusProblemObservationHasResolutionDate">
        <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="FunctionalStatusProblemObservationValueNullFlavor" 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="_-wcK0D_aEeOMf4ibmUJukw" name="ProblemObservationTemplateId" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wcK0T_aEeOMf4ibmUJukw">
          <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="_-wenED_aEeOMf4ibmUJukw" name="ProblemObservationClassCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wenET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wfOID_aEeOMf4ibmUJukw" name="ProblemObservationMoodCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wf1MD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wgcQD_aEeOMf4ibmUJukw" name="ProblemObservationNegationInd" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wgcQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-whDUD_aEeOMf4ibmUJukw" name="ProblemObservationId" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-whDUT_aEeOMf4ibmUJukw">
          <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="_-wi4gD_aEeOMf4ibmUJukw" name="ProblemObservationCodeP" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wi4gT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wiRcD_aEeOMf4ibmUJukw" name="ProblemObservationCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wiRcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '248536006' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wkGoD_aEeOMf4ibmUJukw" name="ProblemObservationText" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wkGoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wlUwD_aEeOMf4ibmUJukw" name="ProblemObservationStatusCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wlUwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wmi4D_aEeOMf4ibmUJukw" name="ProblemObservationEffectiveTime" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wmi4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-woYED_aEeOMf4ibmUJukw" name="ProblemObservationValueP" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-woYET_aEeOMf4ibmUJukw">
          <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="_-wnJ8D_aEeOMf4ibmUJukw" name="ProblemObservationValue" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wnxAD_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wpmMD_aEeOMf4ibmUJukw" name="FunctionalStatusProblemObservationMethodCode" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wpmMT_aEeOMf4ibmUJukw">
          <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="_-yGXsD_aEeOMf4ibmUJukw" name="FunctionalStatusProblemObservationNonMedicinalSupplyActivity" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yGXsT_aEeOMf4ibmUJukw">
          <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="_-yG-wD_aEeOMf4ibmUJukw" name="FunctionalStatusProblemObservationCaregiverCharacteristics" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yG-wT_aEeOMf4ibmUJukw">
          <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="_-yHl0D_aEeOMf4ibmUJukw" name="FunctionalStatusProblemObservationAssessmentScaleObservation" constrainedElement="_rVl5AOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yHl0T_aEeOMf4ibmUJukw">
          <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="_-yGXsj_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_-yGXtT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yGXtT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yGXsj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yGXtj_aEeOMf4ibmUJukw">
            <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="_-yGXsz_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yGXtD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yG-wj_aEeOMf4ibmUJukw" name="getCaregiverCharacteristicss" isQuery="true" bodyCondition="_-yG-xT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yG-xT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yG-wj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yG-xj_aEeOMf4ibmUJukw">
            <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="_-yG-wz_aEeOMf4ibmUJukw" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yG-xD_aEeOMf4ibmUJukw" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yHl0j_aEeOMf4ibmUJukw" name="getAssessmentScaleObservations" isQuery="true" bodyCondition="_-yHl1T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yHl1T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yHl0j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yHl1j_aEeOMf4ibmUJukw">
            <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="_-yHl0z_aEeOMf4ibmUJukw" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yHl1D_aEeOMf4ibmUJukw" 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="FunctionalStatusResultObservationTextReference">
        <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="FunctionalStatusResultObservationTextReferenceValue" 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="_-wq0UD_aEeOMf4ibmUJukw" name="ResultObservationTemplateId" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wq0UT_aEeOMf4ibmUJukw">
          <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="_-wsCcD_aEeOMf4ibmUJukw" name="ResultObservationClassCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wspgD_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wtQkD_aEeOMf4ibmUJukw" name="ResultObservationMoodCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wtQkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wt3oD_aEeOMf4ibmUJukw" name="ResultObservationId" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wt3oT_aEeOMf4ibmUJukw">
          <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="_-wwT4D_aEeOMf4ibmUJukw" name="ResultObservationCodeP" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wwT4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wvFwD_aEeOMf4ibmUJukw" name="ResultObservationCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wvFwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.codeSystem = '2.16.840.1.113883.6.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ww68D_aEeOMf4ibmUJukw" name="ResultObservationText" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ww68T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wzXMD_aEeOMf4ibmUJukw" name="ResultObservationStatusCodeP" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wzXMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-wyJED_aEeOMf4ibmUJukw" name="ResultObservationStatusCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-wyJET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w0lUD_aEeOMf4ibmUJukw" name="ResultObservationEffectiveTime" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w0lUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w1MYD_aEeOMf4ibmUJukw" name="ResultObservationValue" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w1MYT_aEeOMf4ibmUJukw">
          <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="_-w1zcD_aEeOMf4ibmUJukw" name="ResultObservationInterpretationCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w1zcT_aEeOMf4ibmUJukw">
          <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="_-w2agD_aEeOMf4ibmUJukw" name="ResultObservationMethodCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w2agT_aEeOMf4ibmUJukw">
          <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="_-w3BkD_aEeOMf4ibmUJukw" name="ResultObservationTargetSiteCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w3BkT_aEeOMf4ibmUJukw">
          <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="_-yIM4D_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationAuthor" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yIM4T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yIz8D_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationNonMedicinalSupplyActivity" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yIz8T_aEeOMf4ibmUJukw">
          <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="_-yJbAD_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationCaregiverCharacteristics" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yJbAT_aEeOMf4ibmUJukw">
          <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="_-yKCET_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationAssessmentScaleObservation" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yKCEj_aEeOMf4ibmUJukw">
          <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="_-yKpJT_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationReferenceRange" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yKpJj_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.referenceRange->exists(referenceRange : cda::ReferenceRange | not referenceRange.oclIsUndefined() and referenceRange.oclIsKindOf(cda::ReferenceRange))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3vssD_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationReferenceRangeObservationRangeNoCode" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3vssT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.referenceRange->excluding(null).observationRange->excluding(null)->reject(code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3vssj_aEeOMf4ibmUJukw" name="FunctionalStatusResultObservationReferenceRangeObservationRange" constrainedElement="_viRU0OZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3vssz_aEeOMf4ibmUJukw">
          <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="_-yIz8j_aEeOMf4ibmUJukw" name="getNonMedicinalSupplyActivity" isQuery="true" bodyCondition="_-yIz9T_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yIz9T_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yIz8j_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yIz9j_aEeOMf4ibmUJukw">
            <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="_-yIz8z_aEeOMf4ibmUJukw" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yIz9D_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yJbAj_aEeOMf4ibmUJukw" name="getCaregiverCharacteristics" isQuery="true" bodyCondition="_-yJbBT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yJbBT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yJbAj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yKCED_aEeOMf4ibmUJukw">
            <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="_-yJbAz_aEeOMf4ibmUJukw" type="__pNCUOY-EeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yJbBD_aEeOMf4ibmUJukw" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_-yKpID_aEeOMf4ibmUJukw" name="getAssessmentScaleObservation" isQuery="true" bodyCondition="_-yKpIz_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yKpIz_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yKpID_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yKpJD_aEeOMf4ibmUJukw">
            <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="_-yKpIT_aEeOMf4ibmUJukw" type="_Zi33YOYxEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yKpIj_aEeOMf4ibmUJukw" 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="FunctionalStatusResultOrganizerCodeCodeSystem" 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="_-w4Psj_aEeOMf4ibmUJukw" name="ResultOrganizerTemplateId" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w42wD_aEeOMf4ibmUJukw">
          <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="_-w5d0D_aEeOMf4ibmUJukw" name="ResultOrganizerClassCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w5d0T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w6r8D_aEeOMf4ibmUJukw" name="ResultOrganizerMoodCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w6r8T_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w7TAD_aEeOMf4ibmUJukw" name="ResultOrganizerId" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w7TAT_aEeOMf4ibmUJukw">
          <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="_-w76ED_aEeOMf4ibmUJukw" name="ResultOrganizerCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w76ET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w9vQD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCodeP" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w9vQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-w9IMD_aEeOMf4ibmUJukw" name="ResultOrganizerStatusCode" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w9IMT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yL3QD_aEeOMf4ibmUJukw" name="FunctionalStatusResultOrganizerFunctionalStatusResultObservation" constrainedElement="_zBlUUOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yL3QT_aEeOMf4ibmUJukw">
          <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="_-yL3Qj_aEeOMf4ibmUJukw" name="getFunctionalStatusResultObservations" isQuery="true" bodyCondition="_-yL3RT_aEeOMf4ibmUJukw">
        <ownedRule xmi:id="_-yL3RT_aEeOMf4ibmUJukw" name="body" constrainedElement="_-yL3Qj_aEeOMf4ibmUJukw">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yL3Rj_aEeOMf4ibmUJukw">
            <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="_-yL3Qz_aEeOMf4ibmUJukw" type="_viRU0OZbEeGINOJ_SD9_dA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-yL3RD_aEeOMf4ibmUJukw" 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="_-w-9YD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageTemplateId" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w-9YT_aEeOMf4ibmUJukw">
          <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="_-w_kcD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageClassCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-w_kcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xALgD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageMoodCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xALgT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xAykD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageId" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xAykT_aEeOMf4ibmUJukw">
          <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="_-xCnwD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageCodeP" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xCnwT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xCAsD_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageCode" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xCAsT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '420905001' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xD14D_aEeOMf4ibmUJukw" name="HighestPressureUlcerStageValue" constrainedElement="_4YgVsOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xD14T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-xEc8D_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationTemplateId" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xEc8T_aEeOMf4ibmUJukw">
          <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="_-xFEAD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationClassCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xFEAT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xFrED_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationMoodCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xFrET_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xGSID_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationId" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xGSIT_aEeOMf4ibmUJukw">
          <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="_-xIHUD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationCodeP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xIHUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xHgQD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xHgQT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = '2264892003' and value.codeSystem = '2.16.840.1.113883.6.96')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xJVcD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationStatusCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xJVcT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and 
let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in 
value.code = 'completed')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xKjkD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationStatusCodeP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xKjkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xLKoD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEffectiveTime" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xLKoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xLxsD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationValue" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xLxsT_aEeOMf4ibmUJukw">
          <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="_-yMeUD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationAuthor" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yMeUT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-yNFYD_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationship" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yNFYT_aEeOMf4ibmUJukw">
          <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="_-3w60D_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipObservationClassCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3w60T_aEeOMf4ibmUJukw">
          <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="_-3w60j_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipObservationMoodCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3w60z_aEeOMf4ibmUJukw">
          <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="_-3w61D_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValue" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3w61T_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="_-3xh4D_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipObservationValueP" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3xh4T_aEeOMf4ibmUJukw">
          <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="_-3xh4j_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipTypeCode" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3xh4z_aEeOMf4ibmUJukw">
          <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="_-3xh5D_aEeOMf4ibmUJukw" name="NumberOfPressureUlcersObservationEntryRelationshipObservation" constrainedElement="_7c4ssOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3xh5T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-xQqMD_aEeOMf4ibmUJukw" name="PressureUlcerObservationTemplateId" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xRRQD_aEeOMf4ibmUJukw">
          <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="_-xUUkD_aEeOMf4ibmUJukw" name="PressureUlcerObservationClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xUUkT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xU7oD_aEeOMf4ibmUJukw" name="PressureUlcerObservationMoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xU7oT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xVisD_aEeOMf4ibmUJukw" name="PressureUlcerObservationNegationInd" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xVisT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xWJwD_aEeOMf4ibmUJukw" name="PressureUlcerObservationId" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xWJwT_aEeOMf4ibmUJukw">
          <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="_-xn2kD_aEeOMf4ibmUJukw" name="PressureUlcerObservationCodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xn2kT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xWw0D_aEeOMf4ibmUJukw" name="PressureUlcerObservationCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xXX4D_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and 
let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in 
value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xodoD_aEeOMf4ibmUJukw" name="PressureUlcerObservationText" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xodoT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-xprwD_aEeOMf4ibmUJukw" name="PressureUlcerObservationValue" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xprwT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="_-xq54D_aEeOMf4ibmUJukw" name="PressureUlcerObservationValueP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xq54T_aEeOMf4ibmUJukw">
          <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="_-xtWID_aEeOMf4ibmUJukw" name="PressureUlcerObservationTargetSiteCodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xtWIT_aEeOMf4ibmUJukw">
          <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="_-xsIAD_aEeOMf4ibmUJukw" name="PressureUlcerObservationTargetSiteCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xsIAT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = element.oclAsType(datatypes::CD) in 
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="_-yNscD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yNscT_aEeOMf4ibmUJukw">
          <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="_-yOTgD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yOTgT_aEeOMf4ibmUJukw">
          <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="_-yO6kD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yO6kT_aEeOMf4ibmUJukw">
          <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="_-3ywAD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ywAT_aEeOMf4ibmUJukw">
          <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="_-3ywAj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3ywAz_aEeOMf4ibmUJukw">
          <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="_-3zXED_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3zXET_aEeOMf4ibmUJukw">
          <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="_-3zXEj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3zXEz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = code.oclAsType(datatypes::CD) in 
value.code = '401238003' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-3zXFD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3zXFT_aEeOMf4ibmUJukw">
          <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="_-3z-ID_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3z-IT_aEeOMf4ibmUJukw">
          <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="_-3z-Ij_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship1Observation1" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-3z-Iz_aEeOMf4ibmUJukw">
          <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="_-30lMD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-30lMT_aEeOMf4ibmUJukw">
          <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="_-31MQD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-31MQT_aEeOMf4ibmUJukw">
          <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="_-31MQj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-31MQz_aEeOMf4ibmUJukw">
          <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="_-31MRD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-31MRT_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = code.oclAsType(datatypes::CD) in 
value.code = '401239006' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-31zUD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-31zUT_aEeOMf4ibmUJukw">
          <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="_-31zUj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-31zUz_aEeOMf4ibmUJukw">
          <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="_-32aYD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship2Observation2" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-32aYT_aEeOMf4ibmUJukw">
          <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="_-33BcD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3ClassCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-33BcT_aEeOMf4ibmUJukw">
          <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="_-33Bcj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3MoodCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-33Bcz_aEeOMf4ibmUJukw">
          <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="_-33ogD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3CodeP" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-33ogT_aEeOMf4ibmUJukw">
          <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="_-33ogj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3Code" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-33ogz_aEeOMf4ibmUJukw">
          <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 
let value : datatypes::CD = code.oclAsType(datatypes::CD) in 
value.code = '425094009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-33ohD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3Value" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-33ohT_aEeOMf4ibmUJukw">
          <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="_-34PkD_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3TypeCode" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-34PkT_aEeOMf4ibmUJukw">
          <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="_-34Pkj_aEeOMf4ibmUJukw" name="PressureUlcerObservationEntryRelationship3Observation3" constrainedElement="_9rQowOZbEeGINOJ_SD9_dA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-34Pkz_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.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="_-yhOdT_aEeOMf4ibmUJukw" name="FetusSubjectContextTemplateId" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yhOdj_aEeOMf4ibmUJukw">
          <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="_-yickD_aEeOMf4ibmUJukw" name="FetusSubjectContextCode" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-yickT_aEeOMf4ibmUJukw">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and 
let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in 
value.code = '121026' and value.codeSystem = '1.2.840.10008.2.16.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_-ykRwD_aEeOMf4ibmUJukw" name="FetusSubjectContextSubject" constrainedElement="_TkyvwPKwEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ykRwT_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_grTqsEcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XIE-YPKyEeGFUPBL8qS7yQ" name="ObserverContext">
      <ownedRule xmi:id="_-ykRwj_aEeOMf4ibmUJukw" name="ObserverContextTemplateId" constrainedElement="_XIE-YPKyEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ykRwz_aEeOMf4ibmUJukw">
          <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="_-ymG8D_aEeOMf4ibmUJukw" name="ObserverContextAssignedAuthor" constrainedElement="_XIE-YPKyEeGFUPBL8qS7yQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ymG8T_aEeOMf4ibmUJukw">
          <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="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
      </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="_-WjEID_aEeOMf4ibmUJukw">
      <eAnnotations xmi:id="_-Wk5UD_aEeOMf4ibmUJukw" 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="../../org.openhealthtools.mdht.uml.cda.consol.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:ValueSetConstraint xmi:id="__6IX4CUrEeG_gJw2x8CkdQ"/>
  <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="../../org.openhealthtools.mdht.uml.term.models/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="../../org.openhealthtools.mdht.uml.term.models/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:ValueSetConstraint xmi:id="_S5cLoCytEeGMXrZ0DiQwGg">
    <reference href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/consol-vocab.uml#_2SbZNRSVEeGGzu7fmW9pXw"/>
    <base_Property href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/.controlled/consol-documents.uml#_nLJOcCymEeGMXrZ0DiQwGg"/>
    <ruleId>CONF:5407</ruleId>
  </CDA:ValueSetConstraint>
  <CDA:AssociationValidation xmi:id="_dO2aID-OEeGvOdejHZ7dYg">
    <ruleId>CONF:8508</ruleId>
    <base_Association href="../../org.openhealthtools.mdht.uml.cda.consol.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="_qga1cOZkEeGINOJ_SD9_dA" base_Class="_lm3boOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.79">
    <ruleId>CONF:14871</ruleId>
    <ruleId>CONF:14872</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_JtkN8OZlEeGINOJ_SD9_dA" base_Constraint="_Dk8p4OZlEeGINOJ_SD9_dA">
    <ruleId>CONF:14874</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</ruleId>
    <ruleId>CONF:10036</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2UnxxhSVEeGGzu7fmW9pXw" base_Class="_2UnxkRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.8"/>
  <CDA:CDATemplate xmi:id="_2IKC4BSVEeGGzu7fmW9pXw" base_Class="_2IJb0BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.2" assigningAuthorityName="HITSP C32">
    <ruleId>C32-[CT1-19]</ruleId>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_2TeiKRSVEeGGzu7fmW9pXw" base_Class="_2TeiIRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.21.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:ConformsTo xmi:id="_BJkF0DstEeGvzMYhXuqAEA" base_Generalization="_R_oggDssEeGvzMYhXuqAEA" requiresParentId="true">
    <ruleId>CONF:9477</ruleId>
    <ruleId>CONF:10039</ruleId>
  </CDA:ConformsTo>
  <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"/>
  <CDA:ConformsTo xmi:id="_HCyIUD1kEeG3tde5scYNWA" base_Generalization="_-QelMD1jEeG3tde5scYNWA" requiresParentId="true">
    <ruleId>CONF:9968</ruleId>
  </CDA:ConformsTo>
  <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"/>
  <CDA:ConformsTo xmi:id="_Asa1YD4jEeGhnL_c4sBHGg" base_Generalization="_xfHkwD4iEeGhnL_c4sBHGg" requiresParentId="true">
    <ruleId>CONF:9914</ruleId>
    <ruleId>CONF:10047</ruleId>
  </CDA:ConformsTo>
  <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:ConformsTo xmi:id="_ddfKwD7YEeGvOdejHZ7dYg" base_Generalization="_Luag8D7YEeGvOdejHZ7dYg" requiresParentId="true">
    <ruleId>CONF:9969</ruleId>
    <ruleId>CONF:10049</ruleId>
  </CDA:ConformsTo>
  <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"/>
  <CDA:ConformsTo xmi:id="_tO2mUD_LEeGXieeKs7NJjA" base_Generalization="_UCQbAD_LEeGXieeKs7NJjA" requiresParentId="true">
    <ruleId>CONF:9483</ruleId>
  </CDA:ConformsTo>
  <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:ConformsTo xmi:id="_M8fegEBVEeGXKr6TcG1UOQ" base_Generalization="_2T9DPxSVEeGGzu7fmW9pXw" requiresParentId="true">
    <ruleId>CONF:9970</ruleId>
  </CDA:ConformsTo>
  <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:ConformsTo xmi:id="_rQcUQEUuEeGdQ4KWAmnbhw" base_Generalization="_XwdtgEUuEeGdQ4KWAmnbhw" requiresParentId="true">
    <ruleId>CONF:9405</ruleId>
    <ruleId>CONF:10041</ruleId>
  </CDA:ConformsTo>
  <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</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_uWPq8Ma8EeGp28IjMvW3Ag" base_Constraint="_meGqAMa8EeGp28IjMvW3Ag">
    <ruleId>CONF:5251</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VcpMwMa_EeGp28IjMvW3Ag" base_Constraint="_QNCUUMa_EeGp28IjMvW3Ag">
    <ruleId>CONF:6380</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_V4fbQMa_EeGp28IjMvW3Ag" base_Constraint="_SYLWMMa_EeGp28IjMvW3Ag">
    <ruleId>CONF:6387</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tg1F4PKuEeGFUPBL8qS7yQ" base_Constraint="_ZNLmgPKuEeGFUPBL8qS7yQ">
    <ruleId>CONF:9504</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_oT3JYPK8EeGFUPBL8qS7yQ" base_Constraint="_fHsUwPK8EeGFUPBL8qS7yQ">
    <ruleId>CONF:9937</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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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>
  </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>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ICYiICKfEeG9m6LRl9ardQ" severity="WARNING" base_Constraint="_1SPc4CKeEeG9m6LRl9ardQ">
    <ruleId>CONF: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>
  </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:ValueSetConstraint xmi:id="_vj2U0CYOEeGWfpmyutaqOA">
    <reference href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/consol-vocab.uml#_xQv28CXLEeGnSfJ2zNllag"/>
  </CDA:ValueSetConstraint>
  <CDA:PropertyValidation xmi:id="__uvHMCnAEeGHDN_aHIiN8Q" severity="WARNING">
    <ruleId>CONF:9117</ruleId>
    <ruleId>CONF:9118</ruleId>
  </CDA:PropertyValidation>
  <CDA:ValueSetConstraint xmi:id="_DrnMcCnBEeGHDN_aHIiN8Q">
    <reference href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/consol-vocab.uml#_xQv28CXLEeGnSfJ2zNllag"/>
  </CDA:ValueSetConstraint>
  <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:ConstraintValidation xmi:id="_2G02UANMEeKJMbqTnrzczw" base_Constraint="_oguNAANMEeKJMbqTnrzczw">
    <ruleId>CONF:7421</ruleId>
    <ruleId>CONF:10083</ruleId>
    <ruleId>CONF:10084</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="../../org.openhealthtools.mdht.uml.term.models/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</ruleId>
    <ruleId>CONF:16773</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</ruleId>
    <ruleId>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="WARNING" 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</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</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_w9zXcOJlEeG3cO7ebC3QuA" severity="INFO" base_Constraint="_uQVroOJlEeG3cO7ebC3QuA">
    <ruleId>CONF: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="_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="../../org.openhealthtools.mdht.uml.term.models/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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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>
  </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="_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:ConstraintValidation xmi:id="_xlA8oBrcEeGo461UQq-B1g" severity="WARNING" base_Constraint="_pHR7UBrcEeGo461UQq-B1g">
    <ruleId>CONF:16854</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_zB2uEBrcEeGo461UQq-B1g" severity="INFO" base_Constraint="_tZn6QBrcEeGo461UQq-B1g">
    <ruleId>CONF:7373</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="_CGugsB7pEeGEaLkc3UAsAg" severity="WARNING" base_Constraint="_vY4cQBrcEeGo461UQq-B1g">
    <ruleId>CONF:7369</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"/>
  <CDA:ConstraintValidation xmi:id="_t6RnIEFmEeG2TLeVPbv7pg" base_Constraint="_4CqJMEFiEeG2TLeVPbv7pg"/>
  <CDA:ConstraintValidation xmi:id="_Wrf3gEIjEeG4bZAl2IGXmQ" base_Constraint="_5BnBgEIiEeG4bZAl2IGXmQ">
    <ruleId>CONF:7508</ruleId>
    <ruleId>CONF:9104</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>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s5m7oEInEeG4bZAl2IGXmQ" severity="WARNING" base_Constraint="_cWfuoEInEeG4bZAl2IGXmQ">
    <ruleId>CONF:7526</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_W-JCgEIqEeG4bZAl2IGXmQ" base_Constraint="_1smJUEIpEeG4bZAl2IGXmQ">
    <ruleId>CONF:7524</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XhPvkEIqEeG4bZAl2IGXmQ" base_Constraint="_L0emcEIqEeG4bZAl2IGXmQ">
    <ruleId>CONF:7542</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_WUhoUEIrEeG4bZAl2IGXmQ" base_Constraint="_Mu_RcEIrEeG4bZAl2IGXmQ">
    <ruleId>CONF:7550</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Dl9JoEa7EeG7gbamepbPeA" severity="WARNING" base_Constraint="_uejSEEa6EeG7gbamepbPeA">
    <ruleId>CONF:16867</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_moUDsEa8EeG75M7WNoZ4Xg" base_Constraint="_fELj4Ea8EeG75M7WNoZ4Xg">
    <ruleId>CONF: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>
  </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:16093</ruleId>
    <ruleId>CONF:16094</ruleId>
    <ruleId>CONF:16870</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-UVZMAXoEeOc4J5a9hlM-Q" base_Constraint="_0EuxoAXoEeOc4J5a9hlM-Q">
    <ruleId>CONF:7525</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="../../org.openhealthtools.mdht.uml.term.models/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</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2JKvhhSVEeGGzu7fmW9pXw" base_Class="_2JKvgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.17">
    <ruleId>CONF:7936</ruleId>
    <ruleId>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</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BbV5sBttEeGT89b80j3MTg" severity="WARNING" base_Constraint="_4G8WIBtsEeGT89b80j3MTg">
    <ruleId>CONF:8894</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</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>
  </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:ConstraintValidation xmi:id="_-ke3MOWUEeGKmvzED_He2w" base_Constraint="_5lXR0OWUEeGKmvzED_He2w">
    <ruleId>CONF:14818</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2KC5QBSVEeGGzu7fmW9pXw" base_Class="_2JxzgBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.1">
    <ruleId>CONF:7126</ruleId>
    <ruleId>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="../../org.openhealthtools.mdht.uml.term.models/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</ruleId>
    <ruleId>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="_u5G5QBnaEeGs5a462vYX5Q" base_Class="_2KlEwBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.48">
    <ruleId>CONF:8655</ruleId>
    <ruleId>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</ruleId>
    <ruleId>CONF:8658</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KovIBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2KovIRSVEeGGzu7fmW9pXw" base_Constraint="_2KlEyhSVEeGGzu7fmW9pXw">
    <ruleId>CONF:8659</ruleId>
    <ruleId>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</ruleId>
    <ruleId>CONF:10376</ruleId>
  </CDA:CDATemplate>
  <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="../../org.openhealthtools.mdht.uml.term.models/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</ruleId>
    <ruleId>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" base_Constraint="_EywuoCwaEeGKLc4ckmfDag">
    <ruleId>CONF:8740</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_d7Xx0CwaEeGKLc4ckmfDag" severity="WARNING" base_Constraint="_a_2b4CwaEeGKLc4ckmfDag">
    <ruleId>CONF:8719</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iPTFICwaEeGKLc4ckmfDag" severity="WARNING" base_Constraint="_fTZ7wCwaEeGKLc4ckmfDag">
    <ruleId>CONF:15970</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nZocACwaEeGKLc4ckmfDag" base_Constraint="_ktatYCwaEeGKLc4ckmfDag">
    <ruleId>CONF:15972</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="__KO_4OM0EeGfv4R-kzpM0g" severity="WARNING" base_Constraint="_7xneQOM0EeGfv4R-kzpM0g">
    <ruleId>CONF: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</ruleId>
    <ruleId>CONF:14896</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</ruleId>
    <ruleId>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</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_h5HCUEX7EeG6e5lG0YsSyQ" base_Constraint="_bnbB0EX7EeG6e5lG0YsSyQ">
    <ruleId>CONF:8851</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5vDjwEX7EeG6e5lG0YsSyQ" base_Constraint="_vjGGEEX7EeG6e5lG0YsSyQ">
    <ruleId>CONF:8870</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="_2MV_VhSVEeGGzu7fmW9pXw" base_Class="_2MV_UBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.18">
    <ruleId>CONF:7924</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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="_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="_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="../../org.openhealthtools.mdht.uml.term.models/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>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_XSCZEBrREeGxIZCGAXKxsQ" severity="WARNING" base_Constraint="_WEQMwBrQEeGxIZCGAXKxsQ">
    <ruleId>CONF:15908</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Xu5UMBrREeGxIZCGAXKxsQ" base_Constraint="_SSUWwBrREeGxIZCGAXKxsQ">
    <ruleId>CONF:15910</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xKCRsBxZEeGXP8PxDYviDg" base_Constraint="_t6LqgBxZEeGXP8PxDYviDg">
    <ruleId>CONF:8009</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_H8YoIBxaEeGXP8PxDYviDg" base_Constraint="_9s2SABxZEeGXP8PxDYviDg">
    <ruleId>CONF: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>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_vD-w4BxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_oGW3cBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15596</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xlcBABxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_rX9yIBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15596</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_1T3akBxpEeGXP8PxDYviDg" base_Constraint="_0i4pkBxpEeGXP8PxDYviDg">
    <ruleId>CONF:15598</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_D6CH0BxsEeGXP8PxDYviDg" base_Constraint="_ATZYUBxsEeGXP8PxDYviDg">
    <ruleId>CONF:8316</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_IVsa0BxsEeGXP8PxDYviDg" base_Constraint="_C9KP4BxsEeGXP8PxDYviDg">
    <ruleId>CONF: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>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_leEX0BxvEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_iKsikBxvEeGXP8PxDYviDg">
    <ruleId>CONF:15901</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mGqB0BxvEeGXP8PxDYviDg" base_Constraint="_jzsgsBxvEeGXP8PxDYviDg">
    <ruleId>CONF:15903</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_s0jAsBxwEeGXP8PxDYviDg" base_Constraint="_oJm7kBxwEeGXP8PxDYviDg">
    <ruleId>CONF:8266</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_tPtSsBxwEeGXP8PxDYviDg" base_Constraint="_p26x8BxwEeGXP8PxDYviDg">
    <ruleId>CONF: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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>CONF:16767</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_wMoyQOVwEeGpoIKFyl7L7w" severity="WARNING" base_Constraint="_oeKDoOVwEeGpoIKFyl7L7w">
    <ruleId>CONF:15909</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YTHewOV4EeGpoIKFyl7L7w" severity="WARNING" base_Constraint="_Q_qfQOV4EeGpoIKFyl7L7w">
    <ruleId>CONF:15902</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_kDiKEOV-EeGpoIKFyl7L7w" severity="INFO" base_Constraint="_XONdcOV-EeGpoIKFyl7L7w">
    <ruleId>CONF:15597</ruleId>
  </CDA:ConstraintValidation>
  <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</ruleId>
    <ruleId>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</ruleId>
    <ruleId>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="_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</ruleId>
    <ruleId>CONF:14708</ruleId>
  </CDA:CDATemplate>
  <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</ruleId>
    <ruleId>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</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: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="_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="_SABeQOZjEeGINOJ_SD9_dA" base_Class="_jfoCUOZbEeGINOJ_SD9_dA" templateId="2.16.840.1.113883.10.20.22.4.75">
    <ruleId>CONF:14375</ruleId>
    <ruleId>CONF:14376</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_hRKtEOZjEeGINOJ_SD9_dA" severity="WARNING" base_Constraint="_ckydgOZjEeGINOJ_SD9_dA">
    <ruleId>CONF:14697</ruleId>
    <ruleId>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>
  <Ecore:EPackage xmi:id="_-XsToD_aEeOMf4ibmUJukw" 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.openhealthtools.org/mdht/uml initializers='org.openhealthtools.mdht.uml.cda.consol'</annotation>
  </Ecore:EPackage>
  <Ecore:EClass xmi:id="_-XzBUD_aEeOMf4ibmUJukw" 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 GeneralHeaderConstraintsAuthor GeneralHeaderConstraintsCustodian GeneralHeaderConstraintsRecordTarget GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName GeneralHeaderConstraintsAuthorAssignedAuthorPersonName GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsDataEntererAssignedEntityPersonName GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsDataEntererAssignedEntity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization GeneralHeaderConstraintsCustodianAssignedCustodian GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName GeneralHeaderConstraintsInformationRecipientIntendedRecipient GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP GeneralHeaderConstraintsLegalAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantAssignedEntityPersonName GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsInformantAssignedEntityPersonName 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 GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthorAssignedAuthorTELUse GeneralHeaderConstraintsAuthorAssignedAuthorIfHasAssignedPersonEnforceId GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityTELUse GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP 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 GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization GeneralHeaderConstraintsDataEntererAssignedEntityCodeP GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntity GeneralHeaderConstraintsInformantRelatedEntity GeneralHeaderConstraintsParticipantSupportTime GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP GeneralHeaderConstraintsAuthorizationConsentCode GeneralHeaderConstraintsAuthorizationConsentId' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianPersonName GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization GeneralHeaderConstraintsRecordTargetPatientRole GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthorAssignedAuthorTELUse GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName GeneralHeaderConstraintsAuthorAssignedAuthorPersonName GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorIfHasAssignedPersonEnforceId GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsDataEntererAssignedEntityTELUse GeneralHeaderConstraintsDataEntererAssignedEntityPersonName GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityCodeP GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsDataEntererAssignedEntity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization GeneralHeaderConstraintsCustodianAssignedCustodian GeneralHeaderConstraintsInformationRecipientIntendedRecipientPersonName GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization GeneralHeaderConstraintsInformationRecipientIntendedRecipient GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP GeneralHeaderConstraintsLegalAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse GeneralHeaderConstraintsAuthenticatorAssignedEntityPersonName GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantAssignedEntityPersonName GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantAssignedEntityCodeP GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsInformantAssignedEntityPersonName GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity GeneralHeaderConstraintsInformantAssignedEntity GeneralHeaderConstraintsInformantRelatedEntity GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsParticipantSupportTime GeneralHeaderConstraintsInFulfillmentOfOrderId GeneralHeaderConstraintsInFulfillmentOfOrder GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCodeP GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1FunctionCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTimeLow GeneralHeaderConstraintsDocumentationOfServiceEventEffectiveTime GeneralHeaderConstraintsDocumentationOfServiceEventPerformer GeneralHeaderConstraintsDocumentationOfServiceEvent GeneralHeaderConstraintsAuthorizationConsentCode GeneralHeaderConstraintsAuthorizationConsentId GeneralHeaderConstraintsAuthorizationConsentStatusCodeP GeneralHeaderConstraintsAuthorizationConsentStatusCode GeneralHeaderConstraintsAuthorizationConsent' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse='GeneralHeaderConstraintsUSRealmPatientNameUseP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorCode='GeneralHeaderConstraintsAuthorAssignedAuthorCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityCode='GeneralHeaderConstraintsDataEntererAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorSignatureCode='GeneralHeaderConstraintsLegalAuthenticatorSignatureCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsAuthenticatorAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityCode='GeneralHeaderConstraintsInformantAssignedEntityCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' 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='GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganization' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleTELUse' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatient constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientIfSdtcEnforceRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientAdministrativeGenderCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse' administrativeGenderCode.codeSystem='2.16.840.1.113883.5.1' administrativeGenderCode.codeSystemName='AdministrativeGenderCode' ethnicGroupCode.codeSystem='2.16.840.1.113883.6.238' ethnicGroupCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCodeP' maritalStatusCode.codeSystem='2.16.840.1.113883.5.2' maritalStatusCode.codeSystemName='MaritalStatus' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCodeP' raceCode.codeSystem='2.16.840.1.113883.6.238' raceCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCodeP' religiousAffiliationCode.codeSystem='2.16.840.1.113883.5.1076' religiousAffiliationCode.codeSystemName='ReligiousAffiliation' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCodeP' sDTCRaceCode.codeSystem='2.16.840.1.113883.6.238' sDTCRaceCode.codeSystemName='Race and Ethnicity - CDC' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientSDTCRaceCodeP' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientTSBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientTSValue GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGeneralHeaderConstraintsUSRealmPatientNameUse='GeneralHeaderConstraintsUSRealmPatientNameUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCodeFromPersonalRelationshipOrResponsibleParty GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse' constraints.validation.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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.info='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP' proficiencyLevelCode.codeSystem='2.16.840.1.113883.5.61' proficiencyLevelCode.codeSystemName='LanguageAbilityProficiency' constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCodeP' constraints.validation.warning='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCodeP' modeCode.codeSystem='2.16.840.1.113883.5.60' modeCode.codeSystemName='LanguageAbilityMode' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode='GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCodeP'</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='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 GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse' constraints.validation.error='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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='GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounterId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthor constraints.validation.error='GeneralHeaderConstraintsAuthorTime GeneralHeaderConstraintsAuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthorAssignedAuthor constraints.validation.error='GeneralHeaderConstraintsAuthorAssignedAuthorHasOneAssignedPersonOrOneAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.warning='GeneralHeaderConstraintsAuthorAssignedAuthorIfHasAssignedPersonEnforceId GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorCodeP GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP 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='GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthorAssignedAuthorTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityTELUse' constraints.validation.error='GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' 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='GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsDataEntererAssignedEntityTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsDataEntererAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse' constraints.validation.error='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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' 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='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.warning='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCodeP' constraints.validation.query='GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 GeneralHeaderConstraintsAuthenticatorAssignedEntity' signatureCode.code='S'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsAuthenticatorAssignedEntity constraints.validation.warning='GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse' constraints.validation.error='GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' 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='GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse GeneralHeaderConstraintsAuthenticatorAssignedEntityTELUse' constraints.validation.dependOn.GeneralHeaderConstraintsAuthenticatorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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' constraints.validation.info='GeneralHeaderConstraintsInformantAssignedEntity GeneralHeaderConstraintsInformantRelatedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsInformantAssignedEntity constraints.validation.warning='GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP' 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.error='GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityAssignedPerson GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.dependOn.GeneralHeaderConstraintsInformantAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.error='GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUseP GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.dependOn.GeneralHeaderConstraintsInformantRelatedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 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='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1TypeCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntity constraints.validation.warning='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' code.codeSystem='2.16.840.1.113883.6.101' code.codeSystemName='NUCC Health Care Provider Taxonomy' constraints.validation.dependOn.GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCode='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityCodeP' constraints.validation.error='GeneralHeaderConstraintsDocumentationOfServiceEventPerformer1AssignedEntityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmAddress constraints.validation.error='GeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet GeneralHeaderConstraintsUSRealmAddressCity GeneralHeaderConstraintsUSRealmAddressStreetAddressLine GeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.warning='GeneralHeaderConstraintsUSRealmAddressCountry GeneralHeaderConstraintsUSRealmAddressPostalCode GeneralHeaderConstraintsUSRealmAddressState GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.GeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolGeneralHeaderConstraintsUSRealmPatientName constraints.validation.query='GeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent' constraints.validation.error='GeneralHeaderConstraintsUSRealmPatientNameUSRealmPatientNameMixedContent GeneralHeaderConstraintsUSRealmPatientNameFamily GeneralHeaderConstraintsUSRealmPatientNameGiven GeneralHeaderConstraintsUSRealmPatientNameUse' constraints.validation.info='GeneralHeaderConstraintsUSRealmPatientNamePrefix GeneralHeaderConstraintsUSRealmPatientNameSuffix GeneralHeaderConstraintsUSRealmPatientNameUseP' constraints.validation.dependOn.GeneralHeaderConstraintsUSRealmPatientNameUse='GeneralHeaderConstraintsUSRealmPatientNameUseP'</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='GeneralHeaderConstraintsAuthorizationConsentCode GeneralHeaderConstraintsAuthorizationConsentId' statusCode.code='completed' constraints.validation.error='GeneralHeaderConstraintsAuthorizationConsentStatusCode GeneralHeaderConstraintsAuthorizationConsentStatusCodeP' constraints.validation.dependOn.GeneralHeaderConstraintsAuthorizationConsentStatusCode='GeneralHeaderConstraintsAuthorizationConsentStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-anEwj_aEeOMf4ibmUJukw" 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' templateId.root='2.16.840.1.113883.10.20.22.4.30' classCode='ACT' moodCode='EVN' code.code='48765-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Allergies, adverse reactions, alerts'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-awOsD_aEeOMf4ibmUJukw" base_Class="_2EaLUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergyObservationTemplateId AllergyObservationReferenceValue AllergyObservationAllergyStatusInversionIndicator AllergyObservationReactionInversionIndicator AllergyObservationSeverityInversionIndicator AllergyObservationAllergyPlayingEntityCodeSystems AllergyObservationClassCode AllergyObservationMoodCode AllergyObservationId AllergyObservationCode AllergyObservationCodeP AllergyObservationStatusCode AllergyObservationEffectiveTime AllergyObservationValue AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReferenceValue AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRolePlayingEntity AllergyObservationAllergyObservationParticipantTypeCode AllergyObservationAllergyObservationParticipantParticipantRole' templateId.root='2.16.840.1.113883.10.20.22.4.7' constraints.validation.warning='AllergyObservationValueOriginalText AllergyObservationOriginalTextReference AllergyObservationOriginalTextReferenceValue AllergyObservationProblemEntryReactionObservationContainer AllergyObservationSeverity AllergyObservationParticipant AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeOriginalText AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReference AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityReferenceValue' 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='AllergyObservationAllergyStatusObservation AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeTranslation' constraints.validation.query='AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeOriginalText AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReference AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityReferenceValue AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReferenceValue AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeTranslation AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRolePlayingEntity AllergyObservationAllergyObservationParticipantTypeCode AllergyObservationAllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationAllergyObservationParticipant typeCode='CSM' constraints.validation.error='AllergyObservationAllergyObservationParticipantTypeCode AllergyObservationAllergyObservationParticipantParticipantRole'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationAllergyObservationParticipantAllergyObservationParticipantRole classCode='MANU' constraints.validation.error='AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRolePlayingEntity'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolAllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntity constraints.validation.warning='AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeOriginalText AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReference AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityReferenceValue' constraints.validation.error='AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityOriginalTextReferenceValue AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityClassCode AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCode' constraints.validation.info='AllergyObservationAllergyObservationParticipantAllergyObservationParticipantRoleAllergyObservationPlayingEntityCodeTranslation' classCode='MMAT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-bICIT_aEeOMf4ibmUJukw" 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="_-bRMED_aEeOMf4ibmUJukw" 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="_-ba9Ej_aEeOMf4ibmUJukw" 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' 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="_-bnKUj_aEeOMf4ibmUJukw" base_Class="_2FGu4hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='SeverityObservationTemplateId SeverityObservationReferenceValue SeverityObservationClassCode SeverityObservationMoodCode SeverityObservationCode SeverityObservationStatusCode SeverityObservationValue' templateId.root='2.16.840.1.113883.10.20.22.4.8' constraints.validation.warning='SeverityObservationTextReference SeverityObservationTextReferenceValue SeverityObservationText SeverityObservationInterpretationCode' 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' interpretationCode.codeSystem='2.16.840.1.113883.5.83' interpretationCode.codeSystemName='ObservationInterpretation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-bywgD_aEeOMf4ibmUJukw" 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="_-b6FQD_aEeOMf4ibmUJukw" base_Class="_2FhloBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CommentActivityTemplateId CommentActivityTextReference CommentActivityTextReferenceValue CommentActivityReferenceValue CommentActivityClassCode CommentActivityMoodCode CommentActivityCode CommentActivityText CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse CommentActivityAuthorAssignedAuthorHasPersonOrOrganization CommentActivityAuthorAssignedAuthorAssignPersonName CommentActivityAuthorAssignedAuthorAddr CommentActivityAuthorAssignedAuthorId CommentActivityAuthorTime CommentActivityAuthorAssignedAuthor' 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.info='CommentActivityAuthor' constraints.validation.query='CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse CommentActivityAuthorAssignedAuthorHasPersonOrOrganization CommentActivityAuthorAssignedAuthorAssignPersonName CommentActivityAuthorAssignedAuthorAddr CommentActivityAuthorAssignedAuthorId CommentActivityAuthorTime CommentActivityAuthorAssignedAuthor' constraints.validation.warning='CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCommentActivityAuthor constraints.validation.error='CommentActivityAuthorTime CommentActivityAuthorAssignedAuthor'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCommentActivityAuthorAssignedAuthor constraints.validation.error='CommentActivityAuthorAssignedAuthorHasPersonOrOrganization CommentActivityAuthorAssignedAuthorAssignPersonName CommentActivityAuthorAssignedAuthorAddr CommentActivityAuthorAssignedAuthorId CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCity CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressStreetAddressLine CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.warning='CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressCountry CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressPostalCode CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressState CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.CommentActivityAuthorAssignedAuthorGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-cFEYD_aEeOMf4ibmUJukw" base_Class="_2GHbgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationActivityTemplateId MedicationActivityTextReferenceValue MedicationActivityEffectiveTimeIVLTS MedicationActivityEffectiveTimeLow MedicationActivityEffectiveTimeHigh MedicationActivityEffectiveTimeOperator MedicationActivityDrugVehicleTypeCode MedicationActivityInstructionsInversionInd MedicationActivityPreconditionSubstanceAdmTypeCode MedicationActivityRateQuantityUnit MedicationActivityClassCode MedicationActivityMoodCode MedicationActivityId MedicationActivityStatusCode MedicationActivityRouteCode MedicationActivityApproachSiteCode MedicationActivityConsumable MedicationActivityConsumableMedicationInformation' 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 MedicationActivityAdministrationUnitCode MedicationActivityRepeatNumber MedicationActivityMedicationSupplyOrder MedicationActivityReactionObservation MedicationActivityPerformer MedicationActivityInstructions MedicationActivityIndication MedicationActivityMedicationDispense MedicationActivityPrecondition MedicationActivityDrugVehicle' 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' constraints.validation.dependOn.MedicationActivityApproachSiteCode='MedicationActivityApproachSiteCodeP' constraints.validation.query='MedicationActivityConsumableMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolMedicationActivityConsumable constraints.validation.error='MedicationActivityConsumableMedicationInformation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-cde4T_aEeOMf4ibmUJukw" 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="_-chwUj_aEeOMf4ibmUJukw" 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="_-crhUj_aEeOMf4ibmUJukw" 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="_-c0EMD_aEeOMf4ibmUJukw" 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>
  <CDA:ConformsTo xmi:id="_-c8nED_aEeOMf4ibmUJukw" base_Generalization="_2PQJchSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_-c8nEz_aEeOMf4ibmUJukw" 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' constraints.validation.warning='ContinuityOfCareDocumentDocumentationOfServiceEventPerformer' constraints.validation.query='ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEventEffectiveTimeLow'</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="_-dLQkD_aEeOMf4ibmUJukw" 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="_-dQwIj_aEeOMf4ibmUJukw" base_Class="_2IbIoBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryOrganizerTemplateId FamilyHistoryOrganizerClassCode FamilyHistoryOrganizerMoodCode FamilyHistoryOrganizerFamilyHistoryObservation FamilyHistoryOrganizerSubject FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCode FamilyHistoryOrganizerSubjectRelatedSubjectSubjectPersonAdministrativeGenderCodeP FamilyHistoryOrganizerSubjectRelatedSubjectClassCode FamilyHistoryOrganizerSubjectRelatedSubjectCodeP FamilyHistoryOrganizerSubjectRelatedSubject' templateId.root='2.16.840.1.113883.10.20.22.4.45' classCode='CLUSTER' moodCode='EVN' 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="_-dc9YT_aEeOMf4ibmUJukw" base_Class="_2IpyIxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryObservationTemplateId FamilyHistoryObservationAgeObservationInversion FamilyHistoryObservationClassCode FamilyHistoryObservationMoodCode FamilyHistoryObservationId FamilyHistoryObservationCodeP FamilyHistoryObservationStatusCode 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="_-dojlD_aEeOMf4ibmUJukw" 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="_-dvRQD_aEeOMf4ibmUJukw" 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="_-d30ID_aEeOMf4ibmUJukw" base_Generalization="_ksO6UBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-d4bMT_aEeOMf4ibmUJukw" 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' 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.dependOn.ResultsSectionEntriesOptionalCode='ResultsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-d96wj_aEeOMf4ibmUJukw" 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="_-eGdoj_aEeOMf4ibmUJukw" 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="_-eVHID_aEeOMf4ibmUJukw" 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="_-eamsj_aEeOMf4ibmUJukw" 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="_-ee4ID_aEeOMf4ibmUJukw" base_Generalization="_8UhPsBVfEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-effMD_aEeOMf4ibmUJukw" 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="_-emM4T_aEeOMf4ibmUJukw" base_Class="_2KlEwBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdvanceDirectiveObservationTemplateId AdvanceDirectiveObservationHasStartingTime AdvanceDirectiveObservationHasEndingTime AdvanceDirectiveObservationClassCode AdvanceDirectiveObservationMoodCode AdvanceDirectiveObservationId AdvanceDirectiveObservationCodeP AdvanceDirectiveObservationStatusCode AdvanceDirectiveObservationEffectiveTime AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianRole 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 AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleTelecom' constraints.validation.dependOn.AdvanceDirectiveObservationCode='AdvanceDirectiveObservationCodeP' statusCode.code='completed' constraints.validation.query='AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRoleTelecom AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianRole 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 AdvanceDirectiveObservationCustodianRole'</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.error='AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole' typeCode='VRF'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_-e5u4D_aEeOMf4ibmUJukw" base_Generalization="_EEbhsBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-e6V8D_aEeOMf4ibmUJukw" 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="_-e_1gz_aEeOMf4ibmUJukw" base_Generalization="_blmF8BVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-fAckD_aEeOMf4ibmUJukw" 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' code.code='11450-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Problem List' constraints.validation.dependOn.ProblemSectionEntriesOptionalCode='ProblemSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_-fFVED_aEeOMf4ibmUJukw" base_Generalization="_KVkvoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-fF8Ij_aEeOMf4ibmUJukw" 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' code.code='46240-8' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Encounters' constraints.validation.dependOn.EncountersSectionEntriesOptionalCode='EncountersSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-fMCwD_aEeOMf4ibmUJukw" base_Class="_2LayQBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterActivitiesTemplateId EncounterActivitiesCodeOriginalTextReferenceValue EncounterActivitiesServiceDeliveryTypeCode EncounterActivitiesClassCode EncounterActivitiesMoodCode EncounterActivitiesId EncounterActivitiesEffectiveTime EncounterActivitiesSDTCDischargeDispositionCode EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.49' constraints.validation.warning='EncounterActivitiesCodeOriginalText EncounterActivitiesCodeOriginalTextReference EncounterActivitiesReferenceValue EncounterActivitiesCode' classCode='ENC' moodCode='EVN' code.codeSystem='2.16.840.1.113883.6.12' code.codeSystemName='CPT-4' sDTCDischargeDispositionCode.codeSystem='2.16.840.1.113883.12.112' sDTCDischargeDispositionCode.codeSystemName='HL7DischargeDisposition' constraints.validation.info='EncounterActivitiesSDTCDischargeDispositionCodeP EncounterActivitiesServiceDeliveryLocation EncounterActivitiesIndication EncounterActivitiesEncounterPerformer EncounterActivitiesEncounterDiagnosis EncounterActivitiesEncounterPerformerEncounterPerformerAssignedEntityCode' constraints.validation.dependOn.EncounterActivitiesSDTCDischargeDispositionCode='EncounterActivitiesSDTCDischargeDispositionCodeP' 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="_-fYQAj_aEeOMf4ibmUJukw" 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="_-feWoD_aEeOMf4ibmUJukw" 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="_-fj2Mj_aEeOMf4ibmUJukw" base_Class="_2MAoIBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ImmunizationActivityTemplateId ImmunizationActivityTextReferenceValue ImmunizationActivityInstructionInversion ImmunizationActivityDrugVehicleTypeCode ImmunizationActivityPreconditionTypeCode ImmunizationActivityClassCode ImmunizationActivityMoodCode ImmunizationActivityId ImmunizationActivityStatusCode ImmunizationActivityEffectiveTime ImmunizationActivityRouteCode ImmunizationActivityApproachSiteCode ImmunizationActivityNegationInd ImmunizationActivityAdministrationUnitCode ImmunizationActivityConsumable ImmunizationActivityConsumableImmunizationMedicationInformation' templateId.root='2.16.840.1.113883.10.20.22.4.52' constraints.validation.warning='ImmunizationActivityTextReference ImmunizationActivityReferenceValue ImmunizationActivityDoseQuantityUnit ImmunizationActivityDoseQuantity ImmunizationActivityText ImmunizationActivityPerformer' classCode='SBADM' constraints.validation.info='ImmunizationActivityCode ImmunizationActivityRouteCodeP ImmunizationActivityApproachSiteCodeP ImmunizationActivityRepeatNumber ImmunizationActivityAdministrationUnitCodeP ImmunizationActivityDrugVehicle ImmunizationActivityIndication ImmunizationActivityInstructions ImmunizationActivityMedicationDispense ImmunizationActivityReactionObservation ImmunizationActivityPrecondition ImmunizationActivityImmunizationRefusalReason ImmunizationActivityMedicationSupplyOrder' 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' constraints.validation.dependOn.ImmunizationActivityApproachSiteCode='ImmunizationActivityApproachSiteCodeP' administrationUnitCode.codeSystem='2.16.840.1.113883.3.26.1.1' administrationUnitCode.codeSystemName='NCI Thesaurus' constraints.validation.dependOn.ImmunizationActivityAdministrationUnitCode='ImmunizationActivityAdministrationUnitCodeP' constraints.validation.query='ImmunizationActivityConsumableImmunizationMedicationInformation'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolImmunizationActivityConsumable constraints.validation.error='ImmunizationActivityConsumableImmunizationMedicationInformation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-gGowD_aEeOMf4ibmUJukw" 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="_-gK6MD_aEeOMf4ibmUJukw" base_Generalization="_UeEpoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-gLhQD_aEeOMf4ibmUJukw" base_Class="_2NIpgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionCode 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'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-gRA0D_aEeOMf4ibmUJukw" 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="_-gV5UD_aEeOMf4ibmUJukw" 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="_-gax0D_aEeOMf4ibmUJukw" 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="_-gfDQj_aEeOMf4ibmUJukw" 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="_-gj7wT_aEeOMf4ibmUJukw" 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="_-go0QD_aEeOMf4ibmUJukw" 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="_-gtswD_aEeOMf4ibmUJukw" 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="_-gylQD_aEeOMf4ibmUJukw" base_Class="_2N6soBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PregnancyObservationTemplateId PregnancyObservationClassCode PregnancyObservationMoodCode PregnancyObservationCode PregnancyObservationCodeP PregnancyObservationStatusCode PregnancyObservationValue' 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="_-g6hED_aEeOMf4ibmUJukw" base_Generalization="_gNO_cBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-g7IID_aEeOMf4ibmUJukw" 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' code.code='47519-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='History of procedures' constraints.validation.dependOn.ProceduresSectionEntriesOptionalCode='ProceduresSectionEntriesOptionalCodeP' constraints.validation.info='ProceduresSectionProcedureActivityProcedure ProceduresSectionProcedureActivityObservation ProceduresSectionProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-hAnsj_aEeOMf4ibmUJukw" 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="_-hgW9T_aEeOMf4ibmUJukw" base_Generalization="_px07IBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_-hg-Aj_aEeOMf4ibmUJukw" 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="_-hl2gj_aEeOMf4ibmUJukw" base_Class="_2OlbCRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsOrganizerTemplateId VitalSignsOrganizerClassCode VitalSignsOrganizerMoodCode VitalSignsOrganizerId VitalSignsOrganizerCode VitalSignsOrganizerStatusCode 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'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-hw1oD_aEeOMf4ibmUJukw" base_Class="_2OrhsRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignObservationTemplateId VitalSignObservationTextReferenceValue VitalSignObservationClassCode VitalSignObservationMoodCode VitalSignObservationId VitalSignObservationCodeP VitalSignObservationStatusCode 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="_-h9p8j_aEeOMf4ibmUJukw" 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="_-iDJgD_aEeOMf4ibmUJukw" 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="_-iICAD_aEeOMf4ibmUJukw" 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="_-iM6gD_aEeOMf4ibmUJukw" 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="_-iRL8j_aEeOMf4ibmUJukw" 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="_-iWEcj_aEeOMf4ibmUJukw" base_Class="_2Poj5BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId HospitalAdmissionMedicationsSectionEntriesOptionalCode HospitalAdmissionMedicationsSectionEntriesOptionalCodeP HospitalAdmissionMedicationsSectionEntriesOptionalText HospitalAdmissionMedicationsSectionEntriesOptionalTitle' 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="_-ia88j_aEeOMf4ibmUJukw" base_Class="_2Poj_BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsAdministeredSectionTemplateId MedicationsAdministeredSectionCode MedicationsAdministeredSectionCodeP MedicationsAdministeredSectionText MedicationsAdministeredSectionTitle' 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="_-igcgD_aEeOMf4ibmUJukw" 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="_-ilVAD_aEeOMf4ibmUJukw" 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="_-ipmcj_aEeOMf4ibmUJukw" 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="_-it34j_aEeOMf4ibmUJukw" 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="_-ixiQj_aEeOMf4ibmUJukw" base_Class="_2SC-sBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistoryDeathObservationTemplateId FamilyHistoryDeathObservationClassCode FamilyHistoryDeathObservationMoodCode FamilyHistoryDeathObservationCode FamilyHistoryDeathObservationStatusCode FamilyHistoryDeathObservationValue' 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="_-i3o4j_aEeOMf4ibmUJukw" 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="_-i8hYD_aEeOMf4ibmUJukw" base_Class="_2TeiIRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='UnstructuredDocumentTemplateId UnstructuredDocumentRecordTarget UnstructuredDocumentAuthor UnstructuredDocumentComponent UnstructuredDocumentCustodian UnstructuredDocumentRecordTargetPatientRole2Id UnstructuredDocumentRecordTargetPatientRole2 UnstructuredDocumentAuthorAssignedAuthor2Addr UnstructuredDocumentAuthorAssignedAuthor2Telecom UnstructuredDocumentAuthorAssignedAuthor2 UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganization UnstructuredDocumentCustodianAssignedCustodian2' templateId.root='2.16.840.1.113883.10.20.21.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="_-jDPEj_aEeOMf4ibmUJukw" 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>
  <CDA:ConformsTo xmi:id="_-jIHkD_aEeOMf4ibmUJukw" base_Generalization="_2U6FfBSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_-jIHkz_aEeOMf4ibmUJukw" base_Class="_2UnxkRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='GeneralHeaderConstraintsTemplateId DischargeSummaryDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection DischargeSummaryCode DischargeSummaryCodeP DischargeSummaryHospitalAdmissionDiagnosisSection DischargeSummaryHospitalDischargeDiagnosisSection DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional DischargeSummaryHospitalCourseSection DischargeSummaryPlanOfCareSection DischargeSummaryComponentOf DischargeSummaryAllergiesSectionEntriesOptional DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeP 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 DischargeSummaryDischargeDietSection DischargeSummaryFunctionalStatusSection DischargeSummaryHistoryOfPresentIllnessSection DischargeSummaryHistoryOfPastIllnessSection DischargeSummaryChiefComplaintAndReasonForVisitSection DischargeSummaryChiefComplaintSection DischargeSummaryFamilyHistorySection DischargeSummaryHospitalConsultationsSection DischargeSummaryHospitalDischargeInstructionsSection DischargeSummaryHospitalDischargePhysicalSection DischargeSummaryHospitalDischargeStudiesSummarySection DischargeSummaryImmunizationsSectionEntriesOptional DischargeSummaryProblemSectionEntriesOptional DischargeSummaryProceduresSectionEntriesOptional DischargeSummaryReasonForVisitSection DischargeSummaryReviewOfSystemsSection DischargeSummarySocialHistorySection DischargeSummaryVitalSignsSectionEntriesOptional DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant' constraints.validation.query='DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeP DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant DischargeSummaryComponentOfEncompassingEncounter' constraints.validation.warning='DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode'</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 DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCodeP DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime' dischargeDispositionCode.codeSystem='2.16.840.1.113883.12.112' dischargeDispositionCode.codeSystemName='HL7DischargeDisposition' constraints.validation.warning='DischargeSummaryComponentOfEncompassingEncounter3DischargeDispositionCode' constraints.validation.info='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="_-jYmQD_aEeOMf4ibmUJukw" 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="_-jkMdz_aEeOMf4ibmUJukw" 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="_-jn20T_aEeOMf4ibmUJukw" base_Class="_DpoGkBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationDispenseTemplateId MedicationDispenseContainsMedicationOrImmunization MedicationDispenseClassCode MedicationDispenseId MedicationDispenseMoodCode MedicationDispenseStatusCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispensePerformerMedicationDispenseAssignedEntity' templateId.root='2.16.840.1.113883.10.20.22.4.18' classCode='SPLY' constraints.validation.warning='MedicationDispenseEffectiveTime MedicationDispenseRepeatNumber MedicationDispenseQuantity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispensePerformerMedicationDispenseAssignedEntityAddr' moodCode='EVN' constraints.validation.info='MedicationDispenseMedicationSupplyOrder MedicationDispensePerformer' constraints.validation.query='MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse MedicationDispensePerformerMedicationDispenseAssignedEntityAddr MedicationDispensePerformerMedicationDispenseAssignedEntity' constraints.validation.dependOn.MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.error='MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressState MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.dependOn.MedicationDispensePerformerMedicationDispenseAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-jvypT_aEeOMf4ibmUJukw" base_Class="_chEhQBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreconditionForSubstanceAdministrationTemplateId PreconditionForSubstanceAdministrationCriterion' templateId.root='2.16.840.1.113883.10.20.22.4.25' constraints.validation.warning='PreconditionForSubstanceAdministrationCriterionCode PreconditionForSubstanceAdministrationCriterionValue' constraints.validation.info='PreconditionForSubstanceAdministrationCriterionText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-jzdAT_aEeOMf4ibmUJukw" base_Class="_PZBdMBUlEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PolicyActivityTemplateId PolicyActivityClassCode PolicyActivityCodeP PolicyActivityId PolicyActivityMoodCode PolicyActivityStatusCode PolicyActivityPayer PolicyActivityCoverage PolicyActivityEntryRelationship PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorTemplateId PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageCoverageRole PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleId PolicyActivityHolderTemplateId PolicyActivityHolderTypeCode PolicyActivityHolderHolderRole PolicyActivityEntryRelationshipTargetActActivity PolicyActivityEntryRelationshipDescriptionCoveragePlan PolicyActivityEntryRelationshipTypeCode' templateId.root='2.16.840.1.113883.10.20.22.4.61' classCode='ACT' code.codeSystemName='' constraints.validation.warning='PolicyActivityCode PolicyActivityGuarantor PolicyActivityHolder PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityPayerOrganization PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTime PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleAddr' constraints.validation.dependOn.PolicyActivityCode='PolicyActivityCodeP' moodCode='EVN' statusCode.code='completed' constraints.validation.query='PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityPayerPayerAssignedEntityPayerOrganization PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorTemplateId PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageTime PolicyActivityCoverageCoverageRole PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleId PolicyActivityHolderHolderRoleAddr PolicyActivityHolderTemplateId PolicyActivityHolderTypeCode PolicyActivityHolderTime PolicyActivityHolderHolderRole PolicyActivityEntryRelationshipTargetActActivity PolicyActivityEntryRelationshipDescriptionCoveragePlan PolicyActivityEntryRelationshipTypeCode' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityHolderTime' constraints.validation.dependOn.PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityPayer constraints.validation.error='PolicyActivityPayerTemplateId PolicyActivityPayerTypeCode PolicyActivityPayerPayerAssignedEntity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityId' templateId.root='2.16.840.1.113883.10.20.22.4.87' typeCode='PRF' constraints.validation.query='PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom PolicyActivityPayerPayerAssignedEntityPayerOrganization' constraints.validation.warning='PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityPayerOrganizationName PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityPayerOrganization' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityPayerPayerAssignedEntity constraints.validation.error='PolicyActivityPayerPayerAssignedEntityId PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' code.codeSystem='2.16.840.1.113883.5.110' code.codeSystemName='HL7RoleClass' constraints.validation.warning='PolicyActivityPayerPayerAssignedEntityCode PolicyActivityPayerPayerAssignedEntityCodeP PolicyActivityPayerPayerAssignedEntityPayerOrganization PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityPayerOrganizationName' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityCode='PolicyActivityPayerPayerAssignedEntityCodeP' constraints.validation.info='PolicyActivityPayerPayerAssignedEntityAddr PolicyActivityPayerPayerAssignedEntityTelecom' constraints.validation.query='PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityPayerPayerAssignedEntityPayerOrganizationName' constraints.validation.dependOn.PolicyActivityPayerPayerAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.88' constraints.validation.warning='PolicyActivityGuarantorTime PolicyActivityGuarantorTypeCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom' typeCode='PRF' constraints.validation.query='PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom' constraints.validation.dependOn.PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityGuarantorGuarantorAssignedEntity constraints.validation.warning='PolicyActivityGuarantorGuarantorAssignedEntityPersonNameAndOrOrgName PolicyActivityGuarantorGuarantorAssignedEntityAddr PolicyActivityGuarantorGuarantorAssignedEntityTelecom PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP' code.code='GUAR' code.codeSystem='2.16.840.1.113883.5.110' code.codeSystemName='HL7RoleClass' code.displayName='Guarantor' constraints.validation.error='PolicyActivityGuarantorGuarantorAssignedEntityCode PolicyActivityGuarantorGuarantorAssignedEntityCodeP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.query='PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressState PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.dependOn.PolicyActivityGuarantorGuarantorAssignedEntityGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityCoverage constraints.validation.error='PolicyActivityCoverageTemplateId PolicyActivityCoverageTypeCode PolicyActivityCoverageCoverageRole PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCodeP' templateId.root='2.16.840.1.113883.10.20.22.4.89' constraints.validation.warning='PolicyActivityCoverageLowTime PolicyActivityCoverageHighTime PolicyActivityCoverageTime PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity' typeCode='COV' constraints.validation.query='PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity' constraints.validation.dependOn.PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityCoverageCoverageRole constraints.validation.error='PolicyActivityCoverageCoverageRoleId PolicyActivityCoverageCoverageRoleCodeP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName' code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode' constraints.validation.warning='PolicyActivityCoverageCoverageRoleCode PolicyActivityCoverageCoverageRoleAddr PolicyActivityCoverageCoverageRoleCoveragePlayingEntity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.query='PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityCoverageCoverageRoleCoveragePlayingEntityName' constraints.validation.dependOn.PolicyActivityCoverageCoverageRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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 PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleId' templateId.root='2.16.840.1.113883.10.20.22.4.90' typeCode='HLD' constraints.validation.info='PolicyActivityHolderTime' constraints.validation.query='PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse PolicyActivityHolderHolderRoleId PolicyActivityHolderHolderRoleAddr' constraints.validation.warning='PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleAddr' constraints.validation.dependOn.PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPolicyActivityHolderHolderRole constraints.validation.error='PolicyActivityHolderHolderRoleId PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.warning='PolicyActivityHolderHolderRoleAddr PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP' constraints.validation.query='PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUSRealmAddressStreet PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCity PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressCountry PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressPostalCode PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressState PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressStreetAddressLine PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUseP PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse' constraints.validation.dependOn.PolicyActivityHolderHolderRoleGeneralHeaderConstraintsUSRealmAddressUse='GeneralHeaderConstraintsUSRealmAddressUseP'</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="_-kSlMj_aEeOMf4ibmUJukw" base_Class="_Cg3pkBUmEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CoverageActivityTemplateId CoverageActivityClassCode CoverageActivityCode CoverageActivityId CoverageActivityMoodCode CoverageActivityStatusCode CoverageActivityPolicyActivity' templateId.root='2.16.840.1.113883.10.20.22.4.60' constraints.validation.info='CoverageActivityRelationshipSequenceNumber' classCode='ACT' code.code='48768-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Payment Sources' moodCode='EVN' statusCode.code='completed'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-kbIEj_aEeOMf4ibmUJukw" 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 ProblemObservationHasResolutionDate ProblemObservationCode ProblemObservationText ProblemObservationEffectiveTime ProblemObservationValue' constraints.validation.info='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="_-krmxz_aEeOMf4ibmUJukw" 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="_-k6QQj_aEeOMf4ibmUJukw" 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="_-lA98D_aEeOMf4ibmUJukw" 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="_-lHroD_aEeOMf4ibmUJukw" 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="_-lL9Ej_aEeOMf4ibmUJukw" base_Class="_iAoXEBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionEntriesOptionalCode 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="_-lPncT_aEeOMf4ibmUJukw" 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="_-lT44D_aEeOMf4ibmUJukw" 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 ProceduresSectionEntriesOptionalProcedureAcivityObservation ProceduresSectionEntriesOptionalProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-lYKUD_aEeOMf4ibmUJukw" 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="_-lcbwD_aEeOMf4ibmUJukw" 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="_-lgtMD_aEeOMf4ibmUJukw" 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="_-lk-oj_aEeOMf4ibmUJukw" 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="_-lpQEj_aEeOMf4ibmUJukw" base_Class="_bRH8sBVeEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionEntriesOptionalCodeP VitalSignsSectionEntriesOptionalText VitalSignsSectionEntriesOptionalTitle' 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="_-luIkD_aEeOMf4ibmUJukw" 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 ProcedureActivityObservationValue ProcedureActivityObservationPriorityCode 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="_-mF8AD_aEeOMf4ibmUJukw" base_Class="_awdH4Bg4EeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureActivityActTemplateId ProcedureActivityActReferenceValue ProcedureActivityActEncounterInversion ProcedureActivityActServiceDeliveryLocationTypeCode ProcedureActivityActInstructionsInversion ProcedureActivityActClassCode ProcedureActivityActMoodCode ProcedureActivityActId ProcedureActivityActCode ProcedureActivityActStatusCode ProcedureActivityActPriorityCode ProcedureActivityActProcedureActPerformerAssignedEntity ProcedureActivityActProcedureActPerformerAssignedEntityId ProcedureActivityActProcedureActPerformerAssignedEntityAddr ProcedureActivityActProcedureActPerformerAssignedEntityTelecom ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgAddr ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgTelecom ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode ProcedureActivityActEntryRelationshipProcedureActEncounterId ProcedureActivityActEntryRelationshipInversionInd ProcedureActivityActEntryRelationshipTypeCode ProcedureActivityActEntryRelationshipProcedureActEncounter' templateId.root='2.16.840.1.113883.10.20.22.4.12' constraints.validation.warning='ProcedureActivityActCodeCodeSystems ProcedureActivityActCodeOriginalText ProcedureActivityActOriginalTextReference ProcedureActivityActEffectiveTime ProcedureActivityActPerformer ProcedureActivityActProcedureActPerformerAssignedEntityRepOrg ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgId' constraints.validation.info='ProcedureActivityActOriginalTextReferenceValue ProcedureActivityActPriorityCodeP ProcedureActivityActServiceDeliveryLocation ProcedureActivityActInstructions ProcedureActivityActIndication ProcedureActivityActMedicationActivity ProcedureActivityActEntryRelationship ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgName' classCode='ACT' priorityCode.codeSystem='2.16.840.1.113883.5.7' priorityCode.codeSystemName='ActPriority' constraints.validation.dependOn.ProcedureActivityActPriorityCode='ProcedureActivityActPriorityCodeP' constraints.validation.query='ProcedureActivityActProcedureActPerformerAssignedEntity ProcedureActivityActProcedureActPerformerAssignedEntityId ProcedureActivityActProcedureActPerformerAssignedEntityAddr ProcedureActivityActProcedureActPerformerAssignedEntityTelecom ProcedureActivityActProcedureActPerformerAssignedEntityRepOrg ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgId ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgName ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgAddr ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgTelecom ProcedureActivityActEntryRelationshipProcedureActEncounterClassCode ProcedureActivityActEntryRelationshipProcedureActEncounterMoodCode ProcedureActivityActEntryRelationshipProcedureActEncounterId ProcedureActivityActEntryRelationshipInversionInd ProcedureActivityActEntryRelationshipTypeCode ProcedureActivityActEntryRelationshipProcedureActEncounter'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolProcedureActivityActProcedureActPerformer constraints.validation.error='ProcedureActivityActProcedureActPerformerAssignedEntity ProcedureActivityActProcedureActPerformerAssignedEntityId ProcedureActivityActProcedureActPerformerAssignedEntityAddr ProcedureActivityActProcedureActPerformerAssignedEntityTelecom ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgAddr ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgTelecom' constraints.validation.warning='ProcedureActivityActProcedureActPerformerAssignedEntityRepOrg ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgId' constraints.validation.info='ProcedureActivityActProcedureActPerformerAssignedEntityRepOrgName'</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="_-mXBwD_aEeOMf4ibmUJukw" 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="_-mchUD_aEeOMf4ibmUJukw" base_Class="_j3aTQBrTEeGo461UQq-B1g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='MedicationSupplyOrderTemplateId MedicationSupplyOrderInstructionInversionInd MedicationSupplyOrderEffectiveTimeHigh MedicationSupplyOrderContainsMedicationOrImmunization MedicationSupplyOrderClassCode MedicationSupplyOrderMoodCode MedicationSupplyOrderStatusCode MedicationSupplyOrderId' templateId.root='2.16.840.1.113883.10.20.22.4.17' classCode='SPLY' constraints.validation.warning='MedicationSupplyOrderEffectiveTime MedicationSupplyOrderQuantity MedicationSupplyOrderRepeatNumber' moodCode='INT' constraints.validation.info='MedicationSupplyOrderAuthor MedicationSupplyOrderInstructions'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-mxRcj_aEeOMf4ibmUJukw" 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="_-m83oD_aEeOMf4ibmUJukw" 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="_-m9esD_aEeOMf4ibmUJukw" 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="_-m-FwD_aEeOMf4ibmUJukw" 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="_-nCXMD_aEeOMf4ibmUJukw" 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="_-nGooD_aEeOMf4ibmUJukw" 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="_-nK6ED_aEeOMf4ibmUJukw" 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="_-nPLgD_aEeOMf4ibmUJukw" 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="_-naKoD_aEeOMf4ibmUJukw" 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="_-nd1AD_aEeOMf4ibmUJukw" base_Generalization="_TytVkSUQEeGiOPpZVnfEJA"/>
  <Ecore:EClass xmi:id="_-necEj_aEeOMf4ibmUJukw" 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' code.code='10183-2' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='HOSPITAL DISCHARGE MEDICATIONS' constraints.validation.dependOn.HospitalDischargeMedicationsSectionEntriesOptionalCode='HospitalDischargeMedicationsSectionEntriesOptionalCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-noNED_aEeOMf4ibmUJukw" 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="_-nuTtz_aEeOMf4ibmUJukw" 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="_-nylIj_aEeOMf4ibmUJukw" 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="_-oGuMj_aEeOMf4ibmUJukw" base_Class="_OA_Q0DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AnesthesiaSectionTemplateId AnesthesiaSectionCode AnesthesiaSectionCodeP AnesthesiaSectionText AnesthesiaSectionTitle' 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="_-oK_oj_aEeOMf4ibmUJukw" 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="_-oP4ID_aEeOMf4ibmUJukw" 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="_-oS7cT_aEeOMf4ibmUJukw" 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="_-oTigj_aEeOMf4ibmUJukw" 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="_-oXz8j_aEeOMf4ibmUJukw" base_Class="_hqzJADVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InterventionsSectionTemplateId InterventionsSectionCode InterventionsSectionCodeP InterventionsSectionText InterventionsSectionTitle' 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="_-ocFYj_aEeOMf4ibmUJukw" 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="_-ogW0j_aEeOMf4ibmUJukw" 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="_-okoQT_aEeOMf4ibmUJukw" 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="_-o4KQj_aEeOMf4ibmUJukw" 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="_-o8bsj_aEeOMf4ibmUJukw" base_Class="_3b6E4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlannedProcedureSectionTemplateId PlannedProcedureSectionCode PlannedProcedureSectionCodeP PlannedProcedureSectionText PlannedProcedureSectionTitle' 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="_-pAtIj_aEeOMf4ibmUJukw" 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="_-pE-kj_aEeOMf4ibmUJukw" base_Class="_-jlSMDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PostprocedureDiagnosisSectionTemplateId PostprocedureDiagnosisSectionCode PostprocedureDiagnosisSectionCodeP PostprocedureDiagnosisSectionText PostprocedureDiagnosisSectionTitle' 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.dependOn.PostprocedureDiagnosisSectionCode='PostprocedureDiagnosisSectionCodeP' constraints.validation.warning='PostprocedureDiagnosisSectionPostprocedureDiagnosis'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-pJQAj_aEeOMf4ibmUJukw" base_Class="_Cu6qMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisSectionTemplateId PreoperativeDiagnosisSectionCode PreoperativeDiagnosisSectionCodeP PreoperativeDiagnosisSectionText PreoperativeDiagnosisSectionTitle' 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="_-pNhcj_aEeOMf4ibmUJukw" 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="_-pRy4j_aEeOMf4ibmUJukw" 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="_-pWEUj_aEeOMf4ibmUJukw" 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="_-paVwj_aEeOMf4ibmUJukw" base_Class="_W4UBYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureFindingsSectionTemplateId ProcedureFindingsSectionCode ProcedureFindingsSectionCodeP ProcedureFindingsSectionText ProcedureFindingsSectionTitle' 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="_-pfOQD_aEeOMf4ibmUJukw" 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="_-pjfsD_aEeOMf4ibmUJukw" base_Class="_cjmJMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureIndicationsSectionTemplateId ProcedureIndicationsSectionCode ProcedureIndicationsSectionCodeP ProcedureIndicationsSectionText ProcedureIndicationsSectionTitle' 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="_-pnxIj_aEeOMf4ibmUJukw" 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="_-pspoD_aEeOMf4ibmUJukw" 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="_-pywQD_aEeOMf4ibmUJukw" base_Class="_R-vIoDssEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ConsultationNoteTemplateId ConsultationNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ConsultationNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent ConsultationNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection ConsultationNoteHasReasonForReferralOrReasonForVisit GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ConsultationNoteComponentOf ConsultationNoteHistoryOfPresentIllness ConsultationNoteInFulfillmentOf ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity 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 ConsultationNoteComponentOfEncompassingEncounter2ResponsibleParty ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipant' constraints.validation.warning='ConsultationNotePhysicalExamSection' constraints.validation.query='ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNoteComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity 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='ConsultationNoteComponentOfEncompassingEncounter2EffectiveTime ConsultationNoteComponentOfEncompassingEncounter2Id' constraints.validation.info='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="_-p_kkD_aEeOMf4ibmUJukw" 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="_-qeFsD_aEeOMf4ibmUJukw" base_Class="_-Qa60D1jEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HistoryAndPhysicalNoteTemplateId HistoryAndPhysicalNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections HistoryAndPhysicalNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent HistoryAndPhysicalNoteHasChiefComplaintAndReasonForVisitChiefComplaintOrReasonForVisit HistoryAndPhysicalNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP HistoryAndPhysicalNoteComponentOf HistoryAndPhysicalNoteAllergiesSectionEntriesOptional HistoryAndPhysicalNoteFamilyHistorySection HistoryAndPhysicalNoteGeneralStatusSection HistoryAndPhysicalNoteHistoryOfPastIllnessSection HistoryAndPhysicalNoteMedicationsSectionEntriesOptional HistoryAndPhysicalNotePhysicalExamSection HistoryAndPhysicalNoteResultsSectionEntriesOptional HistoryAndPhysicalNoteReviewOfSystemsSection HistoryAndPhysicalNoteSocialHistorySection HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity 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 HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant' constraints.validation.warning='HistoryAndPhysicalNoteHistoryOfPresentIllnessSection' constraints.validation.query='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity 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='HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id' constraints.validation.info='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="_-q6xoj_aEeOMf4ibmUJukw" base_Class="_xe9MsD4iEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OperativeNoteTemplateId GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP OperativeNoteDocumentationOf OperativeNoteAnesthesiaSection OperativeNoteComplicationsSection OperativeNotePostoperativeDiagnosisSection OperativeNotePreoperativeDiagnosisSection OperativeNoteProcedureEstimatedBloodLossSection OperativeNoteProcedureFindingsSection OperativeNoteProcedureSpecimensTakenSection OperativeNoteProcedureDescriptionSection OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth 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 OperativeNoteFluidSection OperativeNoteSurgicalProcedureSection OperativeNotePlanOfCareSection OperativeNotePlannedProcedureSection OperativeNoteProcedureDispositionSection OperativeNoteProcedureIndicationsSection OperativeNoteSurgicalDrainsSection' constraints.validation.query='OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEventPrimaryPerformer OperativeNoteDocumentationOfServiceEvent'</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 OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEventPrimaryPerformer OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity' constraints.validation.query='OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntityCodeP OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerAssignedEntity'</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="_-rSlEj_aEeOMf4ibmUJukw" base_Class="_LuYEsD7YEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureNoteTemplateId ProcedureNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProcedureNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent ProcedureNoteDoesNotHaveChiefComplaintAndReasonForVisitWithChiefComplaintSectionOrReasonSection ProcedureNoteSectionTitles GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ProcedureNoteComplicationsSection ProcedureNotePostprocedureDiagnosisSection ProcedureNoteProcedureDescriptionSection ProcedureNoteProcedureIndicationsSection ProcedureNoteDocumentationOf ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth 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' 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' constraints.validation.query='ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant ProcedureNoteComponentOfEncompassingEncounter5 ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity ProcedureNoteDocumentationOfServiceEvent1ProcedureCodes ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasLow ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeHasHighWhenNoWidth ProcedureNoteDocumentationOfServiceEvent1EffectiveTimeNoHighIfWidth 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 ProcedureNoteDocumentationOfServiceEvent1Code ProcedureNoteDocumentationOfServiceEvent1EffectiveTime ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformer ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity' constraints.validation.warning='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP' constraints.validation.query='ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCodeP ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntityCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerTypeCode ProcedureNoteDocumentationOfServiceEvent1PrimaryPerformerAssignedEntity' 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="_-r1-tT_aEeOMf4ibmUJukw" base_Class="_UBzvED_LEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProgressNoteTemplateId ProgressNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProgressNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP ProgressNoteComponentOf ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh ProgressNoteDocumentationOfServiceEvent2TemplateId ProgressNoteDocumentationOfServiceEvent2ClassCode ProgressNoteDocumentationOfServiceEvent2 ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility 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 ProgressNoteDocumentationOfServiceEvent2EffectiveTime' constraints.validation.info='ProgressNoteAssessmentSection ProgressNotePlanOfCareSection ProgressNoteAssessmentAndPlanSection ProgressNoteAllergiesSectionEntriesOptional ProgressNoteChiefComplaintSection ProgressNoteInterventionsSection ProgressNoteMedicationsSectionEntriesOptional ProgressNoteObjectiveSection ProgressNotePhysicalExamSection ProgressNoteProblemSectionEntriesOptional ProgressNoteResultsSectionEntriesOptional ProgressNoteReviewOfSystemsSection ProgressNoteSubjectiveSection ProgressNoteVitalSignsSectionEntriesOptional ProgressNoteInstructionsSection' constraints.validation.query='ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow ProgressNoteDocumentationOfServiceEvent2EffectiveTimeHigh ProgressNoteDocumentationOfServiceEvent2TemplateId ProgressNoteDocumentationOfServiceEvent2ClassCode ProgressNoteDocumentationOfServiceEvent2EffectiveTime ProgressNoteDocumentationOfServiceEvent2 ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility 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 ProgressNoteDocumentationOfServiceEvent2ClassCode' templateId.root='2.16.840.1.113883.10.20.21.3.1' constraints.validation.warning='ProgressNoteDocumentationOfServiceEvent2EffectiveTimeLow ProgressNoteDocumentationOfServiceEvent2EffectiveTime' 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='ProgressNoteComponentOfEncompassingEncounter6EffectiveTime ProgressNoteComponentOfEncompassingEncounter6Id ProgressNoteComponentOfEncompassingEncounter6Location'</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="_-sRcgD_aEeOMf4ibmUJukw" 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="_-sWVAD_aEeOMf4ibmUJukw" base_Class="_0baBYEEwEeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PreoperativeDiagnosisTemplateId PreoperativeDiagnosisClassCode PreoperativeDiagnosisCode PreoperativeDiagnosisMoodCode PreoperativeDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.65' classCode='ACT' code.code='10219-4' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-sb0kT_aEeOMf4ibmUJukw" base_Class="_4qKukEE1EeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InstructionsSectionTemplateId InstructionsSectionCode InstructionsSectionCodeP InstructionsSectionText InstructionsSectionTitle' 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="_-sgtEj_aEeOMf4ibmUJukw" base_Class="_LNP08EFGEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AdmissionMedicationTemplateId AdmissionMedicationClassCode AdmissionMedicationCodeP AdmissionMedicationMoodCode AdmissionMedicationMedicationActivity' templateId.root='2.16.840.1.113883.10.20.22.4.36' classCode='ACT' 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' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-sp3AD_aEeOMf4ibmUJukw" base_Class="_5K6mAEFHEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HospitalAdmissionDiagnosisTemplateId HospitalAdmissionDiagnosisClassCode HospitalAdmissionDiagnosisCode HospitalAdmissionDiagnosisMoodCode HospitalAdmissionDiagnosisProblemObservation' templateId.root='2.16.840.1.113883.10.20.22.4.34' classCode='ACT' code.code='46241-6' code.codeSystem='2.16.840.1.113883.6.1' code.codeSystemName='LOINC' code.displayName='Admission diagnosis' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-s9ZAD_aEeOMf4ibmUJukw" base_Class="_XwBooEUuEeGdQ4KWAmnbhw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DiagnosticImagingReportTemplateId DiagnosticImagingReportSectionsHaveText GeneralHeaderConstraintsCode GeneralHeaderConstraintsCodeP GeneralHeaderConstraintsId DiagnosticImagingReportInformant DiagnosticImagingReportDocumentationOf DiagnosticImagingReportFindingsSection DiagnosticImagingReportParticipantAssociatedEntityPersonName DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReportParticipantAssociatedEntity DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode DiagnosticImagingReportDocumentationOfServiceEvent4Code DiagnosticImagingReportDocumentationOfServiceEvent3 DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime DiagnosticImagingReportComponentOfEncompassingEncounter7Id DiagnosticImagingReportComponentOfEncompassingEncounter' templateId.root='2.16.840.1.113883.10.20.22.1.5' constraints.validation.warning='DiagnosticImagingReportUseDiagnosticImagingCode DiagnosticImagingReportAllSectionsHaveTitle DiagnosticImagingReportDICOMObjectCatalogSection DiagnosticImagingReportDocumentationOfServiceEvent4Id DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization 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 DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsibleParty' constraints.validation.query='DiagnosticImagingReportParticipantAssociatedEntityPersonName DiagnosticImagingReportParticipantAssociatedEntityAssociatedPerson DiagnosticImagingReportParticipantAssociatedEntity DiagnosticImagingReportDocumentationOfServiceEvent4ClassCode DiagnosticImagingReportDocumentationOfServiceEvent4Code DiagnosticImagingReportDocumentationOfServiceEvent4Id DiagnosticImagingReportDocumentationOfServiceEvent4PhysicianReadingStudyPerformer DiagnosticImagingReportDocumentationOfServiceEvent3 DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntityHasAssignPersonOrRepresentedOrganization DiagnosticImagingReportComponentOfEncompassingEncounter7ResponsiblePartyAssignedEntity 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='DiagnosticImagingReportComponentOfEncompassingEncounter7EffectiveTime DiagnosticImagingReportComponentOfEncompassingEncounter7Id' constraints.validation.warning='DiagnosticImagingReportComponentOfEncompassingEncounter7PhysicianofRecordParticipant' constraints.validation.info='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="_-tMpkz_aEeOMf4ibmUJukw" base_Class="_H1UdcEVEEeGAh_iQGJvI5w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PhysicianReadingStudyPerformerTemplateId PhysicianReadingStudyPerformerTypeCode PhysicianReadingStudyPerformerAssignedEntity PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityCode PhysicianReadingStudyPerformerAssignedEntityId' templateId.root='2.16.840.1.113883.10.20.6.2.1' constraints.validation.info='PhysicianReadingStudyPerformerTime' constraints.validation.warning='PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId' constraints.validation.query='PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityCode PhysicianReadingStudyPerformerAssignedEntityId'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolPhysicianReadingStudyPerformerAssignedEntity constraints.validation.warning='PhysicianReadingStudyPerformerAssignedEntityHasNationalProviderId' constraints.validation.error='PhysicianReadingStudyPerformerAssignedEntityHasDICOM PhysicianReadingStudyPerformerAssignedEntityHasAssignedPersonOrRepresentedOrganization PhysicianReadingStudyPerformerAssignedEntityCode PhysicianReadingStudyPerformerAssignedEntityId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-tSJID_aEeOMf4ibmUJukw" 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="_-tXosz_aEeOMf4ibmUJukw" 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="_-teWYj_aEeOMf4ibmUJukw" 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="_-tlrIj_aEeOMf4ibmUJukw" 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='SOPInstanceObservation SOPInstanceObservationPurposeofReferenceObservation SOPInstanceObservationReferencedFramesObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-txRUT_aEeOMf4ibmUJukw" 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="_-t1iwD_aEeOMf4ibmUJukw" 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="_-t4mEj_aEeOMf4ibmUJukw" 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="_-t83gD_aEeOMf4ibmUJukw" 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="_-uCXET_aEeOMf4ibmUJukw" 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="_-uHPkT_aEeOMf4ibmUJukw" 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="_-uLhAj_aEeOMf4ibmUJukw" base_Class="_crHC0EcAEeGp67IkyTw1fg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureContextTemplateId ProcedureContextEffectiveTimeValue ProcedureContextCode' templateId.root='2.16.840.1.113883.10.20.6.2.5' constraints.validation.warning='ProcedureContextEffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-um-0D_aEeOMf4ibmUJukw" 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>
  <CDA:ConformsTo xmi:id="_-uuTlT_aEeOMf4ibmUJukw" base_Generalization="_reIG0OWTEeGKmvzED_He2w"/>
  <Ecore:EClass xmi:id="_-uu6oT_aEeOMf4ibmUJukw" base_Class="_RYJj0OWQEeGKmvzED_He2w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='TobaccoUseTemplateId SmokingStatusObservationEffectiveTimeLow SmokingStatusObservationClassCode SmokingStatusObservationMoodCode SmokingStatusObservationCode SmokingStatusObservationCodeP SmokingStatusObservationEffectiveTime SmokingStatusObservationStatusCode SmokingStatusObservationStatusCodeP SmokingStatusObservationValue SmokingStatusObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.78' 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.SmokingStatusObservationCode='SmokingStatusObservationCodeP' statusCode.code='completed' constraints.validation.dependOn.SmokingStatusObservationStatusCode='SmokingStatusObservationStatusCodeP' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.SmokingStatusObservationValue='SmokingStatusObservationValueP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-u5SsT_aEeOMf4ibmUJukw" base_Class="_gIH_QOWQEeGKmvzED_He2w">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='TobaccoUseTemplateId TobaccoUseEffectiveTimeLow TobaccoUseClassCode TobaccoUseMoodCode TobaccoUseCode TobaccoUseCodeP TobaccoUseEffectiveTime TobaccoUseStatusCode TobaccoUseStatusCodeP TobaccoUseValue TobaccoUseValueP' templateId.root='2.16.840.1.113883.10.20.22.4.85' 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.TobaccoUseCode='TobaccoUseCodeP' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-vE44T_aEeOMf4ibmUJukw" 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="_-vQfEj_aEeOMf4ibmUJukw" 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="_-vYa4D_aEeOMf4ibmUJukw" 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 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 CaregiverCharacteristicsParticipantTime CaregiverCharacteristicsParticipantParticipantRole' constraints.validation.info='CaregiverCharacteristicsParticipantTimeHigh CaregiverCharacteristicsParticipantTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCaregiverCharacteristicsParticipant constraints.validation.error='CaregiverCharacteristicsParticipantTimeLow CaregiverCharacteristicsParticipantParticipantRole' constraints.validation.info='CaregiverCharacteristicsParticipantTimeHigh CaregiverCharacteristicsParticipantTime'</annotation>
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation/consolCaregiverCharacteristicsParticipantParticipantRole constraints.validation.error='CaregiverCharacteristicsParticipantParticipantRoleClassCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-viy8T_aEeOMf4ibmUJukw" 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' 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="_-vvAMD_aEeOMf4ibmUJukw" base_Generalization="_JGpG8OZcEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-vvAMz_aEeOMf4ibmUJukw" base_Class="_dXKPQOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId CognitiveStatusProblemObservationHasTextReferenceValue CognitiveStatusProblemObservationHasOnsetDate ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCodeP ProblemObservationStatusCode ProblemObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.73' constraints.validation.warning='CognitiveStatusProblemObservationHasTextReference CognitiveStatusProblemObservationHasResolutionDate 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' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationValue='ProblemObservationValueP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_-v8bkD_aEeOMf4ibmUJukw" base_Generalization="_gLy9QOZfEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-v9Coj_aEeOMf4ibmUJukw" base_Class="_gkBM0OZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId CognitiveStatusResultObservationTextReferenceValue 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='CognitiveStatusResultObservationTextReference 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="_-wLFED_aEeOMf4ibmUJukw" base_Generalization="_-QfYkOZiEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-wLFEz_aEeOMf4ibmUJukw" base_Class="_jfoCUOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerClassCode ResultOrganizerMoodCode ResultOrganizerId ResultOrganizerCode ResultOrganizerStatusCode ResultOrganizerStatusCodeP CognitiveStatusResultOrganizerCognitiveStatusResultObservation' 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="_-wRywD_aEeOMf4ibmUJukw" 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="_-wbjwD_aEeOMf4ibmUJukw" base_Generalization="_whRx8ObjEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-wcK0j_aEeOMf4ibmUJukw" base_Class="_rVl5AOZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProblemObservationTemplateId FunctionalStatusProblemObservationHasTextReferenceValue FunctionalStatusProblemObservationHasOnsetDate ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCodeP ProblemObservationStatusCode ProblemObservationValueP' templateId.root='2.16.840.1.113883.10.20.22.4.68' constraints.validation.warning='FunctionalStatusProblemObservationHasTextReference FunctionalStatusProblemObservationTextReferenceValue FunctionalStatusProblemObservationHasResolutionDate ProblemObservationCode ProblemObservationText ProblemObservationEffectiveTime ProblemObservationValue' constraints.validation.info='FunctionalStatusProblemObservationValueNullFlavor 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' statusCode.code='completed' value.codeSystem='2.16.840.1.113883.6.96' value.codeSystemName='SNOMEDCT' constraints.validation.dependOn.ProblemObservationValue='ProblemObservationValueP'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_-wqNQD_aEeOMf4ibmUJukw" base_Generalization="_dM_VcObxEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-wq0Uj_aEeOMf4ibmUJukw" base_Class="_viRU0OZbEeGINOJ_SD9_dA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResultObservationTemplateId FunctionalStatusResultObservationTextReferenceValue 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='FunctionalStatusResultObservationTextReference 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="_-w4PsT_aEeOMf4ibmUJukw" base_Generalization="_8KA8YObzEeGINOJ_SD9_dA"/>
  <Ecore:EClass xmi:id="_-w42wT_aEeOMf4ibmUJukw" 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='FunctionalStatusResultOrganizerCodeCodeSystem' classCode='CLUSTER' moodCode='EVN' statusCode.code='completed' constraints.validation.dependOn.ResultOrganizerStatusCode='ResultOrganizerStatusCodeP'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_-w-9Yj_aEeOMf4ibmUJukw" 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="_-xEc8j_aEeOMf4ibmUJukw" 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="_-xRRQT_aEeOMf4ibmUJukw" 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 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' 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="_-yh1gD_aEeOMf4ibmUJukw" 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="_-yk40D_aEeOMf4ibmUJukw" 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>
</xmi:XMI>
