<?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">
    <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="_4qNGwUIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qNGwkIlEeG5UvLPSY8o7A">
          <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="_4qW3wEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRealmCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3wUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.realmCode->isEmpty() or self.realmCode->exists(element | element.isNullFlavorUndefined())) implies (self.realmCode->size() = 1 and self.realmCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = element.oclAsType(datatypes::CS) in &#xD;&#xA;value.code = 'US'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qW3wkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTypeId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3w0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.typeId.oclIsUndefined() or self.typeId.isNullFlavorUndefined()) implies (not self.typeId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qW3xEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3xUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qW3xkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3x0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qW3yEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTitle" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3yUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qW3ykIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qW3y0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qgBsEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsConfidentialityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qgBsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.confidentialityCode.oclIsUndefined() or self.confidentialityCode.isNullFlavorUndefined()) implies (not self.confidentialityCode.oclIsUndefined() and self.confidentialityCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.confidentialityCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.25' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qgBskIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qgBs0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined() and self.languageCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.languageCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qgBtEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsSetId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qgBtUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.setId.oclIsUndefined() or self.setId.isNullFlavorUndefined()) implies (not self.setId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4qgBtkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsVersionNumber" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qgBt0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.versionNumber.oclIsUndefined() or self.versionNumber.isNullFlavorUndefined()) implies (not self.versionNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sJAfUIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAfkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxcEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEnterer" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxcUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxckIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxdEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxdUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informationRecipient->exists(informationRecipient : cda::InformationRecipient | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::InformationRecipient))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxdkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxd0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(cda::LegalAuthenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxeEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticator" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxeUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator->exists(authenticator : cda::Authenticator | not authenticator.oclIsUndefined() and authenticator.oclIsKindOf(cda::Authenticator))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4sSxekIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTarget" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sSxe0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget->exists(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4scicEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsComponentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4scicUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Im6AkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6A0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant->one(informant : cda::Informant12 | not informant.oclIsUndefined() and informant.oclIsKindOf(cda::Informant12))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IwD9kIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsSupportParticipant" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IwD-EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInFulfillmentOf" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD-UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyUEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor.assignedAuthoringDevice->select(not oclIsUndefined())->forAll((manufacturerModelName.oclIsUndefined() or manufacturerModelName.isNullFlavorUndefined()) implies (not manufacturerModelName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyUkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor.assignedAuthoringDevice->select(not oclIsUndefined())->forAll((softwareName.oclIsUndefined() or softwareName.isNullFlavorUndefined()) implies (not softwareName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyVEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasAssignedPersonOrAssignedAuthoringDevice" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll(assignedPerson.oclIsUndefined() xor assignedAuthoringDevice.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyVkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyV0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyWEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyWUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyWkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyW0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyXEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyXUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyXkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthorTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyX0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TLyYEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthorAssignedAuthor" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TLyYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->select(not oclIsUndefined())->forAll(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjUEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjUkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjVEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjVkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjV0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjWEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjWUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjWkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjW0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer.assignedEntity->select(not oclIsUndefined())->forAll(assignedPerson->exists(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TVjXEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TVjXUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetQEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetQkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetREIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetRUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetRkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((telecom.oclIsUndefined() or telecom.isNullFlavorUndefined()) implies (not telecom.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetSEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetSUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian->select(not oclIsUndefined())->forAll(representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(cda::CustodianOrganization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetSkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCustodianAssignedCustodian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetS0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian->select(not oclIsUndefined())->forAll(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TetTEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TetTUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informationRecipient.intendedRecipient.receivedOrganization->select(not oclIsUndefined())->forAll((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeQEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informationRecipient.intendedRecipient->select(not oclIsUndefined())->forAll(informationRecipient->one(informationRecipient : cda::Person | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeQkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informationRecipient.intendedRecipient->select(not oclIsUndefined())->forAll(receivedOrganization->one(receivedOrganization : cda::Organization | not receivedOrganization.oclIsUndefined() and receivedOrganization.oclIsKindOf(cda::Organization)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeREIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformationRecipientIntendedRecipient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeRUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informationRecipient->select(not oclIsUndefined())->forAll(intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeRkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeSEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeSUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeSkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeS0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeTEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeTUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ToeTkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ToeT0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPQEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity->select(not oclIsUndefined())->forAll(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPQkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator->select(not oclIsUndefined())->forAll((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPREIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsLegalAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPRUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator->select(not oclIsUndefined())->forAll((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 's')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPRkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator.assignedEntity->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPSEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPSUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator.assignedEntity->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TyPSkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TyPS0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator.assignedEntity->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZMEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator.assignedEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZMkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator.assignedEntity->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZNEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZNUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator->select(not oclIsUndefined())->forAll((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZNkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorSignatureCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZN0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator->select(not oclIsUndefined())->forAll((signatureCode.oclIsUndefined() or signatureCode.isNullFlavorUndefined()) implies (not signatureCode.oclIsUndefined() and signatureCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = signatureCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 's')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZOEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsAuthenticatorAssignedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZOUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.authenticator->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5T7ZOkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5T7ZO0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.providerOrganization->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKMEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.providerOrganization->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKMkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.providerOrganization->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKNEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKNUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.providerOrganization->select(not oclIsUndefined())->forAll((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKNkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKN0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.providerOrganization->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKOEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKOUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.languageCommunication->select(not oclIsUndefined())->forAll((languageCode.oclIsUndefined() or languageCode.isNullFlavorUndefined()) implies (not languageCode.oclIsUndefined() and languageCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = languageCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKOkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKO0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.languageCommunication->select(not oclIsUndefined())->forAll((preferenceInd.oclIsUndefined() or preferenceInd.isNullFlavorUndefined()) implies (not preferenceInd.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UFKPEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UFKPUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.languageCommunication->select(not oclIsUndefined())->forAll((proficiencyLevelCode.oclIsUndefined() or proficiencyLevelCode.isNullFlavorUndefined()) implies (proficiencyLevelCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = proficiencyLevelCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UOUIEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UOUIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.languageCommunication->select(not oclIsUndefined())->forAll((modeCode.oclIsUndefined() or modeCode.isNullFlavorUndefined()) implies (modeCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = modeCode.oclAsType(datatypes::CE) in (&#xD;&#xA;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="_5UOUIkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UOUI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.birthplace.place->select(not oclIsUndefined())->forAll((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UOUJEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UOUJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.birthplace->select(not oclIsUndefined())->forAll(place->one(place : cda::Place | not place.oclIsUndefined() and place.oclIsKindOf(cda::Place)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UOUJkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UOUJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.guardian->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFIEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.guardian->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFIkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.guardian->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFJEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient.guardian->select(not oclIsUndefined())->forAll(guardianPerson->one(guardianPerson : cda::Person | not guardianPerson.oclIsUndefined() and guardianPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFJkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTimePreciseToYear" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll(birthTime.value.size() >= 4)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFKEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTimePreciseToDay" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFKUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll(birthTime.value.size() >= 6)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFKkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFK0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((birthTime.oclIsUndefined() or birthTime.isNullFlavorUndefined()) implies (not birthTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UYFLEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UYFLUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((ethnicGroupCode.oclIsUndefined() or ethnicGroupCode.isNullFlavorUndefined()) implies (not ethnicGroupCode.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2IEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2IUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((maritalStatusCode.oclIsUndefined() or maritalStatusCode.isNullFlavorUndefined()) implies (not maritalStatusCode.oclIsUndefined() and maritalStatusCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = maritalStatusCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.2' and (value.code = 'A' or value.code = 'D' or value.code = 'T' or value.code = 'I' or value.code = 'L' or value.code = 'M' or value.code = 'S' or value.code = 'P' or value.code = 'W'))))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2IkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientName" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2I0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2JEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2JUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((raceCode.oclIsUndefined() or raceCode.isNullFlavorUndefined()) implies (not raceCode.oclIsUndefined() and raceCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = raceCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2JkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2J0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll((religiousAffiliationCode.oclIsUndefined() or religiousAffiliationCode.isNullFlavorUndefined()) implies (not religiousAffiliationCode.oclIsUndefined() and religiousAffiliationCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = religiousAffiliationCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.1076' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2KEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2KUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll(guardian->exists(guardian : cda::Guardian | not guardian.oclIsUndefined() and guardian.oclIsKindOf(cda::Guardian)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Uh2KkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Uh2K0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll(birthplace->one(birthplace : cda::Birthplace | not birthplace.oclIsUndefined() and birthplace.oclIsKindOf(cda::Birthplace)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAEEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole.patient->select(not oclIsUndefined())->forAll(languageCommunication->one(languageCommunication : cda::LanguageCommunication | not languageCommunication.oclIsUndefined() and languageCommunication.oclIsKindOf(cda::LanguageCommunication)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAEkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAFEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAFkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRoleTelecom" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAF0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAGEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRolePatient" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAGUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole->select(not oclIsUndefined())->forAll(patient->one(patient : cda::Patient | not patient.oclIsUndefined() and patient.oclIsKindOf(cda::Patient)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5UrAGkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsRecordTargetPatientRole" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5UrAG0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget->select(not oclIsUndefined())->forAll(patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U0xEEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U0xEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U0xEkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsComponentOfEncompassingEncounterId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U0xE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U0xFEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsComponentOfEncompassingEncounter" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U0xFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->select(not oclIsUndefined())->forAll(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VRdAEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantRelatedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VRdAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.relatedEntity->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VRdAkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantRelatedEntityPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VRdA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.relatedEntity->select(not oclIsUndefined())->forAll(relatedPerson->one(relatedPerson : cda::Person | not relatedPerson.oclIsUndefined() and relatedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VRdBEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier " constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VRdBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.assignedEntity->select(not oclIsUndefined())->forAll(id->exists( root='2.16.840.1.113883.4.6' ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VRdBkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantAssignedEntityAddr" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VRdB0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.assignedEntity->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VRdCEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantAssignedEntityCode" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VRdCUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.assignedEntity->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Vam8EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantAssignedEntityId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Vam8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.assignedEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Vam8kIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantAssignedEntityPerson" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Vam80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant.assignedEntity->select(not oclIsUndefined())->forAll(assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Vam9EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Vam9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.informant->select(not oclIsUndefined())->forAll(assignedEntity.oclIsUndefined() xor relatedEntity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Vam9kIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Vam90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(not oclIsUndefined())->forAll(associatedEntity.associatedPerson.oclIsUndefined() xor associatedEntity.scopingOrganization.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Vam-EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsParticipantSupportTime" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Vam-UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(not oclIsUndefined())->forAll((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VkX8EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInFulfillmentOfOrderId" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VkX8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf.order->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VkX8kIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsInFulfillmentOfOrder" constrainedElement="_2DNRcBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VkX80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf->select(not oclIsUndefined())->forAll(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2D-tgBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_S9OzADxXEd6JwqSGecoePg"/>
      </generalization>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_jPhi4CylEeGMXrZ0DiQwGg" name="RecordTarget">
        <ownedComment xmi:id="_SsXIMCzJEeGMXrZ0DiQwGg">
          <body>The recordTarget records the patient whose health information is described by the clinical document; it must contain at least one patientRole element.</body>
        </ownedComment>
        <ownedComment xmi:id="_Zqh0MCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5ITYCUIlEeG5UvLPSY8o7A" name="RecordTargetPatientRole" constrainedElement="_jPhi4CylEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ITYCkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.patientRole->one(patientRole : cda::PatientRole | not patientRole.oclIsUndefined() and patientRole.oclIsKindOf(cda::PatientRole))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_jPiJ8CylEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_CVzT8EALEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_qjbOUCylEeGMXrZ0DiQwGg" name="PatientRole">
          <ownedRule xmi:id="_4qpysEIlEeG5UvLPSY8o7A" name="PatientRoleAddr" constrainedElement="_qjbOUCylEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qpysUIlEeG5UvLPSY8o7A">
              <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="_4qpys0IlEeG5UvLPSY8o7A" name="PatientRoleId" constrainedElement="_qjbOUCylEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qpytEIlEeG5UvLPSY8o7A">
              <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="_4qpytUIlEeG5UvLPSY8o7A" name="PatientRoleTelecom" constrainedElement="_qjbOUCylEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qpytkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5IdJAUIlEeG5UvLPSY8o7A" name="PatientRolePatient" constrainedElement="_qjbOUCylEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJAkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.patient->one(patient : cda::Patient | not patient.oclIsUndefined() and patient.oclIsKindOf(cda::Patient))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_qjb1YCylEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_OApKcEALEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_wfQTkCylEeGMXrZ0DiQwGg" name="Patient">
            <ownedRule xmi:id="_dqXccDVREeGIw7CntkyPQw" name="PatientBirthTimePreciseToYear" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_sg6Z8DVREeGIw7CntkyPQw">
                <language>OCL</language>
                <body>self.birthTime.value.size() >= 4</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_kIBcYDVREeGIw7CntkyPQw" name="PatientBirthTimePreciseToDay" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_uehWIDVREeGIw7CntkyPQw">
                <language>OCL</language>
                <body>self.birthTime.value.size() >= 6</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4qpyuEIlEeG5UvLPSY8o7A" name="PatientBirthTime" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qpyuUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.birthTime.oclIsUndefined() or self.birthTime.isNullFlavorUndefined()) implies (not self.birthTime.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4qzjsEIlEeG5UvLPSY8o7A" name="PatientEthnicGroupCode" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qzjsUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.ethnicGroupCode.oclIsUndefined() or self.ethnicGroupCode.isNullFlavorUndefined()) implies (not self.ethnicGroupCode.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4qzjskIlEeG5UvLPSY8o7A" name="PatientMaritalStatusCode" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qzjs0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.maritalStatusCode.oclIsUndefined() or self.maritalStatusCode.isNullFlavorUndefined()) implies (not self.maritalStatusCode.oclIsUndefined() and self.maritalStatusCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.maritalStatusCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.2' and (value.code = 'A' or value.code = 'D' or value.code = 'T' or value.code = 'I' or value.code = 'L' or value.code = 'M' or value.code = 'S' or value.code = 'P' or value.code = 'W')))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4qzjtEIlEeG5UvLPSY8o7A" name="PatientName" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qzjtUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name->isEmpty() or self.name->exists(element | element.isNullFlavorUndefined())) implies (not self.name->isEmpty())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4qzjtkIlEeG5UvLPSY8o7A" name="PatientRaceCode" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4qzjt0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.raceCode.oclIsUndefined() or self.raceCode.isNullFlavorUndefined()) implies (not self.raceCode.oclIsUndefined() and self.raceCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.raceCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.238' and not value.code.oclIsUndefined()))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4q8toEIlEeG5UvLPSY8o7A" name="PatientReligiousAffiliationCode" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q8toUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.religiousAffiliationCode.oclIsUndefined() or self.religiousAffiliationCode.isNullFlavorUndefined()) implies (not self.religiousAffiliationCode.oclIsUndefined() and self.religiousAffiliationCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.religiousAffiliationCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.1076' and not value.code.oclIsUndefined()))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5IdJA0IlEeG5UvLPSY8o7A" name="PatientGuardian" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJBEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.guardian->exists(guardian : cda::Guardian | not guardian.oclIsUndefined() and guardian.oclIsKindOf(cda::Guardian))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5IdJB0IlEeG5UvLPSY8o7A" name="PatientBirthplace" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJCEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.birthplace->one(birthplace : cda::Birthplace | not birthplace.oclIsUndefined() and birthplace.oclIsKindOf(cda::Birthplace))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5IdJDEIlEeG5UvLPSY8o7A" name="PatientLanguageCommunication" constrainedElement="_wfQTkCylEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJDUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.languageCommunication->one(languageCommunication : cda::LanguageCommunication | not languageCommunication.oclIsUndefined() and languageCommunication.oclIsKindOf(cda::LanguageCommunication))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_wfQ6oCylEeGMXrZ0DiQwGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_mxsCMEALEd6wZe6nFLrjsw"/>
            </generalization>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_-vjwcCylEeGMXrZ0DiQwGg" name="Guardian">
              <ownedRule xmi:id="_4q8tokIlEeG5UvLPSY8o7A" name="GuardianAddr" constrainedElement="_-vjwcCylEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q8to0IlEeG5UvLPSY8o7A">
                  <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="_4q8tpUIlEeG5UvLPSY8o7A" name="GuardianCode" constrainedElement="_-vjwcCylEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q8tpkIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.111' and not value.code.oclIsUndefined()))</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4q8tp0IlEeG5UvLPSY8o7A" name="GuardianTelecom" constrainedElement="_-vjwcCylEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4q8tqEIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_5IdJBUIlEeG5UvLPSY8o7A" name="GuardianGuardianPerson" constrainedElement="_-vjwcCylEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJBkIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>self.guardianPerson->one(guardianPerson : cda::Person | not guardianPerson.oclIsUndefined() and guardianPerson.oclIsKindOf(cda::Person))</body>
                </specification>
              </ownedRule>
              <generalization xmi:id="_-vjwcSylEeGMXrZ0DiQwGg">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_liVJMEcIEd6besF9iFIJkQ"/>
              </generalization>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_hrAmsCymEeGMXrZ0DiQwGg" name="LanguageCommunication">
              <ownedRule xmi:id="_4rGeoEIlEeG5UvLPSY8o7A" name="LanguageCommunicationLanguageCode" constrainedElement="_hrAmsCymEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rGeoUIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined() and self.languageCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.languageCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4rGeo0IlEeG5UvLPSY8o7A" name="LanguageCommunicationPreferenceInd" constrainedElement="_hrAmsCymEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rGepEIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.preferenceInd.oclIsUndefined() or self.preferenceInd.isNullFlavorUndefined()) implies (not self.preferenceInd.oclIsUndefined())</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4rGepUIlEeG5UvLPSY8o7A" name="LanguageCommunicationProficiencyLevelCode" constrainedElement="_hrAmsCymEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rGepkIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.proficiencyLevelCode.oclIsUndefined() or self.proficiencyLevelCode.isNullFlavorUndefined()) implies (self.proficiencyLevelCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.proficiencyLevelCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4rGep0IlEeG5UvLPSY8o7A" name="LanguageCommunicationModeCode" constrainedElement="_hrAmsCymEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rGeqEIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.modeCode.oclIsUndefined() or self.modeCode.isNullFlavorUndefined()) implies (self.modeCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.modeCode.oclAsType(datatypes::CE) in (&#xD;&#xA;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>
              <generalization xmi:id="_hrAmsSymEeGMXrZ0DiQwGg">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_cHD44EcZEd6besF9iFIJkQ"/>
              </generalization>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_NOxMACymEeGMXrZ0DiQwGg" name="Birthplace">
              <ownedRule xmi:id="_5IdJCUIlEeG5UvLPSY8o7A" name="BirthplacePlace" constrainedElement="_NOxMACymEeGMXrZ0DiQwGg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJCkIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>self.place->one(place : cda::Place | not place.oclIsUndefined() and place.oclIsKindOf(cda::Place))</body>
                </specification>
              </ownedRule>
              <generalization xmi:id="_NOxMASymEeGMXrZ0DiQwGg">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_Y18S8EcEEd6besF9iFIJkQ"/>
              </generalization>
              <nestedClassifier xmi:type="uml:Class" xmi:id="_TGgbcCymEeGMXrZ0DiQwGg" name="Place">
                <ownedRule xmi:id="_4rQPoEIlEeG5UvLPSY8o7A" name="PlaceAddr" constrainedElement="_TGgbcCymEeGMXrZ0DiQwGg">
                  <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPoUIlEeG5UvLPSY8o7A">
                    <language>OCL</language>
                    <body>(self.addr.oclIsUndefined() or self.addr.isNullFlavorUndefined()) implies (not self.addr.oclIsUndefined())</body>
                  </specification>
                </ownedRule>
                <generalization xmi:id="_TGgbcSymEeGMXrZ0DiQwGg">
                  <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_KY0gEEcaEd6besF9iFIJkQ"/>
                </generalization>
              </nestedClassifier>
            </nestedClassifier>
          </nestedClassifier>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_6j680CytEeGMXrZ0DiQwGg" name="ProviderOrganization">
            <ownedRule xmi:id="_oGeuoDVUEeGIw7CntkyPQw" name="ProviderOrganizationHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_qF4akDVUEeGIw7CntkyPQw">
                <language>OCL</language>
                <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rQPpEIlEeG5UvLPSY8o7A" name="ProviderOrganizationAddr" constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPpUIlEeG5UvLPSY8o7A">
                <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="_4rQPpkIlEeG5UvLPSY8o7A" name="ProviderOrganizationId" constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPp0IlEeG5UvLPSY8o7A">
                <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="_4rQPqEIlEeG5UvLPSY8o7A" name="ProviderOrganizationName" constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPqUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name->isEmpty() or self.name->exists(element | element.isNullFlavorUndefined())) implies (not self.name->isEmpty())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rQPqkIlEeG5UvLPSY8o7A" name="ProviderOrganizationTelecom" constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPq0IlEeG5UvLPSY8o7A">
                <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="_6j680SytEeGMXrZ0DiQwGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_zjKW8EcZEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_OgZroCypEeGMXrZ0DiQwGg" name="ComponentOf">
        <ownedComment xmi:id="_Kis5cCzJEeGMXrZ0DiQwGg">
          <body>The componentOf element is used to wrap the encompassing encounter for this document. The encompassing encounter represents the setting of the clinical encounter during which the document act(s) or ServiceEvent occurred.</body>
        </ownedComment>
        <ownedComment xmi:id="_XZ3jsCzKEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_4xNtu0IlEeG5UvLPSY8o7A" name="ComponentOfEncompassingEncounter" constrainedElement="_OgZroCypEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNtvEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_OgZroSypEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_TCORACypEeGMXrZ0DiQwGg" name="EncompassingEncounter">
          <ownedRule xmi:id="_4rQPrEIlEeG5UvLPSY8o7A" name="EncompassingEncounterEffectiveTime" constrainedElement="_TCORACypEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPrUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4rQPr0IlEeG5UvLPSY8o7A" name="EncompassingEncounterId" constrainedElement="_TCORACypEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rQPsEIlEeG5UvLPSY8o7A">
              <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="_TCORASypEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_xw9WkCymEeGMXrZ0DiQwGg" name="Author">
        <ownedComment xmi:id="_LJ_i8CzJEeGMXrZ0DiQwGg">
          <body>The author element represents the creator of the clinical document.  The author may be a device, or a person.</body>
        </ownedComment>
        <ownedComment xmi:id="_kQ25sCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5IdJDkIlEeG5UvLPSY8o7A" name="AuthorAssignedAuthor" constrainedElement="_xw9WkCymEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IdJD0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_xw9WkSymEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_344-ICymEeGMXrZ0DiQwGg" name="AssignedAuthor">
          <ownedRule xmi:id="_LKdzICzAEeGMXrZ0DiQwGg" name="AssignedAuthorHasAssignedPersonOrAssignedAuthoringDevice" constrainedElement="_344-ICymEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_Mdv_8CzAEeGMXrZ0DiQwGg">
              <language>OCL</language>
              <body>assignedPerson.oclIsUndefined() xor assignedAuthoringDevice.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_BEoOQDVVEeGIw7CntkyPQw" name="AssignedAuthorHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_BEoOQTVVEeGIw7CntkyPQw">
              <language>OCL</language>
              <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4rZZkUIlEeG5UvLPSY8o7A" name="AssignedAuthorAddr" constrainedElement="_344-ICymEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZkkIlEeG5UvLPSY8o7A">
              <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="_4rZZk0IlEeG5UvLPSY8o7A" name="AssignedAuthorCode" constrainedElement="_344-ICymEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZlEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4rZZlUIlEeG5UvLPSY8o7A" name="AssignedAuthorId" constrainedElement="_344-ICymEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZlkIlEeG5UvLPSY8o7A">
              <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="_4rZZl0IlEeG5UvLPSY8o7A" name="AssignedAuthorTelecom" constrainedElement="_344-ICymEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZmEIlEeG5UvLPSY8o7A">
              <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="_345lMCymEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_z2vcQEcDEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_1_b_0Cy_EeGMXrZ0DiQwGg" name="AuthoringDevice">
            <ownedRule xmi:id="_4rZZmUIlEeG5UvLPSY8o7A" name="AuthoringDeviceManufacturerModelName" constrainedElement="_1_b_0Cy_EeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZmkIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.manufacturerModelName.oclIsUndefined() or self.manufacturerModelName.isNullFlavorUndefined()) implies (not self.manufacturerModelName.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rZZnEIlEeG5UvLPSY8o7A" name="AuthoringDeviceSoftwareName" constrainedElement="_1_b_0Cy_EeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rZZnUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.softwareName.oclIsUndefined() or self.softwareName.isNullFlavorUndefined()) implies (not self.softwareName.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_1_b_0Sy_EeGMXrZ0DiQwGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_IIL8MEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_HcPMsCymEeGMXrZ0DiQwGg" name="Person">
        <generalization xmi:id="_HcPzwCymEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_Je2yMEcaEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_BArpECynEeGMXrZ0DiQwGg" name="DataEnterer">
        <ownedComment xmi:id="_LqavcCzJEeGMXrZ0DiQwGg">
          <body>The dataEnterer element represents the person who transferred the content, written or dictated by someone else, into the clinical document. The guiding rule of thumb is that an author provides the content found within the header or body of the document, subject to their own interpretation, and the dataEnterer adds that information to the electronic system. In other words, a dataEnterer transfers information from one source to another (e.g., transcription from paper form to electronic system).</body>
        </ownedComment>
        <ownedComment xmi:id="_piYdsCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_BArpESynEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_twqZYEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_HOG0oCynEeGMXrZ0DiQwGg" name="AssignedEntity">
          <ownedRule xmi:id="_YXfQwDVVEeGIw7CntkyPQw" name="AssignedEntityHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_YXfQwTVVEeGIw7CntkyPQw">
              <language>OCL</language>
              <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4rjKkUIlEeG5UvLPSY8o7A" name="AssignedEntityAddr" constrainedElement="_HOG0oCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rjKkkIlEeG5UvLPSY8o7A">
              <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="_4rjKk0IlEeG5UvLPSY8o7A" name="AssignedEntityCode" constrainedElement="_HOG0oCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rjKlEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101'))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4rjKlUIlEeG5UvLPSY8o7A" name="AssignedEntityId" constrainedElement="_HOG0oCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rjKlkIlEeG5UvLPSY8o7A">
              <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="_4rjKl0IlEeG5UvLPSY8o7A" name="AssignedEntityTelecom" constrainedElement="_HOG0oCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rjKmEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Im6AEIlEeG5UvLPSY8o7A" name="AssignedEntityAssignedPerson" constrainedElement="_HOG0oCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6AUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.assignedPerson->exists(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_HOHbsCynEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_lU63MCynEeGMXrZ0DiQwGg" name="Custodian">
        <ownedComment xmi:id="_ML1acCzJEeGMXrZ0DiQwGg">
          <body>The custodian element represents the organization that is in charge of maintaining the document. The custodian is the steward that is entrusted with the care of the document. Every CDA document has exactly one custodian. The custodian participation satisfies the CDA definition of Stewardship. Because CDA is an exchange standard and may not represent the original form of the authenticated document (e.g., CDA could include scanned copy of original), the custodian represents the steward of the original source document. The custodian may be the document originator, a health information exchange, or other responsible party.</body>
        </ownedComment>
        <ownedComment xmi:id="_wlNAMCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5Im6C0IlEeG5UvLPSY8o7A" name="CustodianAssignedCustodian" constrainedElement="_lU63MCynEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6DEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_lU7eQCynEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_mMYIkEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_rk3yUCynEeGMXrZ0DiQwGg" name="AssignedCustodian">
          <ownedRule xmi:id="_5Im6DkIlEeG5UvLPSY8o7A" name="AssignedCustodianRepresentedCustodianOrganization" constrainedElement="_rk3yUCynEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6D0IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.representedCustodianOrganization->one(representedCustodianOrganization : cda::CustodianOrganization | not representedCustodianOrganization.oclIsUndefined() and representedCustodianOrganization.oclIsKindOf(cda::CustodianOrganization))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_rk3yUSynEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1G6DoEcDEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_yEoEACynEeGMXrZ0DiQwGg" name="CustodianOrganization">
            <ownedRule xmi:id="__ERYsDVXEeGIw7CntkyPQw" name="CustodianOrganizationHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="__ERYsTVXEeGIw7CntkyPQw">
                <language>OCL</language>
                <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rjKmkIlEeG5UvLPSY8o7A" name="CustodianOrganizationAddr" constrainedElement="_yEoEACynEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rjKm0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.addr.oclIsUndefined() or self.addr.isNullFlavorUndefined()) implies (not self.addr.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rsUgEIlEeG5UvLPSY8o7A" name="CustodianOrganizationId" constrainedElement="_yEoEACynEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUgUIlEeG5UvLPSY8o7A">
                <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="_4rsUgkIlEeG5UvLPSY8o7A" name="CustodianOrganizationName" constrainedElement="_yEoEACynEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUg0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name.oclIsUndefined() or self.name.isNullFlavorUndefined()) implies (not self.name.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_4rsUhEIlEeG5UvLPSY8o7A" name="CustodianOrganizationTelecom" constrainedElement="_yEoEACynEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUhUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.telecom.oclIsUndefined() or self.telecom.isNullFlavorUndefined()) implies (not self.telecom.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_yEoEASynEeGMXrZ0DiQwGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nNMFUEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_7nao4CynEeGMXrZ0DiQwGg" name="InformationRecipient">
        <ownedComment xmi:id="_MtBb8CzJEeGMXrZ0DiQwGg">
          <body>The informationRecipient element records the intended recipient of the information at the time the document is created. For example, in cases where the intended recipient of the document is the patient's health chart, set the receivedOrganization to be the scoping organization for that chart</body>
        </ownedComment>
        <ownedComment xmi:id="_0u29MCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5Im6EUIlEeG5UvLPSY8o7A" name="InformationRecipientIntendedRecipient" constrainedElement="_7nao4CynEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6EkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.intendedRecipient->one(intendedRecipient : cda::IntendedRecipient | not intendedRecipient.oclIsUndefined() and intendedRecipient.oclIsKindOf(cda::IntendedRecipient))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_7nbP8CynEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_I5t6QEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_BAltACyoEeGMXrZ0DiQwGg" name="IntendedRecipient">
          <ownedRule xmi:id="_5IwD8UIlEeG5UvLPSY8o7A" name="IntendedRecipientInformationRecipient" constrainedElement="_BAltACyoEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD8kIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.informationRecipient->one(informationRecipient : cda::Person | not informationRecipient.oclIsUndefined() and informationRecipient.oclIsKindOf(cda::Person))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5IwD9EIlEeG5UvLPSY8o7A" name="IntendedRecipientRecievedOrganization" constrainedElement="_BAltACyoEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD9UIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.receivedOrganization->one(receivedOrganization : cda::Organization | not receivedOrganization.oclIsUndefined() and receivedOrganization.oclIsKindOf(cda::Organization))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_BAmUECyoEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_TWL5IEcZEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_subVMCzEEeGMXrZ0DiQwGg" name="Organization">
            <ownedRule xmi:id="_4rsUhkIlEeG5UvLPSY8o7A" name="OrganizationName" constrainedElement="_subVMCzEEeGMXrZ0DiQwGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUh0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name->isEmpty() or self.name->exists(element | element.isNullFlavorUndefined())) implies (not self.name->isEmpty())</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_sub8QCzEEeGMXrZ0DiQwGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_zjKW8EcZEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_TpC14CyoEeGMXrZ0DiQwGg" name="LegalAuthenticator">
        <ownedComment xmi:id="_NNN-8CzJEeGMXrZ0DiQwGg">
          <body>&lt;p>The legalAuthenticator identifies the single person legally responsible for the document and must be present if the document has been legally authenticated. (Note that per the following section, there may also be one or more document authenticators.) &lt;/p>

&lt;p>Based on local practice, clinical documents may be released before legal authentication. This implies that a clinical document that does not contain this element has not been legally authenticated.&lt;/p>

&lt;p>The act of legal authentication requires a certain privilege be granted to the legal authenticator depending upon local policy. All clinical documents have the potential for legal authentication, given the appropriate credentials.&lt;/p>

&lt;p>Local policies may choose to delegate the function of legal authentication to a device or system that generates the clinical document. In these cases, the legal authenticator is a person accepting responsibility for the document, not the generating device or system.&lt;/p>

&lt;p>Note that the legal authenticator, if present, must be a person.&lt;/p></body>
        </ownedComment>
        <ownedComment xmi:id="__MVosCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_4rsUiUIlEeG5UvLPSY8o7A" name="LegalAuthenticatorTime" constrainedElement="_TpC14CyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUikIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_4rsUjEIlEeG5UvLPSY8o7A" name="LegalAuthenticatorSignatureCode" constrainedElement="_TpC14CyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4rsUjUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.signatureCode.oclIsUndefined() or self.signatureCode.isNullFlavorUndefined()) implies (not self.signatureCode.oclIsUndefined() and self.signatureCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.signatureCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 's'))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_TpDc8CyoEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_fcTWYEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_nlqjwDVYEeGIw7CntkyPQw" name="AssignedEntity">
          <ownedRule xmi:id="_nlqjwTVYEeGIw7CntkyPQw" name="AssignedEntityHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_nlqjwjVYEeGIw7CntkyPQw">
              <language>OCL</language>
              <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4r2FgUIlEeG5UvLPSY8o7A" name="AssignedEntityAddr" constrainedElement="_nlqjwDVYEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FgkIlEeG5UvLPSY8o7A">
              <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="_4r2Fg0IlEeG5UvLPSY8o7A" name="AssignedEntityCode" constrainedElement="_nlqjwDVYEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FhEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101'))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4r2FhUIlEeG5UvLPSY8o7A" name="AssignedEntityId" constrainedElement="_nlqjwDVYEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FhkIlEeG5UvLPSY8o7A">
              <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="_4r2Fh0IlEeG5UvLPSY8o7A" name="AssignedEntityTelecom" constrainedElement="_nlqjwDVYEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FiEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5JMv5EIlEeG5UvLPSY8o7A" name="AssignedEntityAssignedPerson" constrainedElement="_nlqjwDVYEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JMv5UIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_nlqjwzVYEeGIw7CntkyPQw">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_cqzKQCyoEeGMXrZ0DiQwGg" name="Authenticator">
        <ownedComment xmi:id="_NrDKcCzJEeGMXrZ0DiQwGg">
          <body>The authenticator identifies a participant or participants who attested to the accuracy of the information in the document.</body>
        </ownedComment>
        <ownedComment xmi:id="_HXynMCzKEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_4r2FiUIlEeG5UvLPSY8o7A" name="AuthenticatorTime" constrainedElement="_cqzKQCyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FikIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_4r2FjEIlEeG5UvLPSY8o7A" name="AuthenticatorSignatureCode" constrainedElement="_cqzKQCyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r2FjUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.signatureCode.oclIsUndefined() or self.signatureCode.isNullFlavorUndefined()) implies (not self.signatureCode.oclIsUndefined() and self.signatureCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.signatureCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 's'))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_5JMv4EIlEeG5UvLPSY8o7A" name="AuthenticatorAssignedEntity" constrainedElement="_cqzKQCyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JMv4UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_cqzxUCyoEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_BkHyQEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_GEiMYCzGEeGMXrZ0DiQwGg" name="AssignedEntity">
          <ownedRule xmi:id="_UfqGwDVZEeGIw7CntkyPQw" name="AssignedEntityHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_UfqGwTVZEeGIw7CntkyPQw">
              <language>OCL</language>
              <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4r_2gUIlEeG5UvLPSY8o7A" name="AssignedEntityAddr" constrainedElement="_GEiMYCzGEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r_2gkIlEeG5UvLPSY8o7A">
              <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="_4r_2g0IlEeG5UvLPSY8o7A" name="AssignedEntityCode" constrainedElement="_GEiMYCzGEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r_2hEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4r_2hUIlEeG5UvLPSY8o7A" name="AssignedEntityId" constrainedElement="_GEiMYCzGEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r_2hkIlEeG5UvLPSY8o7A">
              <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="_4r_2h0IlEeG5UvLPSY8o7A" name="AssignedEntityTelecom" constrainedElement="_GEiMYCzGEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r_2iEIlEeG5UvLPSY8o7A">
              <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="_GEizcCzGEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_RS-y4CynEeGMXrZ0DiQwGg" name="Informant">
        <ownedComment xmi:id="_llmYsCzBEeGMXrZ0DiQwGg">
          <body>&lt;p>The informant element describes the source of the information in a medical document.&lt;/p>

&lt;p>Assigned health care providers may be a source of information when a document is created. (e.g., a nurse's aide who provides information about a recent significant health care event that occurred within an acute care facility.) In these cases, the assignedEntity element is used.&lt;/p>

&lt;p>When the informant is a personal relation, that informant is represented in the relatedEntity element.  The code element of the relatedEntity describes the relationship between the informant and the patient. The relationship between the informant and the patient  needs to be described to help the receiver of the clinical document understand the information in the document.&lt;/p></body>
        </ownedComment>
        <ownedComment xmi:id="_OmmzwCzJEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_72wJQDVWEeGIw7CntkyPQw" name="InformantHasAssignedEntityOrRelatedEntity" constrainedElement="_RS-y4CynEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_EAcNMDVXEeGIw7CntkyPQw">
            <language>OCL</language>
            <body>self.assignedEntity.oclIsUndefined() xor self.relatedEntity.oclIsUndefined()</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_RS-y4SynEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_GUBDUEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_NmVGsCzCEeGMXrZ0DiQwGg" name="AssignedEntity">
          <ownedRule xmi:id="_JKUtkDVWEeGIw7CntkyPQw" name="AssignedEntityHasNationalProviderIdentifier " constrainedElement="_6j680CytEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_JKUtkTVWEeGIw7CntkyPQw">
              <language>OCL</language>
              <body>self.id->exists( root='2.16.840.1.113883.4.6' )</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4r_2i0IlEeG5UvLPSY8o7A" name="AssignedEntityAddr" constrainedElement="_NmVGsCzCEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4r_2jEIlEeG5UvLPSY8o7A">
              <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="_4sJAcEIlEeG5UvLPSY8o7A" name="AssignedEntityCode" constrainedElement="_NmVGsCzCEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAcUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101'))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4sJAckIlEeG5UvLPSY8o7A" name="AssignedEntityId" constrainedElement="_NmVGsCzCEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAc0IlEeG5UvLPSY8o7A">
              <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="_5Im6CUIlEeG5UvLPSY8o7A" name="AssignedEntityPerson" constrainedElement="_NmVGsCzCEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6CkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.assignedPerson->one(assignedPerson : cda::Person | not assignedPerson.oclIsUndefined() and assignedPerson.oclIsKindOf(cda::Person))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_NmVGsSzCEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_ou68wDVWEeGIw7CntkyPQw" name="RelatedEntity">
          <ownedRule xmi:id="_4sJAdEIlEeG5UvLPSY8o7A" name="RelatedEntityAddr" constrainedElement="_ou68wDVWEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAdUIlEeG5UvLPSY8o7A">
              <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="_5JMv4kIlEeG5UvLPSY8o7A" name="RelatedEntityPerson" constrainedElement="_ou68wDVWEeGIw7CntkyPQw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JMv40IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.relatedPerson->one(relatedPerson : cda::Person | not relatedPerson.oclIsUndefined() and relatedPerson.oclIsKindOf(cda::Person))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_ou68wTVWEeGIw7CntkyPQw">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_e-h_0EcaEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_Zi4mACzHEeGMXrZ0DiQwGg" name="ParticipantSupport">
        <ownedComment xmi:id="_PhdScCzJEeGMXrZ0DiQwGg">
          <body>&lt;p>The participant element identifies other supporting participants, including parents, relatives, caregivers, insurance policyholders, guarantors, and other participants related in some way to the patient. &lt;/p>

&lt;p>A supporting person or organization is an individual or an organization with a relationship to the patient. A supporting person who is playing multiple roles would be recorded in multiple particpants (e.g., emergency contact and next-of-kin)&lt;/p></body>
        </ownedComment>
        <ownedComment xmi:id="_PhHewCzKEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_CAPIoDVaEeGIw7CntkyPQw" name="ParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization" constrainedElement="_Zi4mACzHEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_FRAV0DVaEeGIw7CntkyPQw">
            <language>OCL</language>
            <body>self.associatedEntity.associatedPerson.oclIsUndefined() xor self.associatedEntity.scopingOrganization.oclIsUndefined()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_4sJAeEIlEeG5UvLPSY8o7A" name="ParticipantSupportTime" constrainedElement="_Zi4mACzHEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAeUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_Zi4mASzHEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_4_GbMEcZEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_yamekCyoEeGMXrZ0DiQwGg" name="InFulfillmentOf">
        <ownedComment xmi:id="_QC0TECzJEeGMXrZ0DiQwGg">
          <body>The inFulfillmentOf element represents orders that are fulfilled by this document.</body>
        </ownedComment>
        <ownedComment xmi:id="_TxyCsCzKEeGMXrZ0DiQwGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5IwD-kIlEeG5UvLPSY8o7A" name="InFulfillmentOfOrder" constrainedElement="_yamekCyoEeGMXrZ0DiQwGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD-0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_yamekSyoEeGMXrZ0DiQwGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_Li14oEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_24atsCyoEeGMXrZ0DiQwGg" name="Order">
          <ownedRule xmi:id="_4sJAekIlEeG5UvLPSY8o7A" name="OrderId" constrainedElement="_24atsCyoEeGMXrZ0DiQwGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sJAe0IlEeG5UvLPSY8o7A">
              <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="_24bUwCyoEeGMXrZ0DiQwGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_vgekoEcZEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
    </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' or self.statusCode.code = 'suspended') 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 = 'aborted' or self.statusCode.code = 'completed') implies not self.effectiveTime.high.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4scickIlEeG5UvLPSY8o7A" name="AllergyProblemActTemplateId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4scic0IlEeG5UvLPSY8o7A">
          <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="_4scidUIlEeG5UvLPSY8o7A" name="AllergyProblemActClassCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4scidkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4scid0IlEeG5UvLPSY8o7A" name="AllergyProblemActMoodCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4scieEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4scieUIlEeG5UvLPSY8o7A" name="AllergyProblemActId" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4sciekIlEeG5UvLPSY8o7A">
          <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="_4slsYEIlEeG5UvLPSY8o7A" name="AllergyProblemActCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4slsYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4slsYkIlEeG5UvLPSY8o7A" name="AllergyProblemActStatusCode" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4slsY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '55561003' or value.code = '73425007' or value.code = '413322009')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4slsZEIlEeG5UvLPSY8o7A" name="AllergyProblemActEffectiveTime" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4slsZUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u1IFEIlEeG5UvLPSY8o7A" name="AllergyProblemActAllergyObservation" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IFUIlEeG5UvLPSY8o7A">
          <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="_4u1IFkIlEeG5UvLPSY8o7A" name="getAllergyObservations" isQuery="true" bodyCondition="_4u1IGUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4u1IGUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4u1IFkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IGkIlEeG5UvLPSY8o7A">
            <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="_4u1IF0IlEeG5UvLPSY8o7A" type="_2EaLUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4u1IGEIlEeG5UvLPSY8o7A" 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 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 occuring 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="_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.oclIsKindOf(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.oclIsKindOf(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.oclIsKindOf(consol::SeverityObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4slsZkIlEeG5UvLPSY8o7A" name="AllergyObservationTemplateId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4slsZ0IlEeG5UvLPSY8o7A">
          <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="_4svdYEIlEeG5UvLPSY8o7A" name="AllergyObservationClassCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4svdYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4svdYkIlEeG5UvLPSY8o7A" name="AllergyObservationMoodCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4svdY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4svdZEIlEeG5UvLPSY8o7A" name="AllergyObservationId" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4svdZUIlEeG5UvLPSY8o7A">
          <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="_4s4nUEIlEeG5UvLPSY8o7A" name="AllergyObservationCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4s4nUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4s4nUkIlEeG5UvLPSY8o7A" name="AllergyObservationStatusCode" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4s4nU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4s4nVEIlEeG5UvLPSY8o7A" name="AllergyObservationEffectiveTime" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4s4nVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tCYUEIlEeG5UvLPSY8o7A" name="AllergyObservationValue" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;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="_4tCYUkIlEeG5UvLPSY8o7A" name="AllergyObservationProblemEntryReactionObservationContainer" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYU0IlEeG5UvLPSY8o7A">
          <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="_4tCYWUIlEeG5UvLPSY8o7A" name="AllergyObservationSeverity" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYWkIlEeG5UvLPSY8o7A">
          <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="_5A2sQEIlEeG5UvLPSY8o7A" name="AllergyObservationAllergyStatusObservation" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sQUIlEeG5UvLPSY8o7A">
          <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="_5JDl-UIlEeG5UvLPSY8o7A" name="AllergyObservationParticipant" constrainedElement="_2EaLUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JDl-kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</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="_4tCYVEIlEeG5UvLPSY8o7A" name="getProblemEntryReactionObservationContainers" isQuery="true" bodyCondition="_4tCYV0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4tCYV0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4tCYVEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYWEIlEeG5UvLPSY8o7A">
            <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="_4tCYVUIlEeG5UvLPSY8o7A" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4tCYVkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4tCYW0IlEeG5UvLPSY8o7A" name="getSeverity" isQuery="true" bodyCondition="_4tCYXkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4tCYXkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4tCYW0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYX0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation))->asSequence()->first().oclAsType(consol::SeverityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4tCYXEIlEeG5UvLPSY8o7A" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4tCYXUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5A2sQkIlEeG5UvLPSY8o7A" name="getAllergyStatusObservation" isQuery="true" bodyCondition="_5A2sRUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5A2sRUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5A2sQkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sRkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AllergyStatusObservation))->asSequence()->first().oclAsType(consol::AllergyStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5A2sQ0IlEeG5UvLPSY8o7A" type="_2FRuAhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5A2sREIlEeG5UvLPSY8o7A" 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="_4tCYYEIlEeG5UvLPSY8o7A" name="AgeObservationTemplateId" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tCYYUIlEeG5UvLPSY8o7A">
          <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="_4tMJUEIlEeG5UvLPSY8o7A" name="AgeObservationClassCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tMJUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tMJUkIlEeG5UvLPSY8o7A" name="AgeObservationMoodCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tMJU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tMJVEIlEeG5UvLPSY8o7A" name="AgeObservationCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tMJVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '445518008' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tMJVkIlEeG5UvLPSY8o7A" name="AgeObservationStatusCode" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tMJV0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tMJWEIlEeG5UvLPSY8o7A" name="AgeObservationValue" constrainedElement="_2EqqABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tMJWUIlEeG5UvLPSY8o7A">
          <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.reference.oclIsUndefined()</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.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tVTQEIlEeG5UvLPSY8o7A" name="HealthStatusObservationTemplateId" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tVTQUIlEeG5UvLPSY8o7A">
          <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="_4tVTQ0IlEeG5UvLPSY8o7A" name="HealthStatusObservationClassCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tVTREIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tVTRUIlEeG5UvLPSY8o7A" name="HealthStatusObservationMoodCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tVTRkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tVTR0IlEeG5UvLPSY8o7A" name="HealthStatusObservationCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tVTSEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '11323-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tfEQEIlEeG5UvLPSY8o7A" name="HealthStatusObservationText" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tfEQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tfEQkIlEeG5UvLPSY8o7A" name="HealthStatusObservationStatusCode" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tfEQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tfEREIlEeG5UvLPSY8o7A" name="HealthStatusObservationValue" constrainedElement="_2ExXsBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tfERUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;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="_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 not self.text.reference.value.oclIsUndefined()</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.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.oclIsKindOf(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.oclIsKindOf(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.oclIsKindOf(consol::MedicationActivity))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tfERkIlEeG5UvLPSY8o7A" name="ReactionObservationTemplateId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tfER0IlEeG5UvLPSY8o7A">
          <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="_4to1QEIlEeG5UvLPSY8o7A" name="ReactionObservationClassCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4to1QUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tx_MEIlEeG5UvLPSY8o7A" name="ReactionObservationMoodCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tx_MUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tx_MkIlEeG5UvLPSY8o7A" name="ReactionObservationId" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tx_M0IlEeG5UvLPSY8o7A">
          <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="_4tx_NEIlEeG5UvLPSY8o7A" name="ReactionObservationCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tx_NUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tx_NkIlEeG5UvLPSY8o7A" name="ReactionObservationText" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tx_N0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4tx_OEIlEeG5UvLPSY8o7A" name="ReactionObservationStatusCode" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4tx_OUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4t7wMEIlEeG5UvLPSY8o7A" name="ReactionObservationEffectiveTime" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4t7wMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4t7wMkIlEeG5UvLPSY8o7A" name="ReactionObservationValue" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4t7wM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uOrIkIlEeG5UvLPSY8o7A" name="ReactionObservationSeverityObservation" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uOrI0IlEeG5UvLPSY8o7A">
          <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="_5FCBkEIlEeG5UvLPSY8o7A" name="ReactionObservationProcedureActivityProcedure" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBkUIlEeG5UvLPSY8o7A">
          <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="_5FCBl0IlEeG5UvLPSY8o7A" name="ReactionObservationMedicationActivity" constrainedElement="_2E_aIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBmEIlEeG5UvLPSY8o7A">
          <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="_4uOrJEIlEeG5UvLPSY8o7A" name="getSeverityObservation" isQuery="true" bodyCondition="_4uOrJ0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4uOrJ0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4uOrJEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uOrKEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::SeverityObservation))->asSequence()->first().oclAsType(consol::SeverityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4uOrJUIlEeG5UvLPSY8o7A" type="_2FGu4hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4uOrJkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FCBkkIlEeG5UvLPSY8o7A" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_5FCBlUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FCBlUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FCBkkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBlkIlEeG5UvLPSY8o7A">
            <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="_5FCBk0IlEeG5UvLPSY8o7A" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FCBlEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FCBmUIlEeG5UvLPSY8o7A" name="getMedicationActivities" isQuery="true" bodyCondition="_5FCBnEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FCBnEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FCBmUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBnUIlEeG5UvLPSY8o7A">
            <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="_5FCBmkIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FCBm0IlEeG5UvLPSY8o7A" 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 not self.text.reference.value.oclIsUndefined()</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.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4t7wNEIlEeG5UvLPSY8o7A" name="SeverityObservationTemplateId" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4t7wNUIlEeG5UvLPSY8o7A">
          <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="_4t7wN0IlEeG5UvLPSY8o7A" name="SeverityObservationClassCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4t7wOEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uE6IEIlEeG5UvLPSY8o7A" name="SeverityObservationMoodCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uE6IUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uE6IkIlEeG5UvLPSY8o7A" name="SeverityObservationCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uE6I0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'SEV' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uE6JEIlEeG5UvLPSY8o7A" name="SeverityObservationText" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uE6JUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uE6JkIlEeG5UvLPSY8o7A" name="SeverityObservationStatusCode" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uE6J0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uOrIEIlEeG5UvLPSY8o7A" name="SeverityObservationValue" constrainedElement="_2FGu4hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uOrIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;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>
      <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="_4uOrKUIlEeG5UvLPSY8o7A" name="AllergyStatusObservationTemplateId" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uOrKkIlEeG5UvLPSY8o7A">
          <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="_4uYcIEIlEeG5UvLPSY8o7A" name="AllergyStatusObservationClassCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uYcIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uYcIkIlEeG5UvLPSY8o7A" name="AllergyStatusObservationMoodCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uYcI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uYcJEIlEeG5UvLPSY8o7A" name="AllergyStatusObservationCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uYcJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uYcJkIlEeG5UvLPSY8o7A" name="AllergyStatusObservationStatusCode" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uYcJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uhmEEIlEeG5UvLPSY8o7A" name="AllergyStatusObservationValue" constrainedElement="_2FRuAhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uhmEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;&#xA;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="Comment">
      <ownedComment xmi:id="_2FrWoBSVEeGGzu7fmW9pXw" annotatedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <body>Used to contain comments associated with any of the data within the document.</body>
      </ownedComment>
      <ownedComment xmi:id="_2FrWoRSVEeGGzu7fmW9pXw" annotatedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <body>&lt;p>This entry allows for a comment to be supplied with each entry. For CDA this structure is usually included in the target act using the &amp;lt;entryRelationship> element defined in the CDA Schema, but can also be used in the &amp;lt;component> element when the comment appears within an &amp;lt;organizer>.&lt;/p>&#xD;
&#xD;
&lt;p>Any condition or allergy may be the subject of a comment.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2FhloRSVEeGGzu7fmW9pXw" annotatedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <body>This module contains a comment to be supplied for any other entry Content Modules.</body>
      </ownedComment>
      <ownedRule xmi:id="_2Fo6YRSVEeGGzu7fmW9pXw" name="CommentHasTextReference">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Fo6YhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.text.reference.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2FphcRSVEeGGzu7fmW9pXw" name="CommentEffectiveTimeWhenAuthorPresent">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2FphchSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.author->isEmpty() implies not self.effectiveTime.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2FqIgBSVEeGGzu7fmW9pXw" name="CommentHasAuthorId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2FqIgRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.author->isEmpty() implies (  self.author.assignedAuthor.id ->size() > 0 and self.author.assignedAuthor.addr ->size() > 0 and self.author.assignedAuthor.telecom ->size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2FqvkBSVEeGGzu7fmW9pXw" name="CommentHasAuthorOrganization">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2FqvkRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.author->isEmpty() implies ( self.author->exists( a : cda::Author | ( (not a.assignedAuthor.assignedPerson.oclIsUndefined()) and not a.assignedAuthor.assignedPerson.name->isEmpty()) or (not a.assignedAuthor.representedOrganization.name->isEmpty())  ) )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4uhmEkIlEeG5UvLPSY8o7A" name="CommentTemplateId" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4uhmE0IlEeG5UvLPSY8o7A">
          <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="_4urXEEIlEeG5UvLPSY8o7A" name="CommentClassCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4urXEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4urXEkIlEeG5UvLPSY8o7A" name="CommentMoodCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4urXE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4urXFEIlEeG5UvLPSY8o7A" name="CommentCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4urXFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '48767-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4urXFkIlEeG5UvLPSY8o7A" name="CommentText" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4urXF0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u1IEEIlEeG5UvLPSY8o7A" name="CommentStatusCode" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u1IEkIlEeG5UvLPSY8o7A" name="CommentAuthor" constrainedElement="_2FhloBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</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="_4u1IG0IlEeG5UvLPSY8o7A" name="MedicationActivityTemplateId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IHEIlEeG5UvLPSY8o7A">
          <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="_4u1IHkIlEeG5UvLPSY8o7A" name="MedicationActivityClassCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u1IH0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u-SAEIlEeG5UvLPSY8o7A" name="MedicationActivityId" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u-SAUIlEeG5UvLPSY8o7A">
          <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="_4u-SAkIlEeG5UvLPSY8o7A" name="MedicationActivityCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u-SA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4u-SBEIlEeG5UvLPSY8o7A" name="MedicationActivityStatusCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4u-SBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vIDAEIlEeG5UvLPSY8o7A" name="MedicationActivityEffectiveTime" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vIDAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime->isEmpty() or self.effectiveTime->exists(element | element.isNullFlavorUndefined())) implies (not self.effectiveTime->isEmpty() and self.effectiveTime->forAll(element | element.oclIsTypeOf(datatypes::IVL_TS)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vIDAkIlEeG5UvLPSY8o7A" name="MedicationActivityRouteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vIDA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vIDBEIlEeG5UvLPSY8o7A" name="MedicationActivityApproachSiteCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vIDBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vIDBkIlEeG5UvLPSY8o7A" name="MedicationActivityDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vIDB0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vIDCEIlEeG5UvLPSY8o7A" name="MedicationActivityRateQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vIDCUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.rateQuantity.oclIsUndefined() or self.rateQuantity.isNullFlavorUndefined()) implies (not self.rateQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vRM8EIlEeG5UvLPSY8o7A" name="MedicationActivityMaxDoseQuantity" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vRM8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.maxDoseQuantity.oclIsUndefined() or self.maxDoseQuantity.isNullFlavorUndefined()) implies (not self.maxDoseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vRM8kIlEeG5UvLPSY8o7A" name="MedicationActivityAdministrationUnitCode" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vRM80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vRM9EIlEeG5UvLPSY8o7A" name="MedicationActivityText" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vRM9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vRM9kIlEeG5UvLPSY8o7A" name="MedicationActivityRepeatNumber" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vRM90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vRM-EIlEeG5UvLPSY8o7A" name="MedicationActivityMedicationSupplyOrder" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vRM-UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->exists(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="_4va99UIlEeG5UvLPSY8o7A" name="MedicationActivityReactionObservation" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va99kIlEeG5UvLPSY8o7A">
          <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="_4va9_EIlEeG5UvLPSY8o7A" name="MedicationActivityConsumable" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va9_UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(consol::MedicationInformation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4v3p4kIlEeG5UvLPSY8o7A" name="MedicationActivityPerformer" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4v3p40IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wUV0kIlEeG5UvLPSY8o7A" name="MedicationActivityInstructions" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wUV00IlEeG5UvLPSY8o7A">
          <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="_4_9UUEIlEeG5UvLPSY8o7A" name="MedicationActivityIndication" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_9UUUIlEeG5UvLPSY8o7A">
          <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="_5AQ2VEIlEeG5UvLPSY8o7A" name="MedicationActivityMedicationDispense" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AQ2VUIlEeG5UvLPSY8o7A">
          <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="_5AaAQkIlEeG5UvLPSY8o7A" name="MedicationActivityPrecondition" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AaAQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.precondition->exists(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(consol::PreconditionForSubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AaAREIlEeG5UvLPSY8o7A" name="MedicationActivityDrugVehicle" constrainedElement="_2GHbgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AaARUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::DrugVehicle))</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="_4va98EIlEeG5UvLPSY8o7A" name="getMedicationSupplyOrders" isQuery="true" bodyCondition="_4va980IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4va980IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4va98EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va99EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder)).oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4va98UIlEeG5UvLPSY8o7A" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4va98kIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4va990IlEeG5UvLPSY8o7A" name="getReactionObservation" isQuery="true" bodyCondition="_4va9-kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4va9-kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4va990IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va9-0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation))->asSequence()->first().oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4va9-EIlEeG5UvLPSY8o7A" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4va9-UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4wUV1EIlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_4wUV10IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4wUV10IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4wUV1EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wUV2EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4wUV1UIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4wUV1kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_9UUkIlEeG5UvLPSY8o7A" name="getIndications" isQuery="true" bodyCondition="_4_9UVUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_9UVUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_9UUkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_9UVkIlEeG5UvLPSY8o7A">
            <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="_4_9UU0IlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_9UVEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5AQ2VkIlEeG5UvLPSY8o7A" name="getMedicationDispense" isQuery="true" bodyCondition="_5AQ2WUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5AQ2WUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5AQ2VkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AQ2WkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense))->asSequence()->first().oclAsType(consol::MedicationDispense)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5AQ2V0IlEeG5UvLPSY8o7A" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5AQ2WEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5AaARkIlEeG5UvLPSY8o7A" name="getDrugVehicles" isQuery="true" bodyCondition="_5AaASUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5AaASUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5AaARkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AaASkIlEeG5UvLPSY8o7A">
            <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="_5AaAR0IlEeG5UvLPSY8o7A" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5AaASEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Gnx1RSVEeGGzu7fmW9pXw" name="MedicationSeriesNumberObservation">
      <ownedComment xmi:id="_2Gnx1hSVEeGGzu7fmW9pXw" annotatedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    The medication series number observation can be used to indicate which in a series of administrations a&#xD;
    particular administration represents (e.g. &quot;hepatitis B vaccine number 2 was administered on Feb 07, 2004).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_4va9_kIlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationTemplateId" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va9_0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.46')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4va-AUIlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationClassCode" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va-AkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4va-A0IlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationMoodCode" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4va-BEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vku8EIlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationCode" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vku8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '30973-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vku8kIlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationStatusCode" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vku80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vku9EIlEeG5UvLPSY8o7A" name="MedicationSeriesNumberObservationValue" constrainedElement="_2Gnx1RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vku9UIlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_2GsDQBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2GtRYxSVEeGGzu7fmW9pXw" name="MedicationStatusObservation">
      <ownedRule xmi:id="_2GzYARSVEeGGzu7fmW9pXw" name="MedicationStatusObservationNoAdditionalParticipants">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2GzYAhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Gz_EBSVEeGGzu7fmW9pXw" name="MedicationStatusObservationNoAdditionalRelationships">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Gz_ERSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->select(er|not er.observation.oclIsUndefined())->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vku9kIlEeG5UvLPSY8o7A" name="MedicationStatusObservationTemplateId" constrainedElement="_2GtRYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vku90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.47')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vt44EIlEeG5UvLPSY8o7A" name="MedicationStatusObservationClassCode" constrainedElement="_2GtRYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vt44UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vt44kIlEeG5UvLPSY8o7A" name="MedicationStatusObservationMoodCode" constrainedElement="_2GtRYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vt440IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4vt45EIlEeG5UvLPSY8o7A" name="MedicationStatusObservationCode" constrainedElement="_2GtRYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4vt45UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4v3p4EIlEeG5UvLPSY8o7A" name="MedicationStatusObservationStatusCode" constrainedElement="_2GtRYxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4v3p4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2G0mIBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </generalization>
    </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="_4v3p5EIlEeG5UvLPSY8o7A" name="ProductInstanceTemplateId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4v3p5UIlEeG5UvLPSY8o7A">
          <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="_4v3p50IlEeG5UvLPSY8o7A" name="ProductInstanceClassCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4v3p6EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4v3p6UIlEeG5UvLPSY8o7A" name="ProductInstanceId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4v3p6kIlEeG5UvLPSY8o7A">
          <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="_5OanKkIlEeG5UvLPSY8o7A" name="ProductInstanceScopingEntity" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanK0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.scopingEntity->one(scopingEntity : cda::Entity | not scopingEntity.oclIsUndefined() and scopingEntity.oclIsKindOf(cda::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OanLEIlEeG5UvLPSY8o7A" name="ProductInstancePlayingDevice" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OkYEEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.playingDevice->one(playingDevice : cda::Device | not playingDevice.oclIsUndefined() and playingDevice.oclIsKindOf(cda::Device))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK07kIlEeG5UvLPSY8o7A" name="ProductInstanceScopingEntityId" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK070IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.scopingEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-0EIlEeG5UvLPSY8o7A" name="ProductInstancePlayingDeviceCode" constrainedElement="_2G2bUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.playingDevice->select(not oclIsUndefined())->forAll((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>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_hLqdIDosEeGSytqLITd2FA" name="ScopingEntity">
        <ownedComment xmi:id="_47CAQDv_EeGtp7JtQeULVw">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_4wBa4EIlEeG5UvLPSY8o7A" name="ScopingEntityId" constrainedElement="_hLqdIDosEeGSytqLITd2FA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wBa4UIlEeG5UvLPSY8o7A">
            <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="_hLqdITosEeGSytqLITd2FA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_-19GYEcEEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_Jv3hEDosEeGSytqLITd2FA" name="PlayingDevice">
        <ownedComment xmi:id="_75qUkDv_EeGtp7JtQeULVw">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_4wBa40IlEeG5UvLPSY8o7A" name="PlayingDeviceCode" constrainedElement="_Jv3hEDosEeGSytqLITd2FA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wBa5EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_Jv3hETosEeGSytqLITd2FA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_u3llMEcEEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2G5eoxSVEeGGzu7fmW9pXw" name="InternalReference">
      <ownedComment xmi:id="_2G5epBSVEeGGzu7fmW9pXw" annotatedElement="_2G5eoxSVEeGGzu7fmW9pXw">
        <body>&lt;p>CDA and HL7 Version 3 Entries may reference (point to) information contained in other entries&#xD;
within the same document or message&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The act being referred to can be any CDA Clinical Statement element type (act, procedure,&#xD;
observation, substanceAdministration, supply, et cetera). For compatibility with the Clinical&#xD;
Statement model the internal reference shall always use the &amp;lt;act> class, regardless of the XML&#xD;
element type of the act it refers to.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_4wBa5kIlEeG5UvLPSY8o7A" name="InternalReferenceId" constrainedElement="_2G5eoxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wBa50IlEeG5UvLPSY8o7A">
          <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="_4wBa6UIlEeG5UvLPSY8o7A" name="InternalReferenceCode" constrainedElement="_2G5eoxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wBa6kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2G764BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </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 not self.text.reference.value.oclIsUndefined()</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.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wBa60IlEeG5UvLPSY8o7A" name="InstructionsTemplateId" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wBa7EIlEeG5UvLPSY8o7A">
          <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="_4wKk0EIlEeG5UvLPSY8o7A" name="InstructionsClassCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKk0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wKk0kIlEeG5UvLPSY8o7A" name="InstructionsMoodCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKk00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wKk1EIlEeG5UvLPSY8o7A" name="InstructionsText" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wKk1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wUV0EIlEeG5UvLPSY8o7A" name="InstructionsStatusCode" constrainedElement="_2G8h9RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wUV0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;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="_2HCokhSVEeGGzu7fmW9pXw" name="MedicationType">
      <ownedComment xmi:id="_2HCokxSVEeGGzu7fmW9pXw" annotatedElement="_2HCokhSVEeGGzu7fmW9pXw">
        <body>A classification based on how the medication is&#xD;
marketed (e.g., prescription, over the counter drug)</body>
      </ownedComment>
      <ownedRule xmi:id="_4wUV2kIlEeG5UvLPSY8o7A" name="MedicationTypeCode" constrainedElement="_2HCokhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wUV20IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '329505003' or value.code = '73639000')))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2HFr4BSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_bJyIQDxYEd6JwqSGecoePg"/>
      </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="_4wUV3EIlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityTemplateId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wUV3UIlEeG5UvLPSY8o7A">
          <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="_4wdfwUIlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityClassCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wdfwkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wdfw0IlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityId" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wdfxEIlEeG5UvLPSY8o7A">
          <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="_4wdfxUIlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityStatusCode" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wdfxkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wdfx0IlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityEffectiveTime" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wdfyEIlEeG5UvLPSY8o7A">
          <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="_4wnQwEIlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityQuantity" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wnQwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wnQwkIlEeG5UvLPSY8o7A" name="NonMedicinalSupplyActivityProductInstance" constrainedElement="_2HIvMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wnQw0IlEeG5UvLPSY8o7A">
          <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="_4wnQxEIlEeG5UvLPSY8o7A" name="getProductInstance" isQuery="true" bodyCondition="_4wnQx0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4wnQx0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4wnQxEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wnQyEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::ProductInstance))->asSequence()->first().oclAsType(consol::ProductInstance)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4wnQxUIlEeG5UvLPSY8o7A" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4wnQxkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2HWKkBSVEeGGzu7fmW9pXw" name="MedicationFullfillmentInstructions">
      <ownedComment xmi:id="_2HbDEBSVEeGGzu7fmW9pXw" annotatedElement="_2HWKkBSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    Fulfillment instructions are additional information provided to the dispensing party (e.g. &quot;label in&#xD;
    spanish&quot;).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_4wnQykIlEeG5UvLPSY8o7A" name="MedicationFullfillmentInstructionsMoodCode" constrainedElement="_2HWKkBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wnQy0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::INT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wnQzEIlEeG5UvLPSY8o7A" name="MedicationFullfillmentInstructionsCode" constrainedElement="_2HWKkBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wnQzUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'FINSTRUCT' and value.codeSystem = '1.3.6.1.4.1.19376.1.5.3.2'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wxBwEIlEeG5UvLPSY8o7A" name="MedicationFullfillmentInstructionsText" constrainedElement="_2HWKkBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wxBwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wxBwkIlEeG5UvLPSY8o7A" name="MedicationFullfillmentInstructionsStatusCode" constrainedElement="_2HWKkBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wxBw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2HbDERSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </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="_4wxBxEIlEeG5UvLPSY8o7A" name="ProblemConcernActTemplateId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wxBxUIlEeG5UvLPSY8o7A">
          <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="_4wxBx0IlEeG5UvLPSY8o7A" name="ProblemConcernActClassCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wxByEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4wxByUIlEeG5UvLPSY8o7A" name="ProblemConcernActMoodCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4wxBykIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4w6LsEIlEeG5UvLPSY8o7A" name="ProblemConcernActId" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4w6LsUIlEeG5UvLPSY8o7A">
          <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="_4w6LskIlEeG5UvLPSY8o7A" name="ProblemConcernActCode" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4w6Ls0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'CONC' and value.codeSystem = '2.16.840.1.113883.5.6'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4w6LtEIlEeG5UvLPSY8o7A" name="ProblemConcernActEffectiveTime" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4w6LtUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BwEGUIlEeG5UvLPSY8o7A" name="ProblemConcernActProblemObservation" constrainedElement="_2H6yUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEGkIlEeG5UvLPSY8o7A">
          <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="_5BwEG0IlEeG5UvLPSY8o7A" name="getProblemObservations" isQuery="true" bodyCondition="_5BwEHkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5BwEHkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5BwEG0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEH0IlEeG5UvLPSY8o7A">
            <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="_5BwEHEIlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5BwEHUIlEeG5UvLPSY8o7A" 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="_4w6Lt0IlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4w6LuEIlEeG5UvLPSY8o7A">
          <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="_4xD8sUIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xD8skIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '34133-9' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xD8s0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentLanguageCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xD8tEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Sl8e0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOf" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8fEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Sl8gEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentAuthor" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8gUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGYEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentAllergiesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGZ0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentMedicationsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGaEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGbkIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentProblemSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGb0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGdUIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentProceduresSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGdkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGfEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentResultsSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGfUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SvGg0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentAdvanceDirectivesSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGhEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5S43ZUIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentEncountersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43ZkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5S43bEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentFamilyHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43bUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5S43c0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentFunctionalStatusSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43dEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5S43ekIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentImmunizationsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43e0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5S43gUIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentMedicalEquipmentSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43gkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TCBVUIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentPayersSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBVkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TCBXEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentPlanOfCareSection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBXUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TCBY0IlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentSocialHistorySection" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBZEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5TCBakIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentVitalSignsSectionEntriesOptional" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBa0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlsEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityHasNationalProviderIdentifier" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer.assignedEntity->select(not oclIsUndefined())->forAll(id->exists(root='2.16.840.1.113883.4.6'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlskIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDls0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer.assignedEntity->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = code.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDltEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityId" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDltUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer.assignedEntity->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDltkIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerTypeCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlt0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer->select(not oclIsUndefined())->forAll(typeCode=vocab::x_ServiceEventPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDluEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntity" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDluUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlukIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTimeLow" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlu0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlvEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTimeHigh" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlvUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlvkIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3ClassCode" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlv0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlwEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTime" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlwkIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent3Performer" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XDlxEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentDocumentationOfServiceEvent" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XDlxUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->select(not oclIsUndefined())->forAll(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5XNWsEIlEeG5UvLPSY8o7A" name="ContinuityOfCareDocumentAuthorAssignedAuthor3" constrainedElement="_2IJb0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5XNWsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->select(not oclIsUndefined())->forAll(assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PQJchSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_ou9e8EINEeGfG6GbxF_VQQ" name="DocumentationOf">
        <ownedComment xmi:id="_xqz4QEIQEeGfG6GbxF_VQQ">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5Sl8fUIlEeG5UvLPSY8o7A" name="DocumentationOfServiceEvent" constrainedElement="_ou9e8EINEeGfG6GbxF_VQQ">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8fkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_rjajkEINEeGfG6GbxF_VQQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1fhigEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_tY10IEINEeGfG6GbxF_VQQ" name="ServiceEvent3">
          <ownedRule xmi:id="_Bt7MAEIQEeGfG6GbxF_VQQ" name="ServiceEvent3EffectiveTimeLow" constrainedElement="_2EAisBSVEeGGzu7fmW9pXw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_Bt7MAUIQEeGfG6GbxF_VQQ">
              <language>OCL</language>
              <body>not self.effectiveTime.low.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_DJkDkEIQEeGfG6GbxF_VQQ" name="ServiceEvent3EffectiveTimeHigh">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_DJkDkUIQEeGfG6GbxF_VQQ">
              <language>OCL</language>
              <body>not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4xD8tkIlEeG5UvLPSY8o7A" name="ServiceEvent3ClassCode" constrainedElement="_tY10IEINEeGfG6GbxF_VQQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNtsEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.classCode=vocab::ActClassRoot::PCPR</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4xNtsUIlEeG5UvLPSY8o7A" name="ServiceEvent3EffectiveTime" constrainedElement="_tY10IEINEeGfG6GbxF_VQQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNtskIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Sl8d0IlEeG5UvLPSY8o7A" name="ServiceEvent3Performer" constrainedElement="_tY10IEINEeGfG6GbxF_VQQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8eEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.performer->exists(performer : cda::Performer1 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer1))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_xOtScEINEeGfG6GbxF_VQQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_lriDUEcaEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_dIxCcEIOEeGfG6GbxF_VQQ" name="Performer">
            <ownedComment xmi:id="_2aw1sEIPEeGfG6GbxF_VQQ">
              <body>serviceEvent/performer represents the healthcare providers involved in the current or pertinent historical care of the patient. Preferably, the patient's key healthcare providers would be listed, particularly their primary physician and any active consulting physicians, therapists, and counselors</body>
            </ownedComment>
            <ownedRule xmi:id="_4xNttEIlEeG5UvLPSY8o7A" name="PerformerTypeCode" constrainedElement="_dIxCcEIOEeGfG6GbxF_VQQ">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNttUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.typeCode=vocab::x_ServiceEventPerformer::PRF</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5Sl8eUIlEeG5UvLPSY8o7A" name="PerformerAssignedEntity" constrainedElement="_dIxCcEIOEeGfG6GbxF_VQQ">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8ekIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(cda::AssignedEntity))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_fbQCcEIOEeGfG6GbxF_VQQ">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_FvF74EcaEd6besF9iFIJkQ"/>
            </generalization>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_tXX_EEIOEeGfG6GbxF_VQQ" name="AssignedEntity">
              <ownedRule xmi:id="_f4CPoEIPEeGfG6GbxF_VQQ" name="AssignedEntityHasNationalProviderIdentifier" constrainedElement="_tXX_EEIOEeGfG6GbxF_VQQ">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_hrhmgEIPEeGfG6GbxF_VQQ">
                  <language>OCL</language>
                  <body>self.id->exists(root='2.16.840.1.113883.4.6')</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4xNtt0IlEeG5UvLPSY8o7A" name="AssignedEntityCode" constrainedElement="_tXX_EEIOEeGfG6GbxF_VQQ">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNtuEIlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
                </specification>
              </ownedRule>
              <ownedRule xmi:id="_4xNtuUIlEeG5UvLPSY8o7A" name="AssignedEntityId" constrainedElement="_tXX_EEIOEeGfG6GbxF_VQQ">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xNtukIlEeG5UvLPSY8o7A">
                  <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="_20Xd8EIOEeGfG6GbxF_VQQ">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
              </generalization>
            </nestedClassifier>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_NH9J4EIREeGfG6GbxF_VQQ" name="Author">
        <ownedComment xmi:id="_ocVxAEIlEeG5UvLPSY8o7A">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5Sl8gkIlEeG5UvLPSY8o7A" name="AuthorAssignedAuthor3" constrainedElement="_NH9J4EIREeGfG6GbxF_VQQ">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8g0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.assignedAuthor->one(assignedAuthor : cda::AssignedAuthor | not assignedAuthor.oclIsUndefined() and assignedAuthor.oclIsKindOf(cda::AssignedAuthor))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_POhNwEIREeGfG6GbxF_VQQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_Q-uAEEIREeGfG6GbxF_VQQ" name="AssignedAuthor3">
          <generalization xmi:id="_Uw3cAEIREeGfG6GbxF_VQQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_z2vcQEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5SvGYkIlEeG5UvLPSY8o7A" name="getAllergiesSection" isQuery="true" bodyCondition="_5SvGZUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SvGZUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SvGYkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGZkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))->asSequence()->first().oclAsType(consol::AllergiesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SvGY0IlEeG5UvLPSY8o7A" type="_2LMIwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SvGZEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5SvGaUIlEeG5UvLPSY8o7A" name="getMedicationsSection" isQuery="true" bodyCondition="_5SvGbEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SvGbEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SvGaUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGbUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSection))->asSequence()->first().oclAsType(consol::MedicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SvGakIlEeG5UvLPSY8o7A" type="_2NIpgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SvGa0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5SvGcEIlEeG5UvLPSY8o7A" name="getProblemSection" isQuery="true" bodyCondition="_5SvGc0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SvGc0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SvGcEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGdEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSection))->asSequence()->first().oclAsType(consol::ProblemSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SvGcUIlEeG5UvLPSY8o7A" type="_2LSPYBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SvGckIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5SvGd0IlEeG5UvLPSY8o7A" name="getProceduresSection" isQuery="true" bodyCondition="_5SvGekIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SvGekIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SvGd0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGe0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSection))->asSequence()->first().oclAsType(consol::ProceduresSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SvGeEIlEeG5UvLPSY8o7A" type="_2OAzQRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SvGeUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5SvGfkIlEeG5UvLPSY8o7A" name="getResultsSection" isQuery="true" bodyCondition="_5SvGgUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SvGgUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SvGfkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SvGgkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSection))->asSequence()->first().oclAsType(consol::ResultsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SvGf0IlEeG5UvLPSY8o7A" type="_2Js7AxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SvGgEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5S43YEIlEeG5UvLPSY8o7A" name="getAdvanceDirectivesSection" isQuery="true" bodyCondition="_5S43Y0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5S43Y0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5S43YEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43ZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))->asSequence()->first().oclAsType(consol::AdvanceDirectivesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5S43YUIlEeG5UvLPSY8o7A" type="_2KgzUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5S43YkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5S43Z0IlEeG5UvLPSY8o7A" name="getEncountersSection" isQuery="true" bodyCondition="_5S43akIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5S43akIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5S43Z0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43a0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::EncountersSection))->asSequence()->first().oclAsType(consol::EncountersSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5S43aEIlEeG5UvLPSY8o7A" type="_2LWg0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5S43aUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5S43bkIlEeG5UvLPSY8o7A" name="getFamilyHistorySection" isQuery="true" bodyCondition="_5S43cUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5S43cUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5S43bkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43ckIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->first().oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5S43b0IlEeG5UvLPSY8o7A" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5S43cEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5S43dUIlEeG5UvLPSY8o7A" name="getFunctionalStatusSection" isQuery="true" bodyCondition="_5S43eEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5S43eEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5S43dUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43eUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))->asSequence()->first().oclAsType(consol::FunctionalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5S43dkIlEeG5UvLPSY8o7A" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5S43d0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5S43fEIlEeG5UvLPSY8o7A" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_5S43f0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5S43f0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5S43fEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5S43gEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5S43fUIlEeG5UvLPSY8o7A" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5S43fkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5TCBUEIlEeG5UvLPSY8o7A" name="getMedicalEquipmentSection" isQuery="true" bodyCondition="_5TCBU0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5TCBU0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5TCBUEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBVEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))->asSequence()->first().oclAsType(consol::MedicalEquipmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5TCBUUIlEeG5UvLPSY8o7A" type="_2KEucBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TCBUkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5TCBV0IlEeG5UvLPSY8o7A" name="getPayersSection" isQuery="true" bodyCondition="_5TCBWkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5TCBWkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5TCBV0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBW0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PayersSection))->asSequence()->first().oclAsType(consol::PayersSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5TCBWEIlEeG5UvLPSY8o7A" type="_2MV_UBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TCBWUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5TCBXkIlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5TCBYUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5TCBYUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5TCBXkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBYkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5TCBX0IlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TCBYEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5TCBZUIlEeG5UvLPSY8o7A" name="getSocialHistorySection" isQuery="true" bodyCondition="_5TCBaEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5TCBaEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5TCBZUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBaUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->first().oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5TCBZkIlEeG5UvLPSY8o7A" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TCBZ0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5TCBbEIlEeG5UvLPSY8o7A" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_5TCBb0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5TCBb0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5TCBbEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5TCBcEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5TCBbUIlEeG5UvLPSY8o7A" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TCBbkIlEeG5UvLPSY8o7A" 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="_4xW3oUIlEeG5UvLPSY8o7A" name="FamilyHistorySectionTemplateId" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xW3okIlEeG5UvLPSY8o7A">
          <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="_4xW3pEIlEeG5UvLPSY8o7A" name="FamilyHistorySectionCode" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xW3pUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10157-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xW3pkIlEeG5UvLPSY8o7A" name="FamilyHistorySectionTitle" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xW3p0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xW3qEIlEeG5UvLPSY8o7A" name="FamilyHistorySectionText" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xW3qUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xW3qkIlEeG5UvLPSY8o7A" name="FamilyHistorySectionFamilyHistory" constrainedElement="_2IWQIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xW3q0IlEeG5UvLPSY8o7A">
          <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="_4xgooEIlEeG5UvLPSY8o7A" name="getFamilyHistories" isQuery="true" bodyCondition="_4xgoo0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4xgoo0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4xgooEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xgopEIlEeG5UvLPSY8o7A">
            <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="_4xgooUIlEeG5UvLPSY8o7A" type="_2IbIoBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4xgookIlEeG5UvLPSY8o7A" 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="_4xgopUIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerTemplateId" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xgopkIlEeG5UvLPSY8o7A">
          <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="_4xgoqEIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerClassCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xgoqUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xgoqkIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerMoodCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xgoq0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xgorEIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerStatusCode" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xgorUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yQPiUIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerFamilyHistoryObservation" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPikIlEeG5UvLPSY8o7A">
          <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="_5GhPVkIlEeG5UvLPSY8o7A" name="FamilyHistoryOrganizerSubject" constrainedElement="_2IbIoBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GhPV0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.subject->one(subject : cda::Subject | not subject.oclIsUndefined() and subject.oclIsKindOf(cda::Subject))</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="_4yQPi0IlEeG5UvLPSY8o7A" name="getFamilyHistoryObservations" isQuery="true" bodyCondition="_4yQPjkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4yQPjkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4yQPi0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPj0IlEeG5UvLPSY8o7A">
            <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="_4yQPjEIlEeG5UvLPSY8o7A" type="_2IpyIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4yQPjUIlEeG5UvLPSY8o7A" 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->select(er : cda::EntryRelationship | er.act.oclIsKindOf(consol::AgeObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4xgorkIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationTemplateId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4xpykEIlEeG5UvLPSY8o7A">
          <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="_4x9UkEIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationClassCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4x9UkUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4x9UkkIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationMoodCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4x9Uk0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yGegEIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationId" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yGegUIlEeG5UvLPSY8o7A">
          <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="_4yGegkIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yGeg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yGehEIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationStatusCode" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yGehUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yGehkIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationEffectiveTime" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yGeh0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yQPgEIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationValue" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yQPgkIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationAgeObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPg0IlEeG5UvLPSY8o7A">
          <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="_5B51FUIlEeG5UvLPSY8o7A" name="FamilyHistoryObservationFamilyHistoryDeathObservation" constrainedElement="_2IpyIxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51FkIlEeG5UvLPSY8o7A">
          <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="_4yQPhEIlEeG5UvLPSY8o7A" name="getAgeObservation" isQuery="true" bodyCondition="_4yQPh0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4yQPh0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4yQPhEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPiEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AgeObservation))->asSequence()->first().oclAsType(consol::AgeObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4yQPhUIlEeG5UvLPSY8o7A" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4yQPhkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5B51F0IlEeG5UvLPSY8o7A" name="getFamilyHistoryDeathObservation" isQuery="true" bodyCondition="_5B51GkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5B51GkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5B51F0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51G0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::FamilyHistoryDeathObservation))->asSequence()->first().oclAsType(consol::FamilyHistoryDeathObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5B51GEIlEeG5UvLPSY8o7A" type="_2SC-sBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5B51GUIlEeG5UvLPSY8o7A" 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="_4yQPkEIlEeG5UvLPSY8o7A" name="SocialHistorySectionTemplateId" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yQPkUIlEeG5UvLPSY8o7A">
          <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="_4yaAgEIlEeG5UvLPSY8o7A" name="SocialHistorySectionCode" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '29762-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yaAgkIlEeG5UvLPSY8o7A" name="SocialHistorySectionTitle" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yaAhEIlEeG5UvLPSY8o7A" name="SocialHistorySectionText" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAhUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yaAhkIlEeG5UvLPSY8o7A" name="SocialHistorySectionSocialHistoryObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAh0IlEeG5UvLPSY8o7A">
          <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="_5Cfq9EIlEeG5UvLPSY8o7A" name="SocialHistorySectionPregnancyObservation" constrainedElement="_2JKvgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PregnancyObservation))</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="_4yaAiEIlEeG5UvLPSY8o7A" name="getSocialHistoryObservations" isQuery="true" bodyCondition="_4yaAi0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4yaAi0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4yaAiEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAjEIlEeG5UvLPSY8o7A">
            <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="_4yaAiUIlEeG5UvLPSY8o7A" type="_2JOZ4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4yaAikIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Cfq9kIlEeG5UvLPSY8o7A" name="getPregnancyObservations" isQuery="true" bodyCondition="_5Cfq-UIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Cfq-UIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Cfq9kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq-kIlEeG5UvLPSY8o7A">
            <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="_5Cfq90IlEeG5UvLPSY8o7A" type="_2N6soBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Cfq-EIlEeG5UvLPSY8o7A" 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.getSection().text.getText(self.code.originalText.reference.value.substring(2, self.code.originalText.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yaAjUIlEeG5UvLPSY8o7A" name="SocialHistoryObservationTemplateId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yaAjkIlEeG5UvLPSY8o7A">
          <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="_4yjKcEIlEeG5UvLPSY8o7A" name="SocialHistoryObservationClassCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yjKcUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yjKckIlEeG5UvLPSY8o7A" name="SocialHistoryObservationMoodCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yjKc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4yjKdEIlEeG5UvLPSY8o7A" name="SocialHistoryObservationId" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yjKdUIlEeG5UvLPSY8o7A">
          <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="_4yjKdkIlEeG5UvLPSY8o7A" name="SocialHistoryObservationCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4yjKd0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and (value.code = '160573003' or value.code = '363908000' or value.code = '364703007' or value.code = '256235009' or value.code = '228272008' or value.code = '364393001' or value.code = '229819007' or value.code = '425400000')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ys7cEIlEeG5UvLPSY8o7A" name="SocialHistoryObservationStatusCode" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ys7cUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ys7ckIlEeG5UvLPSY8o7A" name="SocialHistoryObservationValue" constrainedElement="_2JOZ4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ys7c0IlEeG5UvLPSY8o7A">
          <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="_2JVHkhSVEeGGzu7fmW9pXw" name="SocialHistoryStatusObservation">
      <ownedRule xmi:id="_2JccURSVEeGGzu7fmW9pXw" name="SocialHistoryStatusObservationNoAdditionalParticipants">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2JccUhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2JdDYBSVEeGGzu7fmW9pXw" name="SocialHistoryStatusObservationNoAdditionalRelationships">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2JdDYRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->select(er|not er.observation.oclIsUndefined())->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4ys7dEIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationTemplateId" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4ys7dUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.56')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4y2FYEIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationClassCode" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y2FYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4y2FYkIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationMoodCode" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y2FY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4y2FZEIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationCode" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y2FZUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4y2FZkIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationStatusCode" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y2FZ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4y_2YEIlEeG5UvLPSY8o7A" name="SocialHistoryStatusObservationValue" constrainedElement="_2JVHkhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y_2YUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = element.oclAsType(datatypes::CE) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.1.11.20.17'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2JdqcBSVEeGGzu7fmW9pXw">
        <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="_4y_2Y0IlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y_2ZEIlEeG5UvLPSY8o7A">
          <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="_4y_2ZkIlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalCode" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4y_2Z0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zJnYEIlEeG5UvLPSY8o7A" name="ResultsSectionTitle" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zJnYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zJnYkIlEeG5UvLPSY8o7A" name="ResultsSectionText" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zJnY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GXeXkIlEeG5UvLPSY8o7A" name="ResultsSectionResultOrganizer" constrainedElement="_2Js7AxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeX0IlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_5GhPUEIlEeG5UvLPSY8o7A" name="getConsolResultOrganizers" isQuery="true" bodyCondition="_5GhPU0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GhPU0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GhPUEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GhPVEIlEeG5UvLPSY8o7A">
            <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="_5GhPUUIlEeG5UvLPSY8o7A" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GhPUkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2JxzgBSVEeGGzu7fmW9pXw" name="ResultOrganizer">
      <ownedComment xmi:id="_MrZPsCvWEeGz1sWhj323cg">
        <body>&lt;p>
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.
&lt;/p>

&lt;p>
An appropriate nullFlavor can be used when a single result observation is contained in the organizer, and organizer/code or organizer/id is unknown.
&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.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'</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="_4zJnZEIlEeG5UvLPSY8o7A" name="ResultOrganizerTemplateId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zJnZUIlEeG5UvLPSY8o7A">
          <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="_4zSxUEIlEeG5UvLPSY8o7A" name="ResultOrganizerId" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSxUUIlEeG5UvLPSY8o7A">
          <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="_4zSxUkIlEeG5UvLPSY8o7A" name="ResultOrganizerStatusCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSxU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zSxVEIlEeG5UvLPSY8o7A" name="ResultOrganizerCode" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSxVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zSxVkIlEeG5UvLPSY8o7A" name="ResultOrganizerResultObservation" constrainedElement="_2JxzgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSxV0IlEeG5UvLPSY8o7A">
          <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="_4zSxWEIlEeG5UvLPSY8o7A" name="getResultObservations" isQuery="true" bodyCondition="_4zSxW0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4zSxW0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4zSxWEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zSxXEIlEeG5UvLPSY8o7A">
            <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="_4zSxWUIlEeG5UvLPSY8o7A" type="_2J1d4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4zSxWkIlEeG5UvLPSY8o7A" 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.</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 not self.text.reference.value.oclIsUndefined()</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.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.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="_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="_4zciUEIlEeG5UvLPSY8o7A" name="ResultObservationTemplateId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zciUUIlEeG5UvLPSY8o7A">
          <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="_4zmTUEIlEeG5UvLPSY8o7A" name="ResultObservationId" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zmTUUIlEeG5UvLPSY8o7A">
          <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="_4zmTUkIlEeG5UvLPSY8o7A" name="ResultObservationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zmTU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zmTVEIlEeG5UvLPSY8o7A" name="ResultObservationText" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zmTVUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zmTVkIlEeG5UvLPSY8o7A" name="ResultObservationStatusCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zmTV0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zmTWEIlEeG5UvLPSY8o7A" name="ResultObservationEffectiveTime" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zmTWUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4zvdQEIlEeG5UvLPSY8o7A" name="ResultObservationValue" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zvdQUIlEeG5UvLPSY8o7A">
          <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="_4zvdQkIlEeG5UvLPSY8o7A" name="ResultObservationInterpretationCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zvdQ0IlEeG5UvLPSY8o7A">
          <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="_4zvdREIlEeG5UvLPSY8o7A" name="ResultObservationMethodCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zvdRUIlEeG5UvLPSY8o7A">
          <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="_4zvdRkIlEeG5UvLPSY8o7A" name="ResultObservationTargetSiteCode" constrainedElement="_2J1d4BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zvdR0IlEeG5UvLPSY8o7A">
          <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="_4zvdSEIlEeG5UvLPSY8o7A" name="MedicalEquipmentSectionTemplateId" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4zvdSUIlEeG5UvLPSY8o7A">
          <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="_4z5OQEIlEeG5UvLPSY8o7A" name="MedicalEquipmentSectionCode" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5OQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '46264-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4z5OQkIlEeG5UvLPSY8o7A" name="MedicalEquipmentSectionTitle" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5OQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4z5OREIlEeG5UvLPSY8o7A" name="MedicalEquipmentSectionText" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5ORUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4z5ORkIlEeG5UvLPSY8o7A" name="MedicalEquipmentSectionNonMedicinalSupplyActivity" constrainedElement="_2KEucBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5OR0IlEeG5UvLPSY8o7A">
          <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="_4z5OSEIlEeG5UvLPSY8o7A" name="getNonMedicinalSupplyActivities" isQuery="true" bodyCondition="_4z5OS0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4z5OS0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4z5OSEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5OTEIlEeG5UvLPSY8o7A">
            <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="_4z5OSUIlEeG5UvLPSY8o7A" type="_2HIvMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4z5OSkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KKOBhSVEeGGzu7fmW9pXw" name="FunctionalStatusSection">
      <ownedComment xmi:id="_2KTX8xSVEeGGzu7fmW9pXw" annotatedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    &lt;i>Functional Status&lt;/i> describes the patient's status of normal functioning at the time the Care Record&#xD;
    was created. Functional statuses include information regarding the patient relative to:&#xD;
&lt;/p>&#xD;
&#xD;
    &lt;ul>&lt;li>Ambulatory ability&lt;/li>&#xD;
       &lt;li>Mental status or competency&lt;/li>&#xD;
        &lt;li>Activities of Daily Living (ADLs), including bathing, dressing, feeding, grooming&lt;/li>&#xD;
        &lt;li>Home / living situation having an effect on the health status of the patient&lt;/li>&#xD;
        &lt;li>Ability to care for self&lt;/li>&#xD;
        &lt;li>Social activity, including issues with social cognition, participation with&#xD;
        friends and acquaintances other than family members&lt;/li>&#xD;
       &lt;li>Occupation activity, including activities partly or directly related to working, housework or volunteering, family&#xD;
        and home responsibilities or activities related to home and family&lt;/li>&#xD;
      &lt;li>Communication ability, including issues with speech, writing or cognition required for communication&lt;/li>&#xD;
       &lt;li> Perception, including sight, hearing, taste, skin sensation, kinesthetic sense, proprioception, or&#xD;
        balance&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Any&#xD;
    deviation from normal function that the patient displays and is recorded in the record should be included. Of&#xD;
    particular interest are those limitations that would in any way interfere with self care or the medical therapeutic&#xD;
    process. In addition, an improvement, any change in or noting that the patient has normal functioning status is also&#xD;
    valid for inclusion.&#xD;
&lt;/p>&#xD;
&lt;p>Functional Statuses can be expressed in 3 different forms. They can occur as a Problem, a Result or as text. Text can be employed if and only if the Functional Status is neither a Problem nor a Result. Functional Statuses expressed as Problems include relevant clinical conditions, diagnoses, symptoms and findings. Results are the interpretation or conclusion derived from a clinical assessment or test battery, such as the Instrumental Activities of Daily Living (IADL) scale or the Functional Status Index (FSI).&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_4z5OTUIlEeG5UvLPSY8o7A" name="FunctionalStatusSectionTemplateId" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4z5OTkIlEeG5UvLPSY8o7A">
          <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="_40CYMEIlEeG5UvLPSY8o7A" name="FunctionalStatusSectionCode" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40CYMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '47420-5' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40CYMkIlEeG5UvLPSY8o7A" name="FunctionalStatusSectionTitle" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40CYM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40CYNEIlEeG5UvLPSY8o7A" name="FunctionalStatusSectionText" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40CYNUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5B51HEIlEeG5UvLPSY8o7A" name="FunctionalStatusSectionProblemObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51HUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ProblemObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5B51I0IlEeG5UvLPSY8o7A" name="FunctionalStatusSectionResultObservation" constrainedElement="_2KKOBhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51JEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::ResultObservation))</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="_5B51HkIlEeG5UvLPSY8o7A" name="getProblemObservation" isQuery="true" bodyCondition="_5B51IUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5B51IUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5B51HkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51IkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation))->asSequence()->first().oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5B51H0IlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5B51IEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5B51JUIlEeG5UvLPSY8o7A" name="getResultObservation" isQuery="true" bodyCondition="_5B51KEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5B51KEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5B51JUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51KUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ResultObservation))->asSequence()->first().oclAsType(consol::ResultObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5B51JkIlEeG5UvLPSY8o7A" type="_2J1d4BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5B51J0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KVNIBSVEeGGzu7fmW9pXw" name="PurposeSection">
      <ownedComment xmi:id="_2KVNIRSVEeGGzu7fmW9pXw" annotatedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    Represents the specific reason for which the summarization was generated, such as in response to a&#xD;
    request.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The general use case does not require a purpose. Purpose should be utilized when the CCD has a specific&#xD;
    purpose such as a transfer, referral, or patient request.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_40CYNkIlEeG5UvLPSY8o7A" name="PurposeSectionTemplateId" constrainedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40CYN0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.13')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40MJMEIlEeG5UvLPSY8o7A" name="PurposeSectionCode" constrainedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '48764-5' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40MJMkIlEeG5UvLPSY8o7A" name="PurposeSectionTitle" constrainedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40MJNEIlEeG5UvLPSY8o7A" name="PurposeSectionText" constrainedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJNUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40MJNkIlEeG5UvLPSY8o7A" name="PurposeSectionPurposeActivity" constrainedElement="_2KVNIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJN0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->exists(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PurposeActivity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2KflMBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qIf_wDxXEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_40MJOEIlEeG5UvLPSY8o7A" name="getPurposeActivities" isQuery="true" bodyCondition="_40MJO0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_40MJO0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_40MJOEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJPEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PurposeActivity)).oclAsType(consol::PurposeActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_40MJOUIlEeG5UvLPSY8o7A" type="_2KZekBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_40MJOkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KZekBSVEeGGzu7fmW9pXw" name="PurposeActivity">
      <ownedComment xmi:id="_2KZekRSVEeGGzu7fmW9pXw" annotatedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    CCD represents the ASTM CCR &amp;lt;Purpose&amp;gt; object as a relationship between two classes -- the source&#xD;
    represents the act of creating a summary document, the target is the reason for creating the document, and the&#xD;
    relationship type is &quot;RSON&quot; (has reason). The target act may be an Observation, Procedure, or some other kind of act,&#xD;
    and it may represent an order, an event, etc.&#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_2KZekhSVEeGGzu7fmW9pXw" name="PurposeActivityHasReason" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2KZekxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | &#xD;&#xA;  entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2KZelBSVEeGGzu7fmW9pXw" name="PurposeActivityReasonType" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2KZelRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->forAll(entryRelationship : cda::EntryRelationship |&#xD;&#xA;  entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::RSON implies( &#xD;&#xA;  not (entryRelationship.act.oclIsUndefined() and entryRelationship.encounter.oclIsUndefined()&#xD;&#xA;       and entryRelationship.observation.oclIsUndefined() and entryRelationship.procedure.oclIsUndefined()&#xD;&#xA;       and entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.supply.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40MJPUIlEeG5UvLPSY8o7A" name="PurposeActivityTemplateId" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40MJPkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.30')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40V6MEIlEeG5UvLPSY8o7A" name="PurposeActivityClassCode" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40V6MUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40V6MkIlEeG5UvLPSY8o7A" name="PurposeActivityMoodCode" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40V6M0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40V6NEIlEeG5UvLPSY8o7A" name="PurposeActivityCode" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40V6NUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '23745001' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40fEIEIlEeG5UvLPSY8o7A" name="PurposeActivityStatusCode" constrainedElement="_2KZekBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40fEIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Ke-IBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KgzUBSVEeGGzu7fmW9pXw" name="AdvanceDirectivesSection">
      <ownedRule xmi:id="_40fEI0IlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40fEJEIlEeG5UvLPSY8o7A">
          <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="_40fEJkIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40fEJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40fEKEIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionTitle" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40fEKUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40o1IEIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionText" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40o1IUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40o1IkIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionAdvanceDirectiveObservation" constrainedElement="_2KgzUBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40o1I0IlEeG5UvLPSY8o7A">
          <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="_40o1JEIlEeG5UvLPSY8o7A" name="getConsolAdvanceDirectiveObservations" isQuery="true" bodyCondition="_40o1J0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_40o1J0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_40o1JEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_40o1KEIlEeG5UvLPSY8o7A">
            <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="_40o1JUIlEeG5UvLPSY8o7A" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_40o1JkIlEeG5UvLPSY8o7A" 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="_40o1KUIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationTemplateId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40o1KkIlEeG5UvLPSY8o7A">
          <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="_40o1LEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40o1LUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40ymIEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationMoodCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40ymIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40ymIkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40ymI0IlEeG5UvLPSY8o7A">
          <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="_40ymJEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40ymJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_40ymJkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationStatusCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_40ymJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_407wEEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationEffectiveTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_407wEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H3TIEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationVerifier" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H3TJkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodian" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TJ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5H3TKEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationReference" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TKUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.reference->exists(reference : cda::Reference | not reference.oclIsUndefined() and reference.oclIsKindOf(cda::Reference))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U-iEEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationVerifierTime" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U-iEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::VRF)->select(not oclIsUndefined())->forAll((time.oclIsUndefined() or time.isNullFlavorUndefined()) implies (not time.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U-iEkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationVerifierTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U-iE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::VRF)->select(not oclIsUndefined())->forAll(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5U-iFEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationVerifierParticipantRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5U-iFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::VRF)->select(not oclIsUndefined())->forAll(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsAEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST).participantRole.playingEntity->select(not oclIsUndefined())->forAll((name->isEmpty() or name->exists(element | element.isNullFlavorUndefined())) implies (not name->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsAkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianCustodianRoleAddr" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST).participantRole->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (not addr->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsBEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianCustodianRoleClassCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST).participantRole->select(not oclIsUndefined())->forAll(classCode=vocab::RoleClassRoot::ROL)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsBkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianCustodianRoleTelecom" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsB0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST).participantRole->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (not telecom->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsCEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsCUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST).participantRole->select(not oclIsUndefined())->forAll(playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsCkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianTypeCode" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsC0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST)->select(not oclIsUndefined())->forAll(typeCode=vocab::ParticipationType::CST)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsDEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsDUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::CST)->select(not oclIsUndefined())->forAll(participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsDkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationReferenceExternalDocumentId" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsD0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.reference.externalDocument->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsEEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationReferenceExternalDocumentText" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.reference.externalDocument->select(not oclIsUndefined())->forAll((text.oclIsUndefined() or text.isNullFlavorUndefined()) implies (not text.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VHsEkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveObservationReferenceExternalDocument" constrainedElement="_2KlEwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VHsE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.reference->select(not oclIsUndefined())->forAll(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>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_N9j54CsgEeGQ5rkpDKAt8A" name="Reference">
        <ownedComment xmi:id="_EPFBMDJZEeGpkfTDauvIVQ">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5H3TKkIlEeG5UvLPSY8o7A" name="ReferenceExternalDocument" constrainedElement="_N9j54CsgEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TK0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.externalDocument->one(externalDocument : cda::ExternalDocument | not externalDocument.oclIsUndefined() and externalDocument.oclIsKindOf(cda::ExternalDocument))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_N9kg8CsgEeGQ5rkpDKAt8A">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NDnXkEcIEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_TrqsMCsgEeGQ5rkpDKAt8A" name="ExternalDocument">
          <ownedRule xmi:id="_407wE0IlEeG5UvLPSY8o7A" name="ExternalDocumentId" constrainedElement="_TrqsMCsgEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_407wFEIlEeG5UvLPSY8o7A">
              <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="_407wFkIlEeG5UvLPSY8o7A" name="ExternalDocumentText" constrainedElement="_TrqsMCsgEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_407wF0IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_TrqsMSsgEeGQ5rkpDKAt8A">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_gRO4cEcHEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_xSLI8CseEeGQ5rkpDKAt8A" name="Custodian">
        <ownedComment xmi:id="_CQRaECslEeGQ5rkpDKAt8A">
          <body>INLINE&amp;typeCode=vocab::ParticipationType::CST</body>
        </ownedComment>
        <ownedRule xmi:id="_407wGUIlEeG5UvLPSY8o7A" name="CustodianTypeCode" constrainedElement="_xSLI8CseEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_407wGkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.typeCode=vocab::ParticipationType::CST</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_5H3TIkIlEeG5UvLPSY8o7A" name="CustodianAdvanceDirectiveObservationCustodianRole" constrainedElement="_xSLI8CseEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TI0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_xSLwACseEeGQ5rkpDKAt8A">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_51DLwEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_4vBVACseEeGQ5rkpDKAt8A" name="CustodianRole">
          <ownedRule xmi:id="_41FhEEIlEeG5UvLPSY8o7A" name="CustodianRoleAddr" constrainedElement="_4vBVACseEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhEUIlEeG5UvLPSY8o7A">
              <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="_41FhE0IlEeG5UvLPSY8o7A" name="CustodianRoleClassCode" constrainedElement="_4vBVACseEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhFEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.classCode=vocab::RoleClassRoot::ROL</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_41FhFUIlEeG5UvLPSY8o7A" name="CustodianRoleTelecom" constrainedElement="_4vBVACseEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhFkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (not self.telecom->isEmpty())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5H3TJEIlEeG5UvLPSY8o7A" name="CustodianRolePlayingEntity" constrainedElement="_4vBVACseEeGQ5rkpDKAt8A">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TJUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_4vB8ECseEeGQ5rkpDKAt8A">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="__8j5wCseEeGQ5rkpDKAt8A" name="CustodianEntity">
            <ownedRule xmi:id="_41FhF0IlEeG5UvLPSY8o7A" name="CustodianEntityName" constrainedElement="__8j5wCseEeGQ5rkpDKAt8A">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhGEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name->isEmpty() or self.name->exists(element | element.isNullFlavorUndefined())) implies (not self.name->isEmpty())</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="__8j5wSseEeGQ5rkpDKAt8A">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_Lr9i8EcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_9HiC0CsdEeGQ5rkpDKAt8A" name="Verifier">
        <ownedComment xmi:id="_FcCygCslEeGQ5rkpDKAt8A">
          <body>INLINE&amp;typeCode=vocab::ParticipationType::VRF</body>
        </ownedComment>
        <ownedRule xmi:id="_41FhGkIlEeG5UvLPSY8o7A" name="VerifierTime" constrainedElement="_9HiC0CsdEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhG0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_41FhHUIlEeG5UvLPSY8o7A" name="VerifierTypeCode" constrainedElement="_9HiC0CsdEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhHkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>isDefined('typeCode')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="_5HtiL0IlEeG5UvLPSY8o7A" name="VerifierParticipantRole" constrainedElement="_9HiC0CsdEeGQ5rkpDKAt8A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiMEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(rim::Role))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_9HiC0SsdEeGQ5rkpDKAt8A">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_51DLwEcZEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2KxSABSVEeGGzu7fmW9pXw" name="AdvanceDirectiveVerification">
      <ownedRule xmi:id="_41FhH0IlEeG5UvLPSY8o7A" name="AdvanceDirectiveVerificationTemplateId" constrainedElement="_2KxSABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41FhIEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.58')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41OrAUIlEeG5UvLPSY8o7A" name="AdvanceDirectiveVerificationTypeCode" constrainedElement="_2KxSABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41OrAkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.typeCode=vocab::ParticipationType::VRF</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41OrA0IlEeG5UvLPSY8o7A" name="AdvanceDirectiveVerificationTime" constrainedElement="_2KxSABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41OrBEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2KzHMxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_51DLwEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2K0VUxSVEeGGzu7fmW9pXw" name="AdvanceDirectiveStatusObservation">
      <ownedRule xmi:id="_2K6b8RSVEeGGzu7fmW9pXw" name="AdvanceDirectiveStatusObservationNoAdditionalParticipants">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2K6b8hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2K7DABSVEeGGzu7fmW9pXw" name="AdvanceDirectiveStatusObservationNoAdditionalRelationships">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2K7DARSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->select(er|not er.observation.oclIsUndefined())->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41OrBUIlEeG5UvLPSY8o7A" name="AdvanceDirectiveStatusObservationTemplateId" constrainedElement="_2K0VUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41OrBkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.37')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41OrCEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveStatusObservationClassCode" constrainedElement="_2K0VUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41OrCUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41YcAEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveStatusObservationMoodCode" constrainedElement="_2K0VUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41YcAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41YcAkIlEeG5UvLPSY8o7A" name="AdvanceDirectiveStatusObservationCode" constrainedElement="_2K0VUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41YcA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41YcBEIlEeG5UvLPSY8o7A" name="AdvanceDirectiveStatusObservationStatusCode" constrainedElement="_2K0VUxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41YcBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2K7qEBSVEeGGzu7fmW9pXw">
        <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="_41iNAUIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41iNAkIlEeG5UvLPSY8o7A">
          <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="_41iNBEIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41iNBUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41iNBkIlEeG5UvLPSY8o7A" name="AllergiesSectionTitle" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41iNB0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41iNCEIlEeG5UvLPSY8o7A" name="AllergiesSectionText" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41iNCUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41rW8EIlEeG5UvLPSY8o7A" name="AllergiesSectionAllergyDrugSensitivity" constrainedElement="_2LMIwBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41rW8UIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_41rW8kIlEeG5UvLPSY8o7A" name="getAllergyDrugSensitivities" isQuery="true" bodyCondition="_41rW9UIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_41rW9UIlEeG5UvLPSY8o7A" name="body" constrainedElement="_41rW8kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_41rW9kIlEeG5UvLPSY8o7A">
            <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="_41rW80IlEeG5UvLPSY8o7A" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_41rW9EIlEeG5UvLPSY8o7A" 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="_41rW-EIlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41rW-UIlEeG5UvLPSY8o7A">
          <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="_5BdJIEIlEeG5UvLPSY8o7A" name="ProblemSectionProblemConcern" constrainedElement="_2LSPYBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJIUIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_5BdJIkIlEeG5UvLPSY8o7A" name="getConsolProblemConcerns" isQuery="true" bodyCondition="_5BdJJUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5BdJJUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5BdJIkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJJkIlEeG5UvLPSY8o7A">
            <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="_5BdJI0IlEeG5UvLPSY8o7A" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5BdJJEIlEeG5UvLPSY8o7A" 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="_41rW_EIlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41rW_UIlEeG5UvLPSY8o7A">
          <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="_5I50_EIlEeG5UvLPSY8o7A" name="EncountersSectionEncounterActivities" constrainedElement="_2LWg0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I50_UIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_5I50_kIlEeG5UvLPSY8o7A" name="getConsolEncounterActivitiess" isQuery="true" bodyCondition="_5I51AUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5I51AUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5I50_kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I51AkIlEeG5UvLPSY8o7A">
            <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="_5I50_0IlEeG5UvLPSY8o7A" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5I51AEIlEeG5UvLPSY8o7A" 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 self.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="_ktatYCwaEeGKLc4ckmfDag" name="EncounterActivitiesCodeOriginalTextReferenceValue" constrainedElement="_fTZ7wCwaEeGKLc4ckmfDag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_m7qtoCwaEeGKLc4ckmfDag">
          <language>OCL</language>
          <body>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="_41rW_0IlEeG5UvLPSY8o7A" name="EncounterActivitiesTemplateId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41rXAEIlEeG5UvLPSY8o7A">
          <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="_411H8EIlEeG5UvLPSY8o7A" name="EncounterActivitiesClassCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_411H8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_411H8kIlEeG5UvLPSY8o7A" name="EncounterActivitiesMoodCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_411H80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentEncounterMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_411H9EIlEeG5UvLPSY8o7A" name="EncounterActivitiesId" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_411H9UIlEeG5UvLPSY8o7A">
          <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="_411H9kIlEeG5UvLPSY8o7A" name="EncounterActivitiesCode" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_411H90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.12' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41-48EIlEeG5UvLPSY8o7A" name="EncounterActivitiesEffectiveTime" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41-48UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_41-48kIlEeG5UvLPSY8o7A" name="EncounterActivitiesServiceDeliveryLocation" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41-480IlEeG5UvLPSY8o7A">
          <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="_5BwEIEIlEeG5UvLPSY8o7A" name="EncounterActivitiesIndication" constrainedElement="_2LayQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEIUIlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_2LttMBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_41-49EIlEeG5UvLPSY8o7A" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_41-490IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_41-490IlEeG5UvLPSY8o7A" name="body" constrainedElement="_41-49EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_41-4-EIlEeG5UvLPSY8o7A">
            <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="_41-49UIlEeG5UvLPSY8o7A" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_41-49kIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5B51EEIlEeG5UvLPSY8o7A" name="getIndications" isQuery="true" bodyCondition="_5B51E0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5B51E0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5B51EEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51FEIlEeG5UvLPSY8o7A">
            <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="_5B51EUIlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5B51EkIlEeG5UvLPSY8o7A" 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() > 0</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="_41-4-UIlEeG5UvLPSY8o7A" name="ServiceDeliveryLocationTemplateId" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_41-4-kIlEeG5UvLPSY8o7A">
          <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="_42IC4EIlEeG5UvLPSY8o7A" name="ServiceDeliveryLocationCode" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42IC4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42IC4kIlEeG5UvLPSY8o7A" name="ServiceDeliveryLocationAddr" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42IC40IlEeG5UvLPSY8o7A">
          <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="_42IC5EIlEeG5UvLPSY8o7A" name="ServiceDeliveryLocationTelecom" constrainedElement="_2LiHABSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42IC5UIlEeG5UvLPSY8o7A">
          <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="_2Lu7UBSVEeGGzu7fmW9pXw" name="Encounter">
      <ownedComment xmi:id="_2Lu7URSVEeGGzu7fmW9pXw" annotatedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <body>The encounter entry contains data describing the interactions between the patient and clinicians. Interaction includes both in-person and non-in-person encounters such as telephone and e-mail communication.</body>
      </ownedComment>
      <ownedRule xmi:id="_2Lu7UhSVEeGGzu7fmW9pXw" name="ConsolEncounterAdmissionSourceValueSet" constrainedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Lu7UxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->select( par : cda::Participant2 | par.typeCode = vocab::ParticipationType::ORG )->forAll( par : cda::Participant2 | par.participantRole->one(pr : cda::ParticipantRole | pr.code.codeSystem = '2.16.840.1.113883.3.88.12.80.33') )</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42Rz4EIlEeG5UvLPSY8o7A" name="ConsolEncounterClassCode" constrainedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Rz4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClass::ENC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42Rz4kIlEeG5UvLPSY8o7A" name="ConsolEncounterId" constrainedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Rz40IlEeG5UvLPSY8o7A">
          <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="_42Rz5EIlEeG5UvLPSY8o7A" name="ConsolEncounterCode" constrainedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Rz5UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.12' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42Rz5kIlEeG5UvLPSY8o7A" name="ConsolEncounterText" constrainedElement="_2Lu7UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Rz50IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2L23IBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2L7voBSVEeGGzu7fmW9pXw" name="ImmunizationsSection">
      <ownedRule xmi:id="_42Rz6EIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42Rz6UIlEeG5UvLPSY8o7A">
          <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="_42a90UIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42a90kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42a900IlEeG5UvLPSY8o7A" name="ImmunizationsSectionTitle" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42a91EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42a91UIlEeG5UvLPSY8o7A" name="ImmunizationsSectionText" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42a91kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42a910IlEeG5UvLPSY8o7A" name="ImmunizationsSectionImmunization" constrainedElement="_2L7voBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42a92EIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_42a92UIlEeG5UvLPSY8o7A" name="getImmunizations" isQuery="true" bodyCondition="_42ku0EIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_42ku0EIlEeG5UvLPSY8o7A" name="body" constrainedElement="_42a92UIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ku0UIlEeG5UvLPSY8o7A">
            <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="_42a92kIlEeG5UvLPSY8o7A" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_42a920IlEeG5UvLPSY8o7A" 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="_42ku0kIlEeG5UvLPSY8o7A" name="ImmunizationActivityTemplateId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ku00IlEeG5UvLPSY8o7A">
          <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="_42ku1UIlEeG5UvLPSY8o7A" name="ImmunizationActivityClassCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ku1kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42ku10IlEeG5UvLPSY8o7A" name="ImmunizationActivityId" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ku2EIlEeG5UvLPSY8o7A">
          <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="_42ku2UIlEeG5UvLPSY8o7A" name="ImmunizationActivityCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42ku2kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42uf0EIlEeG5UvLPSY8o7A" name="ImmunizationActivityStatusCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42uf0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42uf0kIlEeG5UvLPSY8o7A" name="ImmunizationActivityEffectiveTime" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42uf00IlEeG5UvLPSY8o7A">
          <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="_42uf1EIlEeG5UvLPSY8o7A" name="ImmunizationActivityRouteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42uf1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.routeCode.oclIsUndefined() or self.routeCode.isNullFlavorUndefined()) implies (self.routeCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.routeCode.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_42uf1kIlEeG5UvLPSY8o7A" name="ImmunizationActivityApproachSiteCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_42uf10IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.approachSiteCode->isEmpty() or self.approachSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.approachSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_423pwEIlEeG5UvLPSY8o7A" name="ImmunizationActivityDoseQuantity" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_423pwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.doseQuantity.oclIsUndefined() or self.doseQuantity.isNullFlavorUndefined()) implies (not self.doseQuantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_423pwkIlEeG5UvLPSY8o7A" name="ImmunizationActivityNegationInd" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_423pw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_423pxEIlEeG5UvLPSY8o7A" name="ImmunizationActivityText" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_423pxUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_423pxkIlEeG5UvLPSY8o7A" name="ImmunizationActivityRepeatNumber" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_423px0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_423pyEIlEeG5UvLPSY8o7A" name="ImmunizationActivityAdministrationUnitCode" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_423pyUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.administrationUnitCode.oclIsUndefined() or self.administrationUnitCode.isNullFlavorUndefined()) implies (self.administrationUnitCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.administrationUnitCode.oclAsType(datatypes::CE) in (&#xD;&#xA;not value.codeSystem.oclIsUndefined() or not value.codeSystemName.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5B51KkIlEeG5UvLPSY8o7A" name="ImmunizationActivityDrugVehicle" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51K0IlEeG5UvLPSY8o7A">
          <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="_5B51MUIlEeG5UvLPSY8o7A" name="ImmunizationActivityIndication" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51MkIlEeG5UvLPSY8o7A">
          <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="_5CC_BUIlEeG5UvLPSY8o7A" name="ImmunizationActivityInstructions" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_BkIlEeG5UvLPSY8o7A">
          <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="_5CC_DEIlEeG5UvLPSY8o7A" name="ImmunizationActivityMedicationDispense" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_DUIlEeG5UvLPSY8o7A">
          <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="_5CC_E0IlEeG5UvLPSY8o7A" name="ImmunizationActivityReactionObservation" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_FEIlEeG5UvLPSY8o7A">
          <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="_5CC_GkIlEeG5UvLPSY8o7A" name="ImmunizationActivityPrecondition" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_G0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.precondition->one(precondition : cda::Precondition | not precondition.oclIsUndefined() and precondition.oclIsKindOf(consol::PreconditionForSubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5CV58kIlEeG5UvLPSY8o7A" name="ImmunizationActivityImmunizationRefusalReason" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CV580IlEeG5UvLPSY8o7A">
          <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="_5Cfq8kIlEeG5UvLPSY8o7A" name="ImmunizationActivityConsumable" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.consumable->one(consumable : cda::Consumable | not consumable.oclIsUndefined() and consumable.oclIsKindOf(consol::ImmunizationMedicationInformation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EbkrEIlEeG5UvLPSY8o7A" name="ImmunizationActivityPerformer" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EbkrUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FCBnkIlEeG5UvLPSY8o7A" name="ImmunizationActivityMedicationSupplyOrder" constrainedElement="_2MAoIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBn0IlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_2MQfwxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nazskEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_5B51LEIlEeG5UvLPSY8o7A" name="getDrugVehicle" isQuery="true" bodyCondition="_5B51L0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5B51L0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5B51LEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5B51MEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(consol::DrugVehicle))->asSequence()->first().oclAsType(consol::DrugVehicle)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5B51LUIlEeG5UvLPSY8o7A" type="_VBXq8BUTEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5B51LkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5CC_AEIlEeG5UvLPSY8o7A" name="getIndication" isQuery="true" bodyCondition="_5CC_A0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5CC_A0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5CC_AEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_BEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication))->asSequence()->first().oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5CC_AUIlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5CC_AkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5CC_B0IlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_5CC_CkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5CC_CkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5CC_B0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_C0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5CC_CEIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5CC_CUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5CC_DkIlEeG5UvLPSY8o7A" name="getMedicationDispense" isQuery="true" bodyCondition="_5CC_EUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5CC_EUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5CC_DkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_EkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationDispense))->asSequence()->first().oclAsType(consol::MedicationDispense)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5CC_D0IlEeG5UvLPSY8o7A" type="_DpoGkBUUEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5CC_EEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5CC_FUIlEeG5UvLPSY8o7A" name="getReactionObservation" isQuery="true" bodyCondition="_5CC_GEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5CC_GEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5CC_FUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_GUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ReactionObservation))->asSequence()->first().oclAsType(consol::ReactionObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5CC_FkIlEeG5UvLPSY8o7A" type="_2E_aIRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5CC_F0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5CV59EIlEeG5UvLPSY8o7A" name="getImmunizationRefusalReason" isQuery="true" bodyCondition="_5CV590IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5CV590IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5CV59EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CV5-EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ImmunizationRefusalReason))->asSequence()->first().oclAsType(consol::ImmunizationRefusalReason)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5CV59UIlEeG5UvLPSY8o7A" type="__qYdcBVNEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5CV59kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FCBoEIlEeG5UvLPSY8o7A" name="getMedicationSupplyOrder" isQuery="true" bodyCondition="_5FCBo0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FCBo0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FCBoEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBpEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder))->asSequence()->first().oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5FCBoUIlEeG5UvLPSY8o7A" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FCBokIlEeG5UvLPSY8o7A" 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="_43BawEIlEeG5UvLPSY8o7A" name="PayersSectionTemplateId" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43BawUIlEeG5UvLPSY8o7A">
          <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="_43Baw0IlEeG5UvLPSY8o7A" name="PayersSectionCode" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43BaxEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43BaxUIlEeG5UvLPSY8o7A" name="PayersSectionTitle" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43BaxkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43Bax0IlEeG5UvLPSY8o7A" name="PayersSectionText" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43BayEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5A2sOUIlEeG5UvLPSY8o7A" name="PayersSectionCoverageActivity" constrainedElement="_2MV_UBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sOkIlEeG5UvLPSY8o7A">
          <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="_5A2sO0IlEeG5UvLPSY8o7A" name="getCoverageActivities" isQuery="true" bodyCondition="_5A2sPkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5A2sPkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5A2sO0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sP0IlEeG5UvLPSY8o7A">
            <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="_5A2sPEIlEeG5UvLPSY8o7A" type="_Cg3pkBUmEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5A2sPUIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Ma30BSVEeGGzu7fmW9pXw" name="InsuranceProvider">
      <ownedRule xmi:id="_2NBUwxSVEeGGzu7fmW9pXw" name="InsuranceProviderInformationSource">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2NBUxBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.informant->isEmpty() &#xD;&#xA;  or not self.getSection().informant->isEmpty()&#xD;&#xA;  or not self.getClinicalDocument().informant->isEmpty()&#xD;&#xA;  or self.reference->exists(ref : cda::Reference | ref.typeCode = vocab::x_ActRelationshipExternalReference::XCRPT)&#xD;&#xA;  or (self.entryRelationship->exists(rel : cda::EntryRelationship | &#xD;&#xA;   rel.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR&#xD;&#xA;   and rel.observation.code.code = '48766-0'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2NB70BSVEeGGzu7fmW9pXw" name="InsuranceProviderSequenceNumber">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2NB70RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->exists(rel : cda::EntryRelationship | not rel.sequenceNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma30xSVEeGGzu7fmW9pXw" name="InsuranceProviderPaymentProviders">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma31BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->exists(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma31RSVEeGGzu7fmW9pXw" name="InsuranceProviderPayerEntryID">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma31hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | not a.id.root->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma31xSVEeGGzu7fmW9pXw" name="InsuranceProviderHealthInsuranceType" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma32BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.code.codeSystem = '2.16.840.1.113883.6.255.1336' and (a.code.code='12' or a.code.code='13' or a.code.code='14' or a.code.code='15' or a.code.code='16' or a.code.code='41' or a.code.code='42' or a.code.code='43' or a.code.code='47' or a.code.code='AP' or a.code.code='C1' or a.code.code='CO' or a.code.code='CP' or a.code.code='D' or a.code.code='DB' or a.code.code='EP' or a.code.code='FF' or a.code.code='GP' or a.code.code='HM' or a.code.code='HN' or a.code.code='HS' or a.code.code='IN' or a.code.code='IP' or a.code.code='LC' or a.code.code='LD' or a.code.code='LI' or a.code.code='LT' or a.code.code='MA' or a.code.code='MB' or a.code.code='MC' or a.code.code='MH' or a.code.code='MI' or a.code.code='MP' or a.code.code='OT' or a.code.code='PE' or a.code.code='PL' or a.code.code='PP' or a.code.code='PR' or a.code.code='PS' or a.code.code='QM' or a.code.code='RP' or a.code.code='SP' or a.code.code='TF' or a.code.code='WC' or a.code.code='WU'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma32RSVEeGGzu7fmW9pXw" name="InsuranceProviderInsuranceInformation" constrainedElement="_2Ma32xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma32hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists (perm : cda::Performer2 | perm.typeCode = vocab::ParticipationPhysicalPerformer::PRF and perm.assignedEntity->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma32xSVEeGGzu7fmW9pXw" name="InsuranceProviderInsuranceInfoSourceID" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma33BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists (perm : cda::Performer2 | perm.typeCode = vocab::ParticipationPhysicalPerformer::PRF and perm.assignedEntity.id->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma33RSVEeGGzu7fmW9pXw" name="InsuranceProviderInsuranceInfoSourceAddr" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma33hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists (perm : cda::Performer2 | perm.typeCode = vocab::ParticipationPhysicalPerformer::PRF and perm.assignedEntity.addr->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma35RSVEeGGzu7fmW9pXw" name="InsuranceProviderHealthPlanCoverageStartTime" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma35hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.time.low->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma35xSVEeGGzu7fmW9pXw" name="InsuranceProviderHealthPlanCoverageStopTime" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma36BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.time.high->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma36RSVEeGGzu7fmW9pXw" name="InsuranceProviderPatientInformation">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma36hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma36xSVEeGGzu7fmW9pXw" name="InsuranceProviderMemberId" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma37BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT and par.participantRole.id->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma37RSVEeGGzu7fmW9pXw" name="InsuranceProviderMemberIdRoot" constrainedElement="_2Ma36xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma37hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT and par.participantRole.id.root->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma38xSVEeGGzu7fmW9pXw" name="InsuranceProviderRelationshipToSubscriber" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma39BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT and par.participantRole.code->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma39RSVEeGGzu7fmW9pXw" name="InsuranceProviderRelationshipToSubscriberCodeSystem" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma39hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT and par.participantRole.code.codeSystem = '2.16.840.1.113883.5.111' and (par.participantRole.code.code = 'FAMDEP' or par.participantRole.code.code='HANDIC' or par.participantRole.code.code ='INJ' or par.participantRole.code.code='SELF' or par.participantRole.code.code='SPON' or par.participantRole.code.code ='STUD' or par.participantRole.code.code='FSTUD' or par.participantRole.code.code='PSTUD')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma3_RSVEeGGzu7fmW9pXw" name="InsuranceProviderPatientName">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma3_hSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists (par : cda::Participant2 | par.typeCode = vocab::ParticipationType::COV and par.participantRole.classCode = vocab::RoleClassRoot::PAT and par.participantRole.playingEntity.name->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4ARSVEeGGzu7fmW9pXw" name="InsuranceProviderSubscriberInformation" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4AhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists(par : cda::Participant2 | par.typeCode = vocab::ParticipationType::HLD))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4BRSVEeGGzu7fmW9pXw" name="InsuranceProviderSubscriberId" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4BhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists(par : cda::Participant2 | par.typeCode = vocab::ParticipationType::HLD and par.participantRole.id->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4BxSVEeGGzu7fmW9pXw" name="InsuranceProviderSubscriberIdRoot" constrainedElement="_2Ma4BRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4CBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists(par : cda::Participant2 | par.typeCode = vocab::ParticipationType::HLD and par.participantRole.id.root->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4CRSVEeGGzu7fmW9pXw" name="InsuranceProviderSubscriberAddress" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4ChSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.participant->exists(par : cda::Participant2 | par.typeCode = vocab::ParticipationType::HLD and par.participantRole.addr->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4ExSVEeGGzu7fmW9pXw" name="InsuranceProviderFinancialResponsibilityPartyType" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4FBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists(per : cda::Performer2 | per.typeCode = vocab::ParticipationPhysicalPerformer::PRF and per.assignedEntity.code->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4FRSVEeGGzu7fmW9pXw" name="InsuranceProviderFinancialResponsibilityPartyTypeCode" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4FhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists(per : cda::Performer2 | per.assignedEntity.code.codeSystem = '2.16.840.1.113883.5.110'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Ma4GxSVEeGGzu7fmW9pXw" name="InsuranceProviderFinancialResponsibilityPartyAddress">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Ma4HBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.getActs()->select(act : cda::Act | act.oclIsKindOf(consol::PayerEntry))->forAll(a : cda::Act | a.performer->exists(per : cda::Performer2 | per.assignedEntity.addr->size() > 0))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43eGsEIlEeG5UvLPSY8o7A" name="InsuranceProviderClassCode" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43eGsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43nQoEIlEeG5UvLPSY8o7A" name="InsuranceProviderMoodCode" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43nQoUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::DEF</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43nQokIlEeG5UvLPSY8o7A" name="InsuranceProviderId" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43nQo0IlEeG5UvLPSY8o7A">
          <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="_43nQpEIlEeG5UvLPSY8o7A" name="InsuranceProviderCode" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43nQpUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43nQpkIlEeG5UvLPSY8o7A" name="InsuranceProviderStatusCode" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43nQp0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44D8o0IlEeG5UvLPSY8o7A" name="InsuranceProviderPayerEntry" constrainedElement="_2Ma30BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8pEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(cda::Act) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NG0UBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_44D8pUIlEeG5UvLPSY8o7A" name="getPayerEntries" isQuery="true" bodyCondition="_44D8qEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44D8qEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_44D8pUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8qUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(cda::Act)).oclAsType(cda::Act)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44D8pkIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44D8p0IlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2MyrQxSVEeGGzu7fmW9pXw" name="PayerEntry">
      <ownedComment xmi:id="_2NAGoRSVEeGGzu7fmW9pXw" annotatedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <body>A policy activity represents the policy or program providing the coverage. The person for whom payment is being provided (i.e. the patient) is the covered party. The subscriber of the policy or program is represented as a participant that is the holder the coverage. The payer is represented as the performer of the policy activity.</body>
      </ownedComment>
      <ownedRule xmi:id="_2M8cQBSVEeGGzu7fmW9pXw" name="PayerEntryPayerEntityIsRequired">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M8cQRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.performer->one(perf : cda::Performer2 | perf.typeCode = vocab::ParticipationPhysicalPerformer::PRF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2M9DUBSVEeGGzu7fmW9pXw" name="PayerEntryCoveredPartyIsRequired">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M9DURSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->one(part : cda::Participant2 | part.typeCode = vocab::ParticipationType::COV)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2M9qYBSVEeGGzu7fmW9pXw" name="PayerEntryCoveredPartyTime">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M9qYRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->one(part : cda::Participant2 | part.typeCode = vocab::ParticipationType::COV&#xD;&#xA;  implies not part.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2M-RcBSVEeGGzu7fmW9pXw" name="PayerEntrySubscriberIsAllowed">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M-RcRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->one(part : cda::Participant2 | part.typeCode = vocab::ParticipationType::HLD)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2M-4gBSVEeGGzu7fmW9pXw" name="PayerEntrySubscriberTime">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M-4gRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.participant->one(part : cda::Participant2 | part.typeCode = vocab::ParticipationType::HLD&#xD;&#xA;  implies not part.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2M_fkBSVEeGGzu7fmW9pXw" name="PayerEntryEntryRelationshipREFR">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2M_fkRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.entryRelationship->forAll(rel : cda::EntryRelationship | rel.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43xBoUIlEeG5UvLPSY8o7A" name="PayerEntryClassCode" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43xBokIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_43xBo0IlEeG5UvLPSY8o7A" name="PayerEntryMoodCode" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_43xBpEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_436yoEIlEeG5UvLPSY8o7A" name="PayerEntryId" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_436yoUIlEeG5UvLPSY8o7A">
          <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="_436yokIlEeG5UvLPSY8o7A" name="PayerEntryStatusCode" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_436yo0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_436ypEIlEeG5UvLPSY8o7A" name="PayerEntryPayerEntity" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_436ypUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(cda::Act))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44D8kkIlEeG5UvLPSY8o7A" name="PayerEntryCoveredParty" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8k0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(cda::ParticipantRole))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44D8nEIlEeG5UvLPSY8o7A" name="PayerEntrySubscriber" constrainedElement="_2MyrQxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8nUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(cda::ParticipantRole))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2NAGohSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_436ypkIlEeG5UvLPSY8o7A" name="getPayerEntity" isQuery="true" bodyCondition="_436yqUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_436yqUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_436ypkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_436yqkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(cda::Act))->asSequence()->first().oclAsType(cda::Act)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_436yp0IlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_436yqEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_44D8lEIlEeG5UvLPSY8o7A" name="getCoveredParty" isQuery="true" bodyCondition="_44D8l0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44D8l0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_44D8lEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8mEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole))->asSequence()->first().oclAsType(cda::ParticipantRole)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44D8lUIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44D8lkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_44D8nkIlEeG5UvLPSY8o7A" name="getSubscriber" isQuery="true" bodyCondition="_44D8oUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44D8oUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_44D8nkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8okIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getParticipantRoles()->select(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole))->asSequence()->first().oclAsType(cda::ParticipantRole)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44D8n0IlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44D8oEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2M4x4xSVEeGGzu7fmW9pXw" name="CoveredParty">
      <ownedRule xmi:id="_436yq0IlEeG5UvLPSY8o7A" name="CoveredPartyId" constrainedElement="_2M4x4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_436yrEIlEeG5UvLPSY8o7A">
          <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="_44D8kEIlEeG5UvLPSY8o7A" name="CoveredPartyCode" constrainedElement="_2M4x4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8kUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2M6AABSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2M7OIBSVEeGGzu7fmW9pXw" name="PolicySubscriber">
      <ownedRule xmi:id="_44D8mUIlEeG5UvLPSY8o7A" name="PolicySubscriberId" constrainedElement="_2M7OIBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8mkIlEeG5UvLPSY8o7A">
          <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="_2M71MBSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NIpgBSVEeGGzu7fmW9pXw" name="MedicationsSection">
      <ownedRule xmi:id="_44D8q0IlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44D8rEIlEeG5UvLPSY8o7A">
          <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="_44NtkEIlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44NtkUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44NtkkIlEeG5UvLPSY8o7A" name="MedicationsSectionTitle" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44Ntk0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (self.title.getText() = 'Medications')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44NtlEIlEeG5UvLPSY8o7A" name="MedicationsSectionText" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44NtlUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44XekEIlEeG5UvLPSY8o7A" name="MedicationsSectionMedication" constrainedElement="_2NIpgBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44XekUIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_44XekkIlEeG5UvLPSY8o7A" name="getMedications" isQuery="true" bodyCondition="_44XelUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44XelUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_44XekkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44XelkIlEeG5UvLPSY8o7A">
            <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="_44Xek0IlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44XelEIlEeG5UvLPSY8o7A" 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="_44Xel0IlEeG5UvLPSY8o7A" name="PlanOfCareSectionTemplateId" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44XemEIlEeG5UvLPSY8o7A">
          <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="_44XemkIlEeG5UvLPSY8o7A" name="PlanOfCareSectionCode" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44Xem0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '18776-5' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44XenEIlEeG5UvLPSY8o7A" name="PlanOfCareSectionText" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44XenUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44gohUIlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivityAct" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44gohkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.act.oclIsUndefined() and entry.act.oclIsKindOf(consol::PlanOfCareActivityAct))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44qZg0IlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivityEncounter" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44qZhEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.encounter.oclIsUndefined() and entry.encounter.oclIsKindOf(consol::PlanOfCareActivityEncounter))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44zjckIlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivityObservation" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44zjc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.observation.oclIsUndefined() and entry.observation.oclIsKindOf(consol::PlanOfCareActivityObservation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_449UckIlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivityProcedure" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_449Uc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.procedure.oclIsUndefined() and entry.procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45HFckIlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivitySubstanceAdministration" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45HFc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.substanceAdministration.oclIsUndefined() and entry.substanceAdministration.oclIsKindOf(consol::PlanOfCareActivitySubstanceAdministration))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45QPYkIlEeG5UvLPSY8o7A" name="PlanOfCareSectionPlanOfCareActivitySupply" constrainedElement="_2NP-QxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45QPY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(entry : cda::Entry | not entry.supply.oclIsUndefined() and entry.supply.oclIsKindOf(consol::PlanOfCareActivitySupply))</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="_44goh0IlEeG5UvLPSY8o7A" name="getPlanOfCareActivityAct" isQuery="true" bodyCondition="_44goikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44goikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_44goh0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44goi0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PlanOfCareActivityAct))->asSequence()->first().oclAsType(consol::PlanOfCareActivityAct)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44goiEIlEeG5UvLPSY8o7A" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44goiUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_44qZhUIlEeG5UvLPSY8o7A" name="getPlanOfCareActivityEncounter" isQuery="true" bodyCondition="_44qZiEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44qZiEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_44qZhUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44qZiUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(consol::PlanOfCareActivityEncounter))->asSequence()->first().oclAsType(consol::PlanOfCareActivityEncounter)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44qZhkIlEeG5UvLPSY8o7A" type="_2NWFBBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44qZh0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_44zjdEIlEeG5UvLPSY8o7A" name="getPlanOfCareActivityObservation" isQuery="true" bodyCondition="_44zjd0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_44zjd0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_44zjdEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_44zjeEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::PlanOfCareActivityObservation))->asSequence()->first().oclAsType(consol::PlanOfCareActivityObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_44zjdUIlEeG5UvLPSY8o7A" type="_2NcLjhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44zjdkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_449UdEIlEeG5UvLPSY8o7A" name="getPlanOfCareActivityProcedure" isQuery="true" bodyCondition="_449Ud0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_449Ud0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_449UdEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_449UeEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))->asSequence()->first().oclAsType(consol::PlanOfCareActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_449UdUIlEeG5UvLPSY8o7A" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_449UdkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_45HFdEIlEeG5UvLPSY8o7A" name="getPlanOfCareActivitySubstanceAdministration" isQuery="true" bodyCondition="_45HFd0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_45HFd0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_45HFdEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_45HFeEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::PlanOfCareActivitySubstanceAdministration))->asSequence()->first().oclAsType(consol::PlanOfCareActivitySubstanceAdministration)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_45HFdUIlEeG5UvLPSY8o7A" type="_2NoYwxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45HFdkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_45QPZEIlEeG5UvLPSY8o7A" name="getPlanOfCareActivitySupply" isQuery="true" bodyCondition="_45QPZ0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_45QPZ0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_45QPZEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_45QPaEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::PlanOfCareActivitySupply))->asSequence()->first().oclAsType(consol::PlanOfCareActivitySupply)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_45QPZUIlEeG5UvLPSY8o7A" type="_2NoY5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45QPZkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2NWE5xSVEeGGzu7fmW9pXw" name="PlanOfCareActivityAct">
      <ownedRule xmi:id="_44gogEIlEeG5UvLPSY8o7A" name="PlanOfCareActivityActTemplateId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44gogUIlEeG5UvLPSY8o7A">
          <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="_44gog0IlEeG5UvLPSY8o7A" name="PlanOfCareActivityActId" constrainedElement="_2NWE5xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44gohEIlEeG5UvLPSY8o7A">
          <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="_44gojEIlEeG5UvLPSY8o7A" name="PlanOfCareActivityEncounterTemplateId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44gojUIlEeG5UvLPSY8o7A">
          <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="_44qZgUIlEeG5UvLPSY8o7A" name="PlanOfCareActivityEncounterId" constrainedElement="_2NWFBBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44qZgkIlEeG5UvLPSY8o7A">
          <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="_44qZikIlEeG5UvLPSY8o7A" name="PlanOfCareActivityObservationTemplateId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44qZi0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.25')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_44zjcEIlEeG5UvLPSY8o7A" name="PlanOfCareActivityObservationId" constrainedElement="_2NcLjhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44zjcUIlEeG5UvLPSY8o7A">
          <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="_44zjeUIlEeG5UvLPSY8o7A" name="PlanOfCareActivityProcedureTemplateId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44zjekIlEeG5UvLPSY8o7A">
          <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="_449UcEIlEeG5UvLPSY8o7A" name="PlanOfCareActivityProcedureId" constrainedElement="_2NiSKhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_449UcUIlEeG5UvLPSY8o7A">
          <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="_449UeUIlEeG5UvLPSY8o7A" name="PlanOfCareActivitySubstanceAdministrationTemplateId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_449UekIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.25')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45HFcEIlEeG5UvLPSY8o7A" name="PlanOfCareActivitySubstanceAdministrationId" constrainedElement="_2NoYwxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45HFcUIlEeG5UvLPSY8o7A">
          <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="_45HFeUIlEeG5UvLPSY8o7A" name="PlanOfCareActivitySupplyTemplateId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45HFekIlEeG5UvLPSY8o7A">
          <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="_45QPYEIlEeG5UvLPSY8o7A" name="PlanOfCareActivitySupplyId" constrainedElement="_2NoY5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45QPYUIlEeG5UvLPSY8o7A">
          <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="_45QPaUIlEeG5UvLPSY8o7A" name="PregnancyObservationTemplateId" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45QPakIlEeG5UvLPSY8o7A">
          <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="_45QPbEIlEeG5UvLPSY8o7A" name="PregnancyObservationClassCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45QPbUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45aAYEIlEeG5UvLPSY8o7A" name="PregnancyObservationMoodCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45aAYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45aAYkIlEeG5UvLPSY8o7A" name="PregnancyObservationCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45aAY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45aAZEIlEeG5UvLPSY8o7A" name="PregnancyObservationStatusCode" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45aAZUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45aAZkIlEeG5UvLPSY8o7A" name="PregnancyObservationValue" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45jxYEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.code = '77386006' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45jxYUIlEeG5UvLPSY8o7A" name="PregnancyObservationEffectiveTime" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45jxYkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GOUYkIlEeG5UvLPSY8o7A" name="PregnancyObservationEstimatedDateOfDelivery" constrainedElement="_2N6soBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUY0IlEeG5UvLPSY8o7A">
          <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="_5GOUZEIlEeG5UvLPSY8o7A" name="getEstimatedDateOfDelivery" isQuery="true" bodyCondition="_5GOUZ0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GOUZ0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GOUZEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUaEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::EstimatedDateOfDelivery))->asSequence()->first().oclAsType(consol::EstimatedDateOfDelivery)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5GOUZUIlEeG5UvLPSY8o7A" type="_vBswQBtpEeGT89b80j3MTg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GOUZkIlEeG5UvLPSY8o7A" 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="_45jxZEIlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45jxZUIlEeG5UvLPSY8o7A">
          <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="_45jxZ0IlEeG5UvLPSY8o7A" name="ProceduresSectionTitle" constrainedElement="_2OAzQRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45jxaEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined() and self.title.getText() = 'Procedures')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_gNO_cBVgEeGQCvUGzi1kDQ" general="_s9Ig4BVdEeGQCvUGzi1kDQ"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OAzVhSVEeGGzu7fmW9pXw" name="ExternalReference">
      <ownedRule xmi:id="_2OAzVxSVEeGGzu7fmW9pXw" name="ExternalReferenceHasNoCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OAzWBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.code.oclIsUndefined() implies self.code.nullFlavor = vocab::NullFlavor::NA</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2OAzWRSVEeGGzu7fmW9pXw" name="ExternalReferenceHasReference">
        <ownedComment xmi:id="_2OAzWhSVEeGGzu7fmW9pXw">
          <body>External references are listed as either supporting documentation (typeCode='SPRT') or simply&#xD;
reference material (typeCode='REFR') for the reader. If this distinction is not supported by the&#xD;
source EMR system, the value of typeCode should be REFR.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OAzWxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.reference->select(r| r.typeCode &lt;> vocab::x_ActRelationshipExternalReference::REFR and r.typeCode &lt;> vocab::x_ActRelationshipExternalReference::SPRT)->size() = 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2OAzXBSVEeGGzu7fmW9pXw" name="ExternalReferenceHasReferenceExternalDocument">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OAzXRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.reference.externalDocument->select(ed | ed.classCode =  vocab::ActClassDocument::DOC and ed.moodCode =  vocab::ActMood::EVN )->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2OAzXhSVEeGGzu7fmW9pXw" name="ExternalReferenceHasReferenceExternalDocumentID">
        <ownedComment xmi:id="_2OAzXxSVEeGGzu7fmW9pXw">
          <body>A link to the original document may be provided here. This shall be a URL where the referenced&#xD;
document can be located. For CDA, the link should also be present in the narrative inside the&#xD;
CDA Narrative in a &amp;lt;linkHTML> element.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OAzYBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.reference->select(  r | r.externalDocument.id->isEmpty() )->size() = 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2OAzYRSVEeGGzu7fmW9pXw" name="ExternalReferenceHasReferenceExternalDocumentText">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2OAzYhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.reference->select(  r | r.externalDocument.text.oclIsUndefined()  )->size() = 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45jxaUIlEeG5UvLPSY8o7A" name="ExternalReferenceTemplateId" constrainedElement="_2OAzVhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45jxakIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '1.3.6.1.4.1.19376.1.5.3.1.4.4')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45s7UUIlEeG5UvLPSY8o7A" name="ExternalReferenceClassCode" constrainedElement="_2OAzVhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45s7UkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45s7U0IlEeG5UvLPSY8o7A" name="ExternalReferenceMoodCode" constrainedElement="_2OAzVhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45s7VEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_452sUEIlEeG5UvLPSY8o7A" name="ExternalReferenceId" constrainedElement="_2OAzVhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_452sUUIlEeG5UvLPSY8o7A">
          <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="_452sUkIlEeG5UvLPSY8o7A" name="ExternalReferenceText" constrainedElement="_2OAzVhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_452sU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2OG56hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
    </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.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.104' 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 self.code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_WEQMwBrQEeGxIZCGAXKxsQ" name="ProcedureActivityProcedureOriginalTextReferenceValue" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Pp6KEBrREeGxIZCGAXKxsQ">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</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.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.oclIsKindOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_452sVEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureTemplateId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_452sVUIlEeG5UvLPSY8o7A">
          <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="_45_2QEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureClassCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45_2QUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_45_2QkIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureId" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_45_2Q0IlEeG5UvLPSY8o7A">
          <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="_46JnQEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46JnQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46JnQkIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureStatusCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46JnQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.14' and (value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46JnREIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureEffectiveTime" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46JnRUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46JnRkIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedurePriorityCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46JnR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46TYQEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureMethodCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46TYQUIlEeG5UvLPSY8o7A">
          <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="_46TYQkIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureTargetSiteCode" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46TYQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46TYREIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureIndication" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46TYRUIlEeG5UvLPSY8o7A">
          <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="_46TYS0IlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureSpecimen" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46TYTEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.specimen->exists(specimen : cda::Specimen | not specimen.oclIsUndefined() and specimen.oclIsKindOf(cda::Specimen))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46ciMEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureServiceDeliveryLocation" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciMUIlEeG5UvLPSY8o7A">
          <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="_46ciN0IlEeG5UvLPSY8o7A" name="ProcedureActivityProcedurePerformer" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciOEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46ciOUIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureMedicationActivity" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciOkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(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="_46ciQEIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedurePatientInstruction" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciQUIlEeG5UvLPSY8o7A">
          <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="_5Feth0IlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureProcedureEncounter" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FetiEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(cda::Encounter) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FetjkIlEeG5UvLPSY8o7A" name="ProcedureActivityProcedureProductInstance" constrainedElement="_2OG58RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fetj0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->exists(participant : cda::Participant2 | not participant.participantRole.oclIsUndefined() and participant.participantRole.oclIsKindOf(consol::ProductInstance))</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="_46TYRkIlEeG5UvLPSY8o7A" name="getIndications" isQuery="true" bodyCondition="_46TYSUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_46TYSUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_46TYRkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_46TYSkIlEeG5UvLPSY8o7A">
            <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="_46TYR0IlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46TYSEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_46ciMkIlEeG5UvLPSY8o7A" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_46ciNUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_46ciNUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_46ciMkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciNkIlEeG5UvLPSY8o7A">
            <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="_46ciM0IlEeG5UvLPSY8o7A" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46ciNEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_46ciO0IlEeG5UvLPSY8o7A" name="getMedicationActivity" isQuery="true" bodyCondition="_46ciPkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_46ciPkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_46ciO0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciP0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity))->asSequence()->first().oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_46ciPEIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46ciPUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_46ciQkIlEeG5UvLPSY8o7A" name="getPatientInstruction" isQuery="true" bodyCondition="_46ciRUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_46ciRUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_46ciQkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciRkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_46ciQ0IlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46ciREIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FetiUIlEeG5UvLPSY8o7A" name="getProcedureEncounters" isQuery="true" bodyCondition="_5FetjEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FetjEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FetiUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FetjUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).oclAsType(cda::Encounter)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5FetikIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Feti0IlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Fn3cEIlEeG5UvLPSY8o7A" name="getProductInstances" isQuery="true" bodyCondition="_5Fn3c0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Fn3c0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Fn3cEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3dEIlEeG5UvLPSY8o7A">
            <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="_5Fn3cUIlEeG5UvLPSY8o7A" type="_2G2bUxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Fn3ckIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OfUbhSVEeGGzu7fmW9pXw" name="Support">
      <ownedComment xmi:id="_2OfUchSVEeGGzu7fmW9pXw" annotatedElement="_2OfUbhSVEeGGzu7fmW9pXw">
        <body>&lt;p>Represents the patient's sources of support such as immediate family, relatives, and guardian at the time the summarization is generated. Support information also includes next of kin, caregivers, and support organizations. At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included.&lt;/p>&#xD;
&lt;p>CDA R2 represents a patient's guardian with the CDA Header Guardian class. Other Supporters are represented as participant participations in the CDA Header.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2OfUbxSVEeGGzu7fmW9pXw" annotatedElement="_2OfUbhSVEeGGzu7fmW9pXw">
        <body>At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included. If no healthcare providers are supplied, the reason should be supplied as free text in the narrative block (e.g., Unknown, etc).</body>
      </ownedComment>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2OfUcxSVEeGGzu7fmW9pXw" name="VitalSignsSection">
      <ownedRule xmi:id="_46ciSEIlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46ciSUIlEeG5UvLPSY8o7A">
          <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="_46mTMUIlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46mTMkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46mTM0IlEeG5UvLPSY8o7A" name="VitalSignsSectionText" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46mTNEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46mTNUIlEeG5UvLPSY8o7A" name="VitalSignsSectionTitle" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46mTNkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47V6EkIlEeG5UvLPSY8o7A" name="VitalSignsSectionVitalSignsOrganizer" constrainedElement="_2OfUcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47V6E0IlEeG5UvLPSY8o7A">
          <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="_47V6FEIlEeG5UvLPSY8o7A" name="getConsolVitalSignsOrganizers" isQuery="true" bodyCondition="_47V6F0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_47V6F0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_47V6FEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_47V6GEIlEeG5UvLPSY8o7A">
            <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="_47V6FUIlEeG5UvLPSY8o7A" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_47V6FkIlEeG5UvLPSY8o7A" 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>

&lt;p>An appropriate nullFlavor can be used when a single result observation is contained in the organizer, and organizer/code or organizer/id is unknown.&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_46mTN0IlEeG5UvLPSY8o7A" name="VitalSignsOrganizerTemplateId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wEMEIlEeG5UvLPSY8o7A">
          <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="_46wEMkIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerClassCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wEM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryOrganizer::CLUSTER</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46wENEIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerMoodCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wENUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::ActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_46wENkIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerId" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wEN0IlEeG5UvLPSY8o7A">
          <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="_46wEOEIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_46wEOUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '46680005' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_465OIEIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerStatusCode" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_465OIkIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerEffectiveTime" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_465OJEIlEeG5UvLPSY8o7A" name="VitalSignsOrganizerVitalSignObservation" constrainedElement="_2OlbCRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OJUIlEeG5UvLPSY8o7A">
          <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="_465OJkIlEeG5UvLPSY8o7A" name="getVitalSignObservations" isQuery="true" bodyCondition="_465OKUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_465OKUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_465OJkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OKkIlEeG5UvLPSY8o7A">
            <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="_465OJ0IlEeG5UvLPSY8o7A" type="_2OrhsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_465OKEIlEeG5UvLPSY8o7A" 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="_465OK0IlEeG5UvLPSY8o7A" name="VitalSignObservationTemplateId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OLEIlEeG5UvLPSY8o7A">
          <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="_465OLkIlEeG5UvLPSY8o7A" name="VitalSignObservationClassCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_465OL0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47C_IEIlEeG5UvLPSY8o7A" name="VitalSignObservationMoodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47C_IUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47C_IkIlEeG5UvLPSY8o7A" name="VitalSignObservationId" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47C_I0IlEeG5UvLPSY8o7A">
          <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="_47C_JEIlEeG5UvLPSY8o7A" name="VitalSignObservationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47C_JUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and (value.code = '8310-5' or value.code = '8462-4' or value.code = '8480-6' or value.code = '8287-5' or value.code = '8867-4' or value.code = '8302-2' or value.code = '8306-3' or value.code = '2710-2' or value.code = '9279-1' or value.code = '3141-9')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47C_JkIlEeG5UvLPSY8o7A" name="VitalSignObservationStatusCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJEEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47MJEUIlEeG5UvLPSY8o7A" name="VitalSignObservationEffectiveTime" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJEkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47MJE0IlEeG5UvLPSY8o7A" name="VitalSignObservationValue" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJFEIlEeG5UvLPSY8o7A">
          <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="_47MJFUIlEeG5UvLPSY8o7A" name="VitalSignObservationInterpretationCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJFkIlEeG5UvLPSY8o7A">
          <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="_47MJF0IlEeG5UvLPSY8o7A" name="VitalSignObservationMethodCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJGEIlEeG5UvLPSY8o7A">
          <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="_47MJGUIlEeG5UvLPSY8o7A" name="VitalSignObservationTargetSiteCode" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47MJGkIlEeG5UvLPSY8o7A">
          <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="_47V6EEIlEeG5UvLPSY8o7A" name="VitalSignObservationText" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47V6EUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FLLlUIlEeG5UvLPSY8o7A" name="VitalSignObservationAuthor" constrainedElement="_2OrhsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLlkIlEeG5UvLPSY8o7A">
          <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 current complaints, problems, or diagnoses. It records 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="_47V6GUIlEeG5UvLPSY8o7A" name="HistoryOfPastIllnessSectionTemplateId" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47V6GkIlEeG5UvLPSY8o7A">
          <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="_47V6HEIlEeG5UvLPSY8o7A" name="HistoryOfPastIllnessSectionCode" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47V6HUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11348-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47frEEIlEeG5UvLPSY8o7A" name="HistoryOfPastIllnessSectionTitle" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47frEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47frEkIlEeG5UvLPSY8o7A" name="HistoryOfPastIllnessSectionText" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47frE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I509UIlEeG5UvLPSY8o7A" name="HistoryOfPastIllnessSectionProblemObservation" constrainedElement="_2PQJcxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I509kIlEeG5UvLPSY8o7A">
          <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="_5I5090IlEeG5UvLPSY8o7A" name="getProblemObservations" isQuery="true" bodyCondition="_5I50-kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5I50-kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5I5090IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I50-0IlEeG5UvLPSY8o7A">
            <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="_5I50-EIlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5I50-UIlEeG5UvLPSY8o7A" 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="_47frFEIlEeG5UvLPSY8o7A" name="ChiefComplaintSectionTemplateId" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47frFUIlEeG5UvLPSY8o7A">
          <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="_47frF0IlEeG5UvLPSY8o7A" name="ChiefComplaintSectionCode" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47frGEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10154-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47o1AEIlEeG5UvLPSY8o7A" name="ChiefComplaintSectionText" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47o1AUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47o1AkIlEeG5UvLPSY8o7A" name="ChiefComplaintSectionTitle" constrainedElement="_2PWQCBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47o1A0IlEeG5UvLPSY8o7A">
          <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="_47o1BEIlEeG5UvLPSY8o7A" name="ReasonForReferralSectionTemplateId" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47o1BUIlEeG5UvLPSY8o7A">
          <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="_47o1B0IlEeG5UvLPSY8o7A" name="ReasonForReferralSectionCode" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47o1CEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '42349-1' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47o1CUIlEeG5UvLPSY8o7A" name="ReasonForReferralSectionTitle" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47o1CkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47ymAEIlEeG5UvLPSY8o7A" name="ReasonForReferralSectionText" constrainedElement="_2PWQFxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47ymAUIlEeG5UvLPSY8o7A">
          <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="_47ymAkIlEeG5UvLPSY8o7A" name="HistoryOfPresentIllnessSectionTemplateId" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47ymA0IlEeG5UvLPSY8o7A">
          <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="_47ymBUIlEeG5UvLPSY8o7A" name="HistoryOfPresentIllnessSectionCode" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47ymBkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10164-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_47ymB0IlEeG5UvLPSY8o7A" name="HistoryOfPresentIllnessSectionTitle" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_47ymCEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_478XAEIlEeG5UvLPSY8o7A" name="HistoryOfPresentIllnessSectionText" constrainedElement="_2PcWsRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_478XAUIlEeG5UvLPSY8o7A">
          <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="_478XAkIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisSectionTemplateId" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_478XA0IlEeG5UvLPSY8o7A">
          <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="_478XBUIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisSectionCode" constrainedElement="_2PidQhSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_478XBkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2PidUBSVEeGGzu7fmW9pXw">
        <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="_2Poj5BSVEeGGzu7fmW9pXw" name="HospitalAdmissionMedicationsSectionEntriesOptional">
      <ownedComment xmi:id="_2Poj6xSVEeGGzu7fmW9pXw" annotatedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <body>The admission medication history section shall contain a narrative description of the relevant medications administered to&#xD;
a patient prior to admission to a facility. It shall include entries for medication administration as described in the&#xD;
Entry Content Module.</body>
      </ownedComment>
      <ownedComment xmi:id="_2Poj5RSVEeGGzu7fmW9pXw" annotatedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    The Admission Medication Section contains information about the relevant medications of a patient prior&#xD;
    to admission to a facility. &#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_478XB0IlEeG5UvLPSY8o7A" name="HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_478XCEIlEeG5UvLPSY8o7A">
          <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="_48Fg8EIlEeG5UvLPSY8o7A" name="HospitalAdmissionMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Fg8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48Fg8kIlEeG5UvLPSY8o7A" name="HospitalAdmissionMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Fg80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48Fg9EIlEeG5UvLPSY8o7A" name="HospitalAdmissionMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Fg9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ScLcEIlEeG5UvLPSY8o7A" name="HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication" constrainedElement="_2Poj5BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLcUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(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="_5ScLckIlEeG5UvLPSY8o7A" name="getAdmissionMedication" isQuery="true" bodyCondition="_5ScLdUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5ScLdUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5ScLckIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLdkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AdmissionMedication))->asSequence()->first().oclAsType(consol::AdmissionMedication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5ScLc0IlEeG5UvLPSY8o7A" type="_LNP08EFGEeGorO80f-Cppg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5ScLdEIlEeG5UvLPSY8o7A" value="1"/>
        </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 shall contain a narrative description of the relevant medications administered to a&#xD;
patient during the course of an encounter. It shall include entries for medication administration as described in the Entry&#xD;
Content Module.</body>
      </ownedComment>
      <ownedComment xmi:id="_2Poj_RSVEeGGzu7fmW9pXw" annotatedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <body>&lt;p>&#xD;
    The Medications Administered Section contains information about the relevant medications administered to&#xD;
    a patient during the course of an encounter. &#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_48Fg9kIlEeG5UvLPSY8o7A" name="MedicationsAdministeredSectionTemplateId" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Fg90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.3.88.11.83.115')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48Fg-UIlEeG5UvLPSY8o7A" name="MedicationsAdministeredSectionCode" constrainedElement="_2Poj_BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Fg-kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '18610-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Pxt0RSVEeGGzu7fmW9pXw">
        <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="_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="_48PR8EIlEeG5UvLPSY8o7A" name="PhysicalExamSectionTemplateId" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48PR8UIlEeG5UvLPSY8o7A">
          <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="_48PR80IlEeG5UvLPSY8o7A" name="PhysicalExamSectionCode" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48PR9EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '29545-1' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48PR9UIlEeG5UvLPSY8o7A" name="PhysicalExamSectionTitle" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48PR9kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48PR90IlEeG5UvLPSY8o7A" name="PhysicalExamSectionText" constrainedElement="_2Pxt0hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48PR-EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2RkdqxSVEeGGzu7fmW9pXw">
        <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="_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="_48Yb4EIlEeG5UvLPSY8o7A" name="GeneralStatusSectionTemplateId" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Yb4UIlEeG5UvLPSY8o7A">
          <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="_48Yb40IlEeG5UvLPSY8o7A" name="GeneralStatusSectionCode" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Yb5EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10210-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48Yb5UIlEeG5UvLPSY8o7A" name="GeneralStatusSectionTitle" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Yb5kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48Yb50IlEeG5UvLPSY8o7A" name="GeneralStatusSectionText" constrainedElement="_2Pxt6xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Yb6EIlEeG5UvLPSY8o7A">
          <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="_48Yb6UIlEeG5UvLPSY8o7A" name="ReviewOfSystemsSectionTemplateId" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48Yb6kIlEeG5UvLPSY8o7A">
          <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="_48iM4EIlEeG5UvLPSY8o7A" name="ReviewOfSystemsSectionCode" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48iM4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10187-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48iM4kIlEeG5UvLPSY8o7A" name="ReviewOfSystemsSectionTitle" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48iM40IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48iM5EIlEeG5UvLPSY8o7A" name="ReviewOfSystemsSectionText" constrainedElement="_2RqkMBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48iM5UIlEeG5UvLPSY8o7A">
          <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="_48iM5kIlEeG5UvLPSY8o7A" name="AssessmentAndPlanSectionTemplateId" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48iM50IlEeG5UvLPSY8o7A">
          <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="_48r94EIlEeG5UvLPSY8o7A" name="AssessmentAndPlanSectionCode" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48r94UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '51847-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48r94kIlEeG5UvLPSY8o7A" name="AssessmentAndPlanSectionText" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48r940IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IwEAEIlEeG5UvLPSY8o7A" name="AssessmentAndPlanSectionPlanOfCareActivityAct" constrainedElement="_2Rwq0BSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwEAUIlEeG5UvLPSY8o7A">
          <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="_5I508EIlEeG5UvLPSY8o7A" name="getPlanOfCareActivityActs" isQuery="true" bodyCondition="_5I5080IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5I5080IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5I508EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I509EIlEeG5UvLPSY8o7A">
            <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="_5I508UIlEeG5UvLPSY8o7A" type="_2NWE5xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5I508kIlEeG5UvLPSY8o7A" 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="_48r95EIlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationTemplateId" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48r95UIlEeG5UvLPSY8o7A">
          <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="_48r950IlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationClassCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48r96EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48r96UIlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationMoodCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48r96kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_481H0EIlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_481H0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = 'ASSERTION' and value.codeSystem = '2.16.840.1.113883.5.4'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_481H0kIlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationStatusCode" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_481H00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_481H1EIlEeG5UvLPSY8o7A" name="FamilyHistoryDeathObservationValue" constrainedElement="_2SC-sBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_481H1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;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="_2SVSlBSVEeGGzu7fmW9pXw" name="LanguageSpoken">
      <ownedRule xmi:id="_2SVSmRSVEeGGzu7fmW9pXw" name="LanguageSpokenNoProficiencyLevelCode" constrainedElement="_2SVSlBSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_2SVSmhSVEeGGzu7fmW9pXw">
          <body>Judgments about language proficiency are subjective, and could have a negative impact on consumers.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2SVSmxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.proficiencyLevelCode.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48-40UIlEeG5UvLPSY8o7A" name="LanguageSpokenLanguageCode" constrainedElement="_2SVSlBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48-40kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined() and self.languageCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.languageCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_48-400IlEeG5UvLPSY8o7A" name="LanguageSpokenModeCode" constrainedElement="_2SVSlBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_48-41EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.modeCode.oclIsUndefined() or self.modeCode.isNullFlavorUndefined()) implies (self.modeCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.modeCode.oclAsType(datatypes::CE) in (&#xD;&#xA;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>
      <generalization xmi:id="_2SbZMxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_cHD44EcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Shf0xSVEeGGzu7fmW9pXw" name="HealthcareProvider">
      <generalization xmi:id="_2Shf3xSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_FvF74EcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2TYbcBSVEeGGzu7fmW9pXw" name="SupportGuardian">
      <ownedComment xmi:id="_2TYbiBSVEeGGzu7fmW9pXw" annotatedElement="_2TYbcBSVEeGGzu7fmW9pXw">
        <body>&lt;p>Represents the patient's sources of support such as immediate family, relatives, and guardian at the time the summarization is generated. Support information also includes next of kin, caregivers, and support organizations. At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included.&lt;/p>&#xD;
&lt;p>CDA R2 represents a patient's guardian with the CDA Header Guardian class. Other Supporters are represented as participant participations in the CDA Header.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2TYbiRSVEeGGzu7fmW9pXw" annotatedElement="_2TYbcBSVEeGGzu7fmW9pXw">
        <body>&lt;p>Represents the patient's sources of support such as immediate family, relatives, and guardian at the time the summarization is generated. Support information also includes next of kin, caregivers, and support organizations. At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included.&lt;/p>&#xD;
&lt;p>CDA R2 represents a patient's guardian with the CDA Header Guardian class. Other Supporters are represented as participant participations in the CDA Header.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2TYbcRSVEeGGzu7fmW9pXw" annotatedElement="_2TYbcBSVEeGGzu7fmW9pXw">
        <body>At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included. If no healthcare providers are supplied, the reason should be supplied as free text in the narrative block (e.g., Unknown, etc).</body>
      </ownedComment>
      <generalization xmi:id="_2TYbihSVEeGGzu7fmW9pXw" general="_2OfUbhSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2TYbixSVEeGGzu7fmW9pXw" name="SupportParticipant">
      <ownedComment xmi:id="_2TeiHhSVEeGGzu7fmW9pXw" annotatedElement="_2TYbixSVEeGGzu7fmW9pXw">
        <body>&lt;p>Represents the patient's sources of support such as immediate family, relatives, and guardian at the time the summarization is generated. Support information also includes next of kin, caregivers, and support organizations. At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included.&lt;/p>&#xD;
&lt;p>CDA R2 represents a patient's guardian with the CDA Header Guardian class. Other Supporters are represented as participant participations in the CDA Header.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2TeiHxSVEeGGzu7fmW9pXw" annotatedElement="_2TYbixSVEeGGzu7fmW9pXw">
        <body>&lt;p>Represents the patient's sources of support such as immediate family, relatives, and guardian at the time the summarization is generated. Support information also includes next of kin, caregivers, and support organizations. At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included.&lt;/p>&#xD;
&lt;p>CDA R2 represents a patient's guardian with the CDA Header Guardian class. Other Supporters are represented as participant participations in the CDA Header.&lt;/p></body>
      </ownedComment>
      <ownedComment xmi:id="_2TYbjBSVEeGGzu7fmW9pXw" annotatedElement="_2TYbixSVEeGGzu7fmW9pXw">
        <body>At a minimum, key support contacts relative to healthcare decisions, including next of kin, should be included. If no healthcare providers are supplied, the reason should be supplied as free text in the narrative block (e.g., Unknown, etc).</body>
      </ownedComment>
      <generalization xmi:id="_2TeiIBSVEeGGzu7fmW9pXw" general="_2OfUbhSVEeGGzu7fmW9pXw"/>
    </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="_49Ip0UIlEeG5UvLPSY8o7A" name="SurgicalDrainsSectionTemplateId" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49Ip0kIlEeG5UvLPSY8o7A">
          <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="_49Ip1EIlEeG5UvLPSY8o7A" name="SurgicalDrainsSectionCode" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49Ip1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11537-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49RzwEIlEeG5UvLPSY8o7A" name="SurgicalDrainsSectionText" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49RzwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49RzwkIlEeG5UvLPSY8o7A" name="SurgicalDrainsSectionTitle" constrainedElement="_luQh8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49Rzw0IlEeG5UvLPSY8o7A">
          <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="_49RzxEIlEeG5UvLPSY8o7A" name="UnstructuredDocumentTemplateId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49RzxUIlEeG5UvLPSY8o7A">
          <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="_5Rizn0IlEeG5UvLPSY8o7A" name="UnstructuredDocumentRecordTarget" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizoEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget->one(recordTarget : cda::RecordTarget | not recordTarget.oclIsUndefined() and recordTarget.oclIsKindOf(cda::RecordTarget))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RizoUIlEeG5UvLPSY8o7A" name="UnstructuredDocumentAuthor" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizokIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Rizo0IlEeG5UvLPSY8o7A" name="UnstructuredDocumentComponent" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizpEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.component->one(component : cda::Component2 | not component.oclIsUndefined() and component.oclIsKindOf(cda::Component2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RskkUIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodian" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RskkkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(cda::Custodian))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqykIlEeG5UvLPSY8o7A" name="UnstructuredDocumentRecordTargetPatientRole2Id" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wwqy0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.recordTarget.patientRole->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bwEIlEeG5UvLPSY8o7A" name="UnstructuredDocumentAuthorAssignedAuthor2Addr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6bwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((addr->isEmpty() or addr->exists(element | element.isNullFlavorUndefined())) implies (addr->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bwkIlEeG5UvLPSY8o7A" name="UnstructuredDocumentAuthorAssignedAuthor2Telecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6bw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author.assignedAuthor->select(not oclIsUndefined())->forAll((telecom->isEmpty() or telecom->exists(element | element.isNullFlavorUndefined())) implies (telecom->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bxEIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6bxUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((addr.oclIsUndefined() or addr.isNullFlavorUndefined()) implies (not addr.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bxkIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6bx0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6byEIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6byUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((name.oclIsUndefined() or name.isNullFlavorUndefined()) implies (not name.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bykIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6by0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian.assignedCustodian.representedCustodianOrganization->select(not oclIsUndefined())->forAll((telecom.oclIsUndefined() or telecom.isNullFlavorUndefined()) implies (not telecom.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5W6bzEIlEeG5UvLPSY8o7A" name="UnstructuredDocumentCustodianAssignedCustodian2" constrainedElement="_2TeiIRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5W6bzUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian->select(not oclIsUndefined())->forAll(assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2T9DPxSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_H8vxkEBWEeGXKr6TcG1UOQ" name="RecordTarget">
        <ownedComment xmi:id="_XIwBsEBWEeGXKr6TcG1UOQ">
          <body>The recordTarget element records the patient or patients whose health information is recorded in the Unstructured Documents instance. The following constraint is an addition to those in the US Realm Clinical Document Header.</body>
        </ownedComment>
        <ownedComment xmi:id="_JAIrwEBXEeGXKr6TcG1UOQ">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_Nm_-oEBWEeGXKr6TcG1UOQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_CVzT8EALEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_JoL_sEBWEeGXKr6TcG1UOQ" name="PatientRole2">
          <ownedRule xmi:id="_49Rzx0IlEeG5UvLPSY8o7A" name="PatientRole2Id" constrainedElement="_JoL_sEBWEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_49RzyEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() = 1)</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_P0jbUEBWEeGXKr6TcG1UOQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_OApKcEALEd6wZe6nFLrjsw"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_rh8IYEBWEeGXKr6TcG1UOQ" name="Author">
        <ownedComment xmi:id="_LBoCYEBXEeGXKr6TcG1UOQ">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_ti1pIEBWEeGXKr6TcG1UOQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_umfegEBWEeGXKr6TcG1UOQ" name="AssignedAuthor2">
          <ownedRule xmi:id="_49RzykIlEeG5UvLPSY8o7A" name="AssignedAuthor2Addr" constrainedElement="_umfegEBWEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_49Rzy0IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.addr->isEmpty() or self.addr->exists(element | element.isNullFlavorUndefined())) implies (self.addr->size() = 1)</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_49bkwUIlEeG5UvLPSY8o7A" name="AssignedAuthor2Telecom" constrainedElement="_umfegEBWEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bkwkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.telecom->isEmpty() or self.telecom->exists(element | element.isNullFlavorUndefined())) implies (self.telecom->size() = 1)</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_w4OQkEBWEeGXKr6TcG1UOQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_z2vcQEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_Nb_zEEBXEeGXKr6TcG1UOQ" name="Custodian">
        <ownedComment xmi:id="_kBQvwEBXEeGXKr6TcG1UOQ">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5RizpUIlEeG5UvLPSY8o7A" name="CustodianAssignedCustodian2" constrainedElement="_Nb_zEEBXEeGXKr6TcG1UOQ">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizpkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.assignedCustodian->one(assignedCustodian : cda::AssignedCustodian | not assignedCustodian.oclIsUndefined() and assignedCustodian.oclIsKindOf(cda::AssignedCustodian))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_QIZu8EBXEeGXKr6TcG1UOQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_mMYIkEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_RRHqgEBXEeGXKr6TcG1UOQ" name="AssignedCustodian3">
          <generalization xmi:id="_U1QfoEBXEeGXKr6TcG1UOQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1G6DoEcDEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_wSDq0ECKEeGELr7uj3LK_Q" name="CustodianOrganization">
            <ownedRule xmi:id="_49bkw0IlEeG5UvLPSY8o7A" name="CustodianOrganizationAddr" constrainedElement="_wSDq0ECKEeGELr7uj3LK_Q">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bkxEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.addr.oclIsUndefined() or self.addr.isNullFlavorUndefined()) implies (not self.addr.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_49bkxkIlEeG5UvLPSY8o7A" name="CustodianOrganizationId" constrainedElement="_wSDq0ECKEeGELr7uj3LK_Q">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bkx0IlEeG5UvLPSY8o7A">
                <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="_49bkyEIlEeG5UvLPSY8o7A" name="CustodianOrganizationName" constrainedElement="_wSDq0ECKEeGELr7uj3LK_Q">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bkyUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.name.oclIsUndefined() or self.name.isNullFlavorUndefined()) implies (not self.name.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_49bkykIlEeG5UvLPSY8o7A" name="CustodianOrganizationTelecom" constrainedElement="_wSDq0ECKEeGELr7uj3LK_Q">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bky0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.telecom.oclIsUndefined() or self.telecom.isNullFlavorUndefined()) implies (not self.telecom.oclIsUndefined())</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_1SllcECKEeGELr7uj3LK_Q">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_nNMFUEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_LR5dkEBYEeGXKr6TcG1UOQ" name="Component">
        <ownedComment xmi:id="_2YskoEBYEeGXKr6TcG1UOQ">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_NWz7oEBYEeGXKr6TcG1UOQ">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_UOJoUDxXEd6JwqSGecoePg"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_VQ3BEEBYEeGXKr6TcG1UOQ" name="NonXMLBody">
          <ownedRule xmi:id="_hmeS4EBYEeGXKr6TcG1UOQ" name="NonXMLBodyHasReferenceOrRepresentation" constrainedElement="_VQ3BEEBYEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_kBJlkEBYEeGXKr6TcG1UOQ">
              <language>OCL</language>
              <body>not self.text.reference.value.oclIsUndefined() xor ( self.text.representation = 'B64'  and (not self.text.mediaType.oclIsUndefined()) and (not self.text.oclIsUndefined()))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_q28YsEBYEeGXKr6TcG1UOQ" name="NonXMLBodyMediaTypeFileFormats" constrainedElement="_VQ3BEEBYEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMeoQEBYEeGXKr6TcG1UOQ">
              <language>OCL</language>
              <body>not self.text.mediaType.oclIsUndefined()  implies (self.text.mediaType = 'application/msword' or self.text.mediaType = 'application/pdf' or self.text.mediaType = 'text/plain' or self.text.mediaType = 'text/rtf' or self.text.mediaType = 'text/html' or self.text.mediaType = 'image/gif' or self.text.mediaType = 'image/tiff' or self.text.mediaType = 'image/jpeg' or self.text.mediaType = 'image/png')</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_49bkzUIlEeG5UvLPSY8o7A" name="NonXMLBodyText" constrainedElement="_VQ3BEEBYEeGXKr6TcG1UOQ">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_49bkzkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_YqaW0EBYEeGXKr6TcG1UOQ">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YIL08DxXEd6JwqSGecoePg"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2TkovBSVEeGGzu7fmW9pXw" name="ScanOriginalAuthor">
      <ownedComment xmi:id="_2TkovRSVEeGGzu7fmW9pXw" annotatedElement="_2TkovBSVEeGGzu7fmW9pXw">
        <body>Represents the author of the original content. It additionally can encode the original author‟s institution in the subelement representedOrganization. Information regarding the original author and his/her institution shall be included, if it is known. In many cases this will have to be supplied by the operator.</body>
      </ownedComment>
      <ownedRule xmi:id="_2TkovhSVEeGGzu7fmW9pXw" name="ScanOriginalAuthorHasAssignedAuthorId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2TkovxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedAuthor.id->forAll(ident : datatypes::II |&#xD;&#xA;   not ident.root.oclIsUndefined() and not ident.extension.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2TkowBSVEeGGzu7fmW9pXw" name="ScanOriginalAuthorHasAssignedAuthorRepresentedOrganizationId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2TkowRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedAuthor.representedOrganization.id->forAll(ident : datatypes::II |&#xD;&#xA;   not ident.root.oclIsUndefined() and not ident.extension.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2TkozxSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Tko1hSVEeGGzu7fmW9pXw" name="ScanningDevice">
      <ownedComment xmi:id="_2Tko1xSVEeGGzu7fmW9pXw" annotatedElement="_2Tko1hSVEeGGzu7fmW9pXw">
        <body>Represents the scanning device and software used to produce the scanned content.</body>
      </ownedComment>
      <ownedRule xmi:id="_2Tko2BSVEeGGzu7fmW9pXw" name="ScanningDeviceTimeEqualsDocumentEffectiveTime">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko2RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.time.value = self.getClinicalDocument().effectiveTime.value</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Tko2hSVEeGGzu7fmW9pXw" name="ScanningDeviceHasAssignedAuthorId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko2xSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedAuthor.id->forAll(ident : datatypes::II | not ident.root.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Tko3BSVEeGGzu7fmW9pXw" name="ScanningDeviceHasAssignedAuthoringDeviceCode" constrainedElement="_2Tko1hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko3RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedAuthor.assignedAuthoringDevice.code.codeSystem = '1.2.840.10008.2.16.4'&#xD;&#xA;   and not self.assignedAuthor.assignedAuthoringDevice.code.code.oclIsUndefined()&#xD;&#xA;   and not self.assignedAuthor.assignedAuthoringDevice.code.displayName.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Tko3hSVEeGGzu7fmW9pXw" name="ScanningDeviceHasDeviceManufacturerModelName" constrainedElement="_2Tko1hSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_2Tko3xSVEeGGzu7fmW9pXw">
          <body>The mixed content shall contain string information that specifies the scanner product name and model number. From this information, features like bit depth and resolution can be inferred. In the case of virtually scanned documents (for example, print to PDF), the manufactureModelName referenced here refers to the makers of the technology that was used to produce the embedded content.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko4BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.assignedAuthor.assignedAuthoringDevice.manufacturerModelName.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Tko4RSVEeGGzu7fmW9pXw" name="ScanningDeviceHasDeviceSoftwareName" constrainedElement="_2Tko1hSVEeGGzu7fmW9pXw">
        <ownedComment xmi:id="_2Tko4hSVEeGGzu7fmW9pXw">
          <body>The mixed content shall contain string information that specifies the scanning software name and version. In the case of virtually scanned documents, the softwareName referenced here refers to the technology that was used to produce the embedded content.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko4xSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.assignedAuthor.assignedAuthoringDevice.softwareName.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Tko5BSVEeGGzu7fmW9pXw" name="ScanningDeviceHasAssignedAuthorRepresentedOrganizationId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Tko5RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedAuthor.representedOrganization.id->forAll(ident : datatypes::II | not ident.root.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2TqvXRSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_ChEisEcEEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2TqvZBSVEeGGzu7fmW9pXw" name="ScanDataEnterer">
      <ownedComment xmi:id="_2TqvZRSVEeGGzu7fmW9pXw" annotatedElement="_2TqvZBSVEeGGzu7fmW9pXw">
        <body>Represents the scanner operator who produced the scanned content.</body>
      </ownedComment>
      <ownedRule xmi:id="_2TqvZhSVEeGGzu7fmW9pXw" name="ScanDataEntererTimeEqualsDocumentEffectiveTime">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2TqvZxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.time.value = self.getClinicalDocument().effectiveTime.value</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2TqvaBSVEeGGzu7fmW9pXw" name="ScanDataEntererHasAssignedEntityId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2TqvaRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.assignedEntity.id->forAll(ident : datatypes::II | not ident.root.oclIsUndefined() and not ident.extension.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49ufsEIlEeG5UvLPSY8o7A" name="ScanDataEntererTime" constrainedElement="_2TqvZBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49ufsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.time.oclIsUndefined() or self.time.isNullFlavorUndefined()) implies (not self.time.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Tw1-hSVEeGGzu7fmW9pXw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_twqZYEcEEd6besF9iFIJkQ"/>
      </generalization>
    </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="_K5K4UCUsEeG_gJw2x8CkdQ" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Mx3fUCUsEeG_gJw2x8CkdQ">
          <language>Analysis</language>
          <body>This manufacturedMaterial SHALL contain exactly one [1..1] code, which SHALL be selected from ValueSet 2.16.840.1.113883.3.88.12.80.17 Medication Clinical Drug DYNAMIC</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49ufskIlEeG5UvLPSY8o7A" name="MedicationInformationTemplateId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49ufs0IlEeG5UvLPSY8o7A">
          <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="_49uftUIlEeG5UvLPSY8o7A" name="MedicationInformationId" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49uftkIlEeG5UvLPSY8o7A">
          <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="_49uft0IlEeG5UvLPSY8o7A" name="MedicationInformationClassCode" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49ufuEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GXeUEIlEeG5UvLPSY8o7A" name="MedicationInformationManufacturedMaterial" constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.manufacturedMaterial->one(manufacturedMaterial : cda::Material | not manufacturedMaterial.oclIsUndefined() and manufacturedMaterial.oclIsKindOf(rim::Entity))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GXeUkIlEeG5UvLPSY8o7A" name="MedicationInformationManufacturerOrganization " constrainedElement="_2T9DQBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeU0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</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="_2UJQeBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocument">
      <ownedComment xmi:id="_2Uhq-RSVEeGGzu7fmW9pXw" annotatedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <body>A variety of legacy paper, film, electronic and scanner outputted formats are used to store and exchange clinical documents. These formats are not designed for healthcare documentation, and furthermore, do not have a uniform mechanism to store healthcare metadata associated with the documents, including patient identifiers, demographics, encounter, order or service information. The association of structured, healthcare metadata with this kind of document is important to maintain the integrity of the patient health record as managed by the source system. It is necessary to provide a mechanism that allows such source metadata to be stored with the document.</body>
      </ownedComment>
      <ownedComment xmi:id="_2Uhq-hSVEeGGzu7fmW9pXw" annotatedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <body>&lt;b>IMPORTANT NOTE:&lt;/b> &lt;i>The HITSP C62 specification does not include a templateId for this doument type. The id 2.16.840.1.113883.3.88.11.62.1 is included in this model to support instance validation, but we are designing a solution to allow removal of this Id.&lt;/i></body>
      </ownedComment>
      <ownedComment xmi:id="_2Uhq-xSVEeGGzu7fmW9pXw" annotatedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <body>This document type is not intended to be a replacement for IHE's XDS-SD (Cross-Transaction Specifications and Content Specifications, Scanned Documents Module) profile. Rather, it serves a more generic use case. XDS-SD is specifically for scanned documents, 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.</body>
      </ownedComment>
      <ownedComment xmi:id="_2UJQeRSVEeGGzu7fmW9pXw" annotatedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <body>Used for documents that implement both HL7 Unstructured Documents and HITSP C62 based on IHE Scanned Documents.</body>
      </ownedComment>
      <ownedRule xmi:id="_2UPXMxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentTypeIdFixed">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UPXNBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.typeId.root = '2.16.840.1.113883.1.3' and self.typeId.extension = 'POCD_HD000040'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UPXNhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasOneRecordTarget">
        <ownedComment xmi:id="_2UPXNxSVEeGGzu7fmW9pXw">
          <body>Contains identifying information about the patient concerned in the original content. In many cases this will have to be supplied by the operator.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UPXOBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UPXOhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasAssignedAuthor">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UPXOxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.assignedAuthor.assignedPerson.oclIsUndefined() &#xD;&#xA;   or not author.assignedAuthor.representedOrganization.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdsBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentPatientRoleId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdsRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->forAll(target : cda::RecordTarget | not target.patientRole.oclIsUndefined()&#xD;&#xA;   and target.patientRole.id->forAll(roleId : datatypes::II | not roleId.root.oclIsUndefined()&#xD;&#xA;   and not roleId.extension.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdsxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasPatientRoleAddress">
        <ownedComment xmi:id="_2UVdtBSVEeGGzu7fmW9pXw">
          <body>The addr element has an unbounded upper limit on occurrences. It can, and should, be replicated to include additional addresses for a patient, each minimally specified by the country sub element.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdtRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->exists(target : cda::RecordTarget | not target.patientRole.oclIsUndefined()&#xD;&#xA;   and target.patientRole.addr->exists(address : datatypes::AD | address.country->exists(c : datatypes::ADXP |&#xD;&#xA;   not c.oclIsUndefined() and c.getText().size() > 0)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdtxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasPatientName">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVduBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->exists(target : cda::RecordTarget | not target.patientRole.patient.oclIsUndefined()&#xD;&#xA;   and target.patientRole.patient.name->exists(name: datatypes::PN |&#xD;&#xA;      not name.given->isEmpty() and not name.family->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVduhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasPatientGenderCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVduxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->one(target : cda::RecordTarget |&#xD;&#xA;   not target.patientRole.patient.administrativeGenderCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdvRSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasPatientBirthYear">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdvhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->one(target : cda::RecordTarget |&#xD;&#xA;   not target.patientRole.patient.birthTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdwBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasOriginalAuthor">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdwRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::ScanOriginalAuthor))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdwxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasScanningDevice">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdxBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(consol::ScanningDevice))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdxhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasScanDataEnterer">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVdxxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.dataEnterer.oclIsUndefined() and self.dataEnterer.oclIsKindOf(consol::ScanDataEnterer)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVdzxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentLegalAuthenticatorAssignedEntityId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVd0BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.legalAuthenticator.assignedEntity.id->size() > 0 implies (&#xD;&#xA;   self.legalAuthenticator.assignedEntity.id->forAll(ident : datatypes::II |&#xD;&#xA;      not ident.root.oclIsUndefined() and not ident.extension.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UVd0hSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasNonXMLBody">
        <ownedComment xmi:id="_2UVd0xSVEeGGzu7fmW9pXw">
          <body>Used to wrap the scanned content. The nonXMLBody element is guaranteed to be unique; thus the x-path to recover the scanned content is essentially fixed.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UVd1BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.component.nonXMLBody.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkUBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasNonXMLBodyBinaryText">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkURSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.component.nonXMLBody.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkUxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasNonXMLBodyTextMediaType">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkVBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.component.nonXMLBody.text.mediaType = 'application/pdf' or self.component.nonXMLBody.text.mediaType = 'text/plain'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkVhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasNonXMLBodyTextRepresentation">
        <ownedComment xmi:id="_2UbkVxSVEeGGzu7fmW9pXw">
          <body>The @representation for both PDF and plaintext scanned content will be &quot;B64&quot;, because this profile requires the base-64 encoding of both formats.</body>
        </ownedComment>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkWBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.component.nonXMLBody.text.representation = datatypes::BinaryDataEncoding::B64</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkWhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentNoStructuredData">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkWxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.component.structuredBody.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkXRSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentOnePatientPerDocument">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkXhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.recordTarget->one(record : cda::RecordTarget | not record.patientRole.oclIsUndefined() and not record.patientRole.patient.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkYBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentPatientRoleHasId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkYRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not recordTarget.patientRole.id->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkYxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentAssignedAuthorHasAddr">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkZBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not author.assignedAuthor.addr->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkZhSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentAssignedAuthorHasTelecom">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkZxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not author.assignedAuthor.telecom->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkaRSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasRepresentedCustodianOrganization">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkahSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not custodian.assignedCustodian.representedCustodianOrganization.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkbBSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationId">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkbRSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not custodian.assignedCustodian.representedCustodianOrganization.id->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkbxSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationName">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkcBSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not custodian.assignedCustodian.representedCustodianOrganization.name.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkchSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationTelecom">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkcxSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not custodian.assignedCustodian.representedCustodianOrganization.telecom.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2UbkdRSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationAddr">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2UbkdhSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not custodian.assignedCustodian.representedCustodianOrganization.addr.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Uhq8BSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasNonXMLBodyText">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Uhq8RSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>not self.component.nonXMLBody.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Uhq8xSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasTextReferenceOrRepresentation">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Uhq9BSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>(not self.component.nonXMLBody.text.reference.oclIsUndefined() and self.component.nonXMLBody.text.reference.isDefined('value')) or (self.component.nonXMLBody.text.representation = datatypes::BinaryDataEncoding::B64 and self.component.nonXMLBody.text.isDefined('mediaType') and self.component.nonXMLBody.text.getText().size() > 0)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_2Uhq9hSVEeGGzu7fmW9pXw" name="UnstructuredOrScannedDocumentHasTextMediaTypeValueSet">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_2Uhq9xSVEeGGzu7fmW9pXw">
          <language>OCL</language>
          <body>self.component.nonXMLBody.text.isDefined('mediaType') implies (self.component.nonXMLBody.text.mediaType = 'application/msword' or self.component.nonXMLBody.text.mediaType = 'application/pdf' or self.component.nonXMLBody.text.mediaType = 'text/plain' or self.component.nonXMLBody.text.mediaType = 'text/rtf' or self.component.nonXMLBody.text.mediaType = 'text/html' or self.component.nonXMLBody.text.mediaType = 'image/gif' or self.component.nonXMLBody.text.mediaType = 'image/tiff' or self.component.nonXMLBody.text.mediaType = 'image/jpeg' or self.component.nonXMLBody.text.mediaType = 'image/png')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_49ufukIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_49ufu0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.19.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-eGkEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentCode" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-eGkUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-eGkkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentEffectiveTime" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-eGk0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-eGlEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentId" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-eGlUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.id.oclIsUndefined() or self.id.isNullFlavorUndefined()) implies (not self.id.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-eGlkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentLanguageCode" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-eGl0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.languageCode.oclIsUndefined() or self.languageCode.isNullFlavorUndefined()) implies (not self.languageCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-n3kEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentTitle" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-n3kUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-n3kkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentTypeId" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-n3k0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.typeId.oclIsUndefined() or self.typeId.isNullFlavorUndefined()) implies (not self.typeId.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-n3lEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentScanOriginalAuthor" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-n3lUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-n3lkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentScanningDevice" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-n3l0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->exists(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(cda::Author))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-xBgEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentScanDataEnterer" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-xBgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.dataEnterer->one(dataEnterer : cda::DataEnterer | not dataEnterer.oclIsUndefined() and dataEnterer.oclIsKindOf(cda::DataEnterer))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-xBgkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentLegalAuthenticator" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-xBg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.legalAuthenticator->one(legalAuthenticator : cda::LegalAuthenticator | not legalAuthenticator.oclIsUndefined() and legalAuthenticator.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-xBhEIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentDocumentationOf" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-xBhUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-xBhkIlEeG5UvLPSY8o7A" name="UnstructuredOrScannedDocumentCustodian" constrainedElement="_2UJQeBSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-xBh0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.custodian->one(custodian : cda::Custodian | not custodian.oclIsUndefined() and custodian.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2Uhq_BSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2Uhq_hSVEeGGzu7fmW9pXw" name="ReferralSummary">
      <ownedRule xmi:id="_4-xBiUIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2Uhq_hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-xBikIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.3.88.11.48.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4-6ygEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_2Uhq_hSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-6ygUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2UnxkBSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_2UnxkRSVEeGGzu7fmW9pXw" name="DischargeSummary">
      <ownedRule xmi:id="_4-6yg0IlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsTemplateId" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-6yhEIlEeG5UvLPSY8o7A">
          <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="_4-6yhkIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4-6yh0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_EjhUIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalAdmissionMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_EjhkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_NtcEIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalAdmissionDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NtcUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_Ntd0IlEeG5UvLPSY8o7A" name="DischargeSummaryAdvanceDirectivesSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NteEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_NtfkIlEeG5UvLPSY8o7A" name="DischargeSummaryAllergiesSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_Ntf0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_NthUIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalDischargeDiagnosisSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NthkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_NtjEIlEeG5UvLPSY8o7A" name="DischargeSummaryDischargeDietSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NtjUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_XecEIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XecUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeMedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_Xed0IlEeG5UvLPSY8o7A" name="DischargeSummaryFunctionalStatusSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XeeEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_XefkIlEeG5UvLPSY8o7A" name="DischargeSummaryHistoryOfPresentIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_Xef0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_XehUIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalCourseSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XehkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_XejEIlEeG5UvLPSY8o7A" name="DischargeSummaryMedicalEquipmentSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XejUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_hPdEIlEeG5UvLPSY8o7A" name="DischargeSummaryPhysicalExamSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPdUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_hPe0IlEeG5UvLPSY8o7A" name="DischargeSummaryPlanOfCareSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPfEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_hPgkIlEeG5UvLPSY8o7A" name="DischargeSummaryHistoryOfPastIllnessSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_hPiUIlEeG5UvLPSY8o7A" name="DischargeSummaryVitalSignsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPikIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M7ZUEIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOf" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M7ZWUIlEeG5UvLPSY8o7A" name="DischargeSummaryChiefComplaintAndReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZWkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5M7ZYEIlEeG5UvLPSY8o7A" name="DischargeSummaryChiefComplaintSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NEjRUIlEeG5UvLPSY8o7A" name="DischargeSummaryFamilyHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjRkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NEjTEIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalConsultationsSection " constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjTUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NEjU0IlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalDischargeInstructionsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjVEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NEjWkIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalDischargePhysicalSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjW0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NEjYUIlEeG5UvLPSY8o7A" name="DischargeSummaryHospitalDischargeStudiesSummarySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjYkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NOURUIlEeG5UvLPSY8o7A" name="DischargeSummaryImmunizationsSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOURkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NOUTEIlEeG5UvLPSY8o7A" name="DischargeSummaryProblemSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUTUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NOUU0IlEeG5UvLPSY8o7A" name="DischargeSummaryProceduresSectionEntriesOptional" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUVEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NOUWkIlEeG5UvLPSY8o7A" name="DischargeSummaryReasonForVisitSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUW0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NYFQEIlEeG5UvLPSY8o7A" name="DischargeSummaryReviewOfSystemsSection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NYFR0IlEeG5UvLPSY8o7A" name="DischargeSummarySocialHistorySection" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFSEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S4kIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S40IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S5EIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S5UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S5kIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S50IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S6EIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S6UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S6kIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S60IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S7EIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S7UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD4EIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD4kIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD40IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD5EIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD5UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD5kIlEeG5UvLPSY8o7A" name="DischargeSummaryComponentOfEncompassingEncounter" constrainedElement="_2UnxkRSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD50IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->select(not oclIsUndefined())->forAll(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_2U6FfBSVEeGGzu7fmW9pXw" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_7G6B4DzDEeGMk58Mp9-wVA" name="ComponentOf">
        <ownedComment xmi:id="_ceudYD0gEeGagp6xeAJzMA">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5M7ZUkIlEeG5UvLPSY8o7A" name="ComponentOfEncompassingEncounter" constrainedElement="_7G6B4DzDEeGMk58Mp9-wVA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZU0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_DZY1cDzEEeGMk58Mp9-wVA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_TeTqkDzEEeGMk58Mp9-wVA" name="EncompassingEncounter3">
          <ownedRule xmi:id="_8bTXEDzFEeGMk58Mp9-wVA" name="EncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow" constrainedElement="_TeTqkDzEEeGMk58Mp9-wVA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="__jugkDzFEeGMk58Mp9-wVA">
              <language>OCL</language>
              <body>not self.effectiveTime.low.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_Ejp-QDzGEeGMk58Mp9-wVA" name="EncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh" constrainedElement="_TeTqkDzEEeGMk58Mp9-wVA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ejp-QTzGEeGMk58Mp9-wVA">
              <language>OCL</language>
              <body>not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_4_EjgUIlEeG5UvLPSY8o7A" name="EncompassingEncounter3EffectiveTime" constrainedElement="_TeTqkDzEEeGMk58Mp9-wVA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_EjgkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5M7ZVUIlEeG5UvLPSY8o7A" name="EncompassingEncounter3ResponsibleParty" constrainedElement="_TeTqkDzEEeGMk58Mp9-wVA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZVkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5M7ZV0IlEeG5UvLPSY8o7A" name="EncompassingEncounter3EncounterParticipant" constrainedElement="_TeTqkDzEEeGMk58Mp9-wVA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZWEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_liV3wDzEEeGMk58Mp9-wVA">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_cALIgDzFEeGMk58Mp9-wVA" name="ResponsibleParty">
            <ownedRule xmi:id="_cALIgTzFEeGMk58Mp9-wVA" name="ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_cALIgDzFEeGMk58Mp9-wVA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_cALIgjzFEeGMk58Mp9-wVA">
                <language>OCL</language>
                <body>not self.assignedEntity.assignedPerson.oclIsUndefined() or not self.assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5NYFTkIlEeG5UvLPSY8o7A" name="ResponsiblePartyAssignedEntity" constrainedElement="_cALIgDzFEeGMk58Mp9-wVA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFT0IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_cALIgzzFEeGMk58Mp9-wVA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_hfdrgEcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_dTBQcDzFEeGMk58Mp9-wVA" name="EncounterParticipant">
            <ownedRule xmi:id="_dTBQcTzFEeGMk58Mp9-wVA" name="EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_tUQLcDswEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_dTBQcjzFEeGMk58Mp9-wVA">
                <language>OCL</language>
                <body>not self.assignedEntity.assignedPerson.oclIsUndefined() or not self.assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5NYFUEIlEeG5UvLPSY8o7A" name="EncounterParticipantAssignedEntity" constrainedElement="_dTBQcDzFEeGMk58Mp9-wVA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFUUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_dTBQczzFEeGMk58Mp9-wVA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_5t1WAEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_4_Ejh0IlEeG5UvLPSY8o7A" name="getHospitalAdmissionMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_4_EjikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_EjikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_Ejh0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_Eji0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionMedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::HospitalAdmissionMedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_EjiEIlEeG5UvLPSY8o7A" type="_2Poj5BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_EjiUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_NtckIlEeG5UvLPSY8o7A" name="getHospitalAdmissionDiagnosisSection" isQuery="true" bodyCondition="_4_NtdUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_NtdUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_NtckIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NtdkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalAdmissionDiagnosisSection))->asSequence()->first().oclAsType(consol::HospitalAdmissionDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_Ntc0IlEeG5UvLPSY8o7A" type="_2PidQhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_NtdEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_NteUIlEeG5UvLPSY8o7A" name="getAdvanceDirectivesSection" isQuery="true" bodyCondition="_4_NtfEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_NtfEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_NteUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NtfUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AdvanceDirectivesSection))->asSequence()->first().oclAsType(consol::AdvanceDirectivesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_NtekIlEeG5UvLPSY8o7A" type="_2KgzUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_Nte0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_NtgEIlEeG5UvLPSY8o7A" name="getAllergiesSection" isQuery="true" bodyCondition="_4_Ntg0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_Ntg0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_NtgEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NthEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSection))->asSequence()->first().oclAsType(consol::AllergiesSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_NtgUIlEeG5UvLPSY8o7A" type="_2LMIwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_NtgkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_Nth0IlEeG5UvLPSY8o7A" name="getHospitalDischargeDiagnosisSection" isQuery="true" bodyCondition="_4_NtikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_NtikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_Nth0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_Nti0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeDiagnosisSection))->asSequence()->first().oclAsType(consol::HospitalDischargeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_NtiEIlEeG5UvLPSY8o7A" type="_2PidURSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_NtiUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_NtjkIlEeG5UvLPSY8o7A" name="getDischargeDietSection" isQuery="true" bodyCondition="_4_NtkUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_NtkUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_NtjkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_NtkkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::DischargeDietSection))->asSequence()->first().oclAsType(consol::DischargeDietSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_Ntj0IlEeG5UvLPSY8o7A" type="_2Uz-4xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_NtkEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_XeckIlEeG5UvLPSY8o7A" name="getHospitalDischargeMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_4_XedUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_XedUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_XeckIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XedkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeMedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::HospitalDischargeMedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_Xec0IlEeG5UvLPSY8o7A" type="_2Poj7RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_XedEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_XeeUIlEeG5UvLPSY8o7A" name="getFunctionalStatusSection" isQuery="true" bodyCondition="_4_XefEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_XefEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_XeeUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XefUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FunctionalStatusSection))->asSequence()->first().oclAsType(consol::FunctionalStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_XeekIlEeG5UvLPSY8o7A" type="_2KKOBhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_Xee0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_XegEIlEeG5UvLPSY8o7A" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_4_Xeg0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_Xeg0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_XegEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_XehEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_XegUIlEeG5UvLPSY8o7A" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_XegkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_Xeh0IlEeG5UvLPSY8o7A" name="getHospitalCourseSection" isQuery="true" bodyCondition="_4_XeikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_XeikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_Xeh0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_Xei0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalCourseSection))->asSequence()->first().oclAsType(consol::HospitalCourseSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_XeiEIlEeG5UvLPSY8o7A" type="_2RqkOxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_XeiUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_XejkIlEeG5UvLPSY8o7A" name="getMedicalEquipmentSection" isQuery="true" bodyCondition="_4_hPckIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_hPckIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_XejkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPc0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalEquipmentSection))->asSequence()->first().oclAsType(consol::MedicalEquipmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_hPcEIlEeG5UvLPSY8o7A" type="_2KEucBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_hPcUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_hPdkIlEeG5UvLPSY8o7A" name="getPhysicalExamSection" isQuery="true" bodyCondition="_4_hPeUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_hPeUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_hPdkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPekIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->first().oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_hPd0IlEeG5UvLPSY8o7A" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_hPeEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_hPfUIlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_4_hPgEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_hPgEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_hPfUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPgUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_hPfkIlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_hPf0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_hPhEIlEeG5UvLPSY8o7A" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_4_hPh0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_hPh0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_hPhEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPiEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_hPhUIlEeG5UvLPSY8o7A" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_hPhkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_4_hPi0IlEeG5UvLPSY8o7A" name="getVitalSignsSection" isQuery="true" bodyCondition="_4_hPjkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_4_hPjkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_4_hPi0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPj0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSection))->asSequence()->first().oclAsType(consol::VitalSignsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_4_hPjEIlEeG5UvLPSY8o7A" type="_2OfUcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_hPjUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5M7ZW0IlEeG5UvLPSY8o7A" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_5M7ZXkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5M7ZXkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5M7ZW0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5M7ZX0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->first().oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5M7ZXEIlEeG5UvLPSY8o7A" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5M7ZXUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NEjQEIlEeG5UvLPSY8o7A" name="getChiefComplaintSection" isQuery="true" bodyCondition="_5NEjQ0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NEjQ0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NEjQEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjREIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->first().oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NEjQUIlEeG5UvLPSY8o7A" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NEjQkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NEjR0IlEeG5UvLPSY8o7A" name="getFamilyHistorySection" isQuery="true" bodyCondition="_5NEjSkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NEjSkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NEjR0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjS0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->first().oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NEjSEIlEeG5UvLPSY8o7A" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NEjSUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NEjTkIlEeG5UvLPSY8o7A" name="getHospitalConsultationsSection " isQuery="true" bodyCondition="_5NEjUUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NEjUUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NEjTkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjUkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalConsultationsSection ))->asSequence()->first().oclAsType(consol::HospitalConsultationsSection )</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NEjT0IlEeG5UvLPSY8o7A" type="_eKFbUDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NEjUEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NEjVUIlEeG5UvLPSY8o7A" name="getHospitalDischargeInstructionsSection" isQuery="true" bodyCondition="_5NEjWEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NEjWEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NEjVUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjWUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeInstructionsSection))->asSequence()->first().oclAsType(consol::HospitalDischargeInstructionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NEjVkIlEeG5UvLPSY8o7A" type="_lBergCUMEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NEjV0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NEjXEIlEeG5UvLPSY8o7A" name="getHospitalDischargePhysicalSection" isQuery="true" bodyCondition="_5NEjX0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NEjX0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NEjXEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NEjYEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargePhysicalSection))->asSequence()->first().oclAsType(consol::HospitalDischargePhysicalSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NEjXUIlEeG5UvLPSY8o7A" type="_WikGsCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NEjXkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NOUQEIlEeG5UvLPSY8o7A" name="getHospitalDischargeStudiesSummarySection" isQuery="true" bodyCondition="_5NOUQ0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NOUQ0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NOUQEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUREIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HospitalDischargeStudiesSummarySection))->asSequence()->first().oclAsType(consol::HospitalDischargeStudiesSummarySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NOUQUIlEeG5UvLPSY8o7A" type="_38AXoCUTEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NOUQkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NOUR0IlEeG5UvLPSY8o7A" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_5NOUSkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NOUSkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NOUR0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUS0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NOUSEIlEeG5UvLPSY8o7A" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NOUSUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NOUTkIlEeG5UvLPSY8o7A" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_5NOUUUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NOUUUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NOUTkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUUkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NOUT0IlEeG5UvLPSY8o7A" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NOUUEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NOUVUIlEeG5UvLPSY8o7A" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_5NOUWEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NOUWEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NOUVUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUWUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NOUVkIlEeG5UvLPSY8o7A" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NOUV0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NOUXEIlEeG5UvLPSY8o7A" name="getReasonForVisitSection" isQuery="true" bodyCondition="_5NOUX0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NOUX0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NOUXEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NOUYEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->first().oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NOUXUIlEeG5UvLPSY8o7A" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NOUXkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NYFQkIlEeG5UvLPSY8o7A" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_5NYFRUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NYFRUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NYFQkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFRkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->first().oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NYFQ0IlEeG5UvLPSY8o7A" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NYFREIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5NYFSUIlEeG5UvLPSY8o7A" name="getSocialHistorySection" isQuery="true" bodyCondition="_5NYFTEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5NYFTEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5NYFSUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFTUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->first().oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5NYFSkIlEeG5UvLPSY8o7A" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5NYFS0IlEeG5UvLPSY8o7A" 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() > 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_hPkEIlEeG5UvLPSY8o7A" name="IndicationTemplateId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_hPkUIlEeG5UvLPSY8o7A">
          <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="_4_qZYEIlEeG5UvLPSY8o7A" name="IndicationClassCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_qZYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_qZYkIlEeG5UvLPSY8o7A" name="IndicationMoodCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_qZY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_qZZEIlEeG5UvLPSY8o7A" name="IndicationId" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_qZZUIlEeG5UvLPSY8o7A">
          <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="_4_qZZkIlEeG5UvLPSY8o7A" name="IndicationCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_qZZ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_0KYEIlEeG5UvLPSY8o7A" name="IndicationStatusCode" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_0KYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_0KYkIlEeG5UvLPSY8o7A" name="IndicationEffectiveTime" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_0KY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_0KZEIlEeG5UvLPSY8o7A" name="IndicationValue" constrainedElement="_sHrUoBUSEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_0KZUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</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">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_IGiTgBq2EeGo461UQq-B1g">
          <language>OCL</language>
          <body>not self.playingEntity.oclIsUndefined() implies self.playingEntity.code->size() =1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_9UV0IlEeG5UvLPSY8o7A" name="DrugVehicleTemplateId" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_9UWEIlEeG5UvLPSY8o7A">
          <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="_4_9UWkIlEeG5UvLPSY8o7A" name="DrugVehicleClassCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_9UW0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4_9UXEIlEeG5UvLPSY8o7A" name="DrugVehicleCode" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4_9UXUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '412307009' and value.codeSystem = '2.16.840.1.113883.6.96'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ElVoEIlEeG5UvLPSY8o7A" name="DrugVehiclePlayingEntity" constrainedElement="_VBXq8BUTEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ElVoUIlEeG5UvLPSY8o7A">
          <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="_5AHFUEIlEeG5UvLPSY8o7A" name="MedicationDispenseTemplateId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AHFUUIlEeG5UvLPSY8o7A">
          <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="_5AHFU0IlEeG5UvLPSY8o7A" name="MedicationDispenseClassCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AHFVEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AHFVUIlEeG5UvLPSY8o7A" name="MedicationDispenseEffectiveTime" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AHFVkIlEeG5UvLPSY8o7A">
          <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="_5AHFV0IlEeG5UvLPSY8o7A" name="MedicationDispenseId" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AHFWEIlEeG5UvLPSY8o7A">
          <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="_5AHFWUIlEeG5UvLPSY8o7A" name="MedicationDispenseMoodCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AHFWkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AQ2UEIlEeG5UvLPSY8o7A" name="MedicationDispenseRepeatNumber" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AQ2UUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AQ2UkIlEeG5UvLPSY8o7A" name="MedicationDispenseStatusCode" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AQ2U0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.14' and (value.code = 'aborted' or value.code = 'completed')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5E4QlUIlEeG5UvLPSY8o7A" name="MedicationDispensePerformer2" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4QlkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5E4Ql0IlEeG5UvLPSY8o7A" name="MedicationDispenseAssignedEntity" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4QmEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.assignedEntity.oclIsUndefined() and performer.assignedEntity.oclIsKindOf(rim::Role))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5E4QnkIlEeG5UvLPSY8o7A" name="MedicationDispenseMedicationSupplyOrder" constrainedElement="_DpoGkBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4Qn0IlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_DpoGkRUUEeG6PvUxSTZnaw">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_3gL0sEbuEd6besF9iFIJkQ"/>
      </generalization>
      <ownedOperation xmi:id="_5E4QmUIlEeG5UvLPSY8o7A" name="getAssignedEntity" isQuery="true" bodyCondition="_5E4QnEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5E4QnEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5E4QmUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4QnUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAssignedEntities()->select(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))->asSequence()->first().oclAsType(rim::Role)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5E4QmkIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.hl7.rim/model/rim.uml#_eITxUIVfEd-9G7Mk0NuIMg"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5E4Qm0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5E4QoEIlEeG5UvLPSY8o7A" name="getMedicationSupplyOrder" isQuery="true" bodyCondition="_5E4Qo0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5E4Qo0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5E4QoEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4QpEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSupplies()->select(supply : cda::Supply | not supply.oclIsUndefined() and supply.oclIsKindOf(consol::MedicationSupplyOrder))->asSequence()->first().oclAsType(consol::MedicationSupplyOrder)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5E4QoUIlEeG5UvLPSY8o7A" type="_j3aTQBrTEeGo461UQq-B1g" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5E4QokIlEeG5UvLPSY8o7A" 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()</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="_5AQ2W0IlEeG5UvLPSY8o7A" name="PreconditionForSubstanceAdministrationTemplateId" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AQ2XEIlEeG5UvLPSY8o7A">
          <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="_5AaAQEIlEeG5UvLPSY8o7A" name="PreconditionForSubstanceAdministrationCriterion" constrainedElement="_chEhQBUUEeG6PvUxSTZnaw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AaAQUIlEeG5UvLPSY8o7A">
          <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">
      <ownedRule xmi:id="_5AaAS0IlEeG5UvLPSY8o7A" name="PolicyActivityTemplateId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AaATEIlEeG5UvLPSY8o7A">
          <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="_5AjxQEIlEeG5UvLPSY8o7A" name="PolicyActivityClassCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AjxQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AjxQkIlEeG5UvLPSY8o7A" name="PolicyActivityCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AjxQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AjxREIlEeG5UvLPSY8o7A" name="PolicyActivityId" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AjxRUIlEeG5UvLPSY8o7A">
          <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="_5AjxRkIlEeG5UvLPSY8o7A" name="PolicyActivityMoodCode" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AjxR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EbkpUIlEeG5UvLPSY8o7A" name="PolicyActivityAuthorizationActivity" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EbkpkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.act.oclIsUndefined() and entryRelationship.act.oclIsKindOf(consol::AuthorizationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::REFR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxobkIlEeG5UvLPSY8o7A" name="PolicyActivityPerformer" constrainedElement="_PZBdMBUlEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Mxob0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->one(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_PZBdMRUlEeGvPruliC3crg">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_YiANsDxYEd6JwqSGecoePg"/>
      </generalization>
      <ownedOperation xmi:id="_5Ebkp0IlEeG5UvLPSY8o7A" name="getAuthorizationActivity" isQuery="true" bodyCondition="_5EbkqkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5EbkqkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Ebkp0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Ebkq0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::AuthorizationActivity))->asSequence()->first().oclAsType(consol::AuthorizationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5EbkqEIlEeG5UvLPSY8o7A" type="_XUoXwBnZEeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5EbkqUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_Cg3pkBUmEeGvPruliC3crg" name="CoverageActivity">
      <ownedRule xmi:id="_5AjxSEIlEeG5UvLPSY8o7A" name="CoverageActivityTemplateId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AjxSUIlEeG5UvLPSY8o7A">
          <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="_5AtiQEIlEeG5UvLPSY8o7A" name="CoverageActivityClassCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AtiQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AtiQkIlEeG5UvLPSY8o7A" name="CoverageActivityCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AtiQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '48768-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5AtiREIlEeG5UvLPSY8o7A" name="CoverageActivityId" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AtiRUIlEeG5UvLPSY8o7A">
          <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="_5AtiRkIlEeG5UvLPSY8o7A" name="CoverageActivityMoodCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5AtiR0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5A2sMEIlEeG5UvLPSY8o7A" name="CoverageActivityStatusCode" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5A2sMkIlEeG5UvLPSY8o7A" name="CoverageActivityPolicyActivity" constrainedElement="_Cg3pkBUmEeGvPruliC3crg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sM0IlEeG5UvLPSY8o7A">
          <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="_5A2sNEIlEeG5UvLPSY8o7A" name="getPolicyActivities" isQuery="true" bodyCondition="_5A2sN0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5A2sN0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5A2sNEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sOEIlEeG5UvLPSY8o7A">
            <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="_5A2sNUIlEeG5UvLPSY8o7A" type="_PZBdMBUlEeGvPruliC3crg" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5A2sNkIlEeG5UvLPSY8o7A" 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.reference.oclIsUndefined()</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.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</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 | er.act.oclIsKindOf(consol::AgeObservation))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5A2sR0IlEeG5UvLPSY8o7A" name="ProblemObservationTemplateId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5A2sSEIlEeG5UvLPSY8o7A">
          <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="_5BAdMUIlEeG5UvLPSY8o7A" name="ProblemObservationClassCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BAdMkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BAdM0IlEeG5UvLPSY8o7A" name="ProblemObservationMoodCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BAdNEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BAdNUIlEeG5UvLPSY8o7A" name="ProblemObservationNegationInd" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BAdNkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.negationInd.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BJnIEIlEeG5UvLPSY8o7A" name="ProblemObservationId" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BJnIUIlEeG5UvLPSY8o7A">
          <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="_5BJnIkIlEeG5UvLPSY8o7A" name="ProblemObservationCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BJnI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BJnJEIlEeG5UvLPSY8o7A" name="ProblemObservationText" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BJnJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BTYIEIlEeG5UvLPSY8o7A" name="ProblemObservationStatusCode" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BTYIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BTYIkIlEeG5UvLPSY8o7A" name="ProblemObservationEffectiveTime" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BTYI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BTYJEIlEeG5UvLPSY8o7A" name="ProblemObservationValue" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BTYJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BTYJkIlEeG5UvLPSY8o7A" name="ProblemObservationAgeObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BTYJ0IlEeG5UvLPSY8o7A">
          <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="_5BdJJ0IlEeG5UvLPSY8o7A" name="ProblemObservationHealthStatusObservation" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJKEIlEeG5UvLPSY8o7A">
          <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="_5BwEEkIlEeG5UvLPSY8o7A" name="ProblemObservationProblemStatus" constrainedElement="_5Ha7ABUyEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEE0IlEeG5UvLPSY8o7A">
          <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="_5BTYKEIlEeG5UvLPSY8o7A" name="getAgeObservation" isQuery="true" bodyCondition="_5BTYK0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5BTYK0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5BTYKEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BTYLEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AgeObservation))->asSequence()->first().oclAsType(consol::AgeObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5BTYKUIlEeG5UvLPSY8o7A" type="_2EqqABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5BTYKkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5BdJKUIlEeG5UvLPSY8o7A" name="getHealthStatusObservation" isQuery="true" bodyCondition="_5BdJLEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5BdJLEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5BdJKUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJLUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::HealthStatusObservation))->asSequence()->first().oclAsType(consol::HealthStatusObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5BdJKkIlEeG5UvLPSY8o7A" type="_2ExXsBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5BdJK0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5BwEFEIlEeG5UvLPSY8o7A" name="getProblemStatus" isQuery="true" bodyCondition="_5BwEF0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5BwEF0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5BwEFEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEGEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemStatus))->asSequence()->first().oclAsType(consol::ProblemStatus)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5BwEFUIlEeG5UvLPSY8o7A" type="_SjN_8BUzEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5BwEFkIlEeG5UvLPSY8o7A" 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.reference.oclIsUndefined()</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.getSection().text.getText(self.text.reference.value.substring(2, self.text.reference.value.size())).oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BdJLkIlEeG5UvLPSY8o7A" name="ProblemStatusTemplateId" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJL0IlEeG5UvLPSY8o7A">
          <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="_5BdJMUIlEeG5UvLPSY8o7A" name="ProblemStatusClassCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BdJMkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::ActClassObservation::OBS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BmTEEIlEeG5UvLPSY8o7A" name="ProblemStatusMoodCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BmTEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_ActMoodDocumentObservation::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BmTEkIlEeG5UvLPSY8o7A" name="ProblemStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BmTE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '33999-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BmTFEIlEeG5UvLPSY8o7A" name="ProblemStatusText" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BmTFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.text.oclIsUndefined() or self.text.isNullFlavorUndefined()) implies (not self.text.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BmTFkIlEeG5UvLPSY8o7A" name="ProblemStatusStatusCode" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BmTF0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5BwEEEIlEeG5UvLPSY8o7A" name="ProblemStatusValue" constrainedElement="_SjN_8BUzEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BwEEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.value->isEmpty() or self.value->exists(element | element.isNullFlavorUndefined())) implies (self.value->size() = 1 and self.value->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;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="_5CC_HEIlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonTemplateId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CC_HUIlEeG5UvLPSY8o7A">
          <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="_5CMwAUIlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonClassCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CMwAkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5CMwA0IlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CMwBEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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="_5CMwBUIlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonId" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CMwBkIlEeG5UvLPSY8o7A">
          <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="_5CMwB0IlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonMoodCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CMwCEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5CV58EIlEeG5UvLPSY8o7A" name="ImmunizationRefusalReasonStatusCode" constrainedElement="__qYdcBVNEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CV58UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;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="_5CV5-UIlEeG5UvLPSY8o7A" name="ImmunizationMedicationInformationTemplateId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CV5-kIlEeG5UvLPSY8o7A">
          <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="_5CV5_EIlEeG5UvLPSY8o7A" name="ImmunizationMedicationInformationClassCode" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5CV5_UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cfq8EIlEeG5UvLPSY8o7A" name="ImmunizationMedicationInformationId" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq8UIlEeG5UvLPSY8o7A">
          <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="_5FCBpUIlEeG5UvLPSY8o7A" name="ImmunizationMedicationInformationOrganization" constrainedElement="_daTqABVOEeGbmN_W114JUw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FCBpkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.manufacturerOrganization->one(manufacturerOrganization : cda::Organization | not manufacturerOrganization.oclIsUndefined() and manufacturerOrganization.oclIsKindOf(rim::Entity))</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="_5Cfq-0IlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalTemplateId" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq_EIlEeG5UvLPSY8o7A">
          <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="_5Cfq_kIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalCode" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cfq_0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '48765-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cpb8EIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalTitle" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cpb8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cpb8kIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalText" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cpb80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GOUaUIlEeG5UvLPSY8o7A" name="AllergiesSectionEntriesOptionalAllergyProblemAct" constrainedElement="_bGzYgBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUakIlEeG5UvLPSY8o7A">
          <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="_5GOUa0IlEeG5UvLPSY8o7A" name="getAllergyProblemActs" isQuery="true" bodyCondition="_5GOUbkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GOUbkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GOUa0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUb0IlEeG5UvLPSY8o7A">
            <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="_5GOUbEIlEeG5UvLPSY8o7A" type="_2EAisBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GOUbUIlEeG5UvLPSY8o7A" 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="_5Cpb9EIlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalTemplateId" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cpb9UIlEeG5UvLPSY8o7A">
          <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="_5Cpb90IlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalCode" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cpb-EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10160-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cyl4EIlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalTitle" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cyl4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined() and self.title.getText() = 'Medications')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cyl4kIlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalText" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cyl40IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GOUcEIlEeG5UvLPSY8o7A" name="MedicationsSectionEntriesOptionalMedicationActivity" constrainedElement="_iAoXEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUcUIlEeG5UvLPSY8o7A">
          <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="_5GOUckIlEeG5UvLPSY8o7A" name="getMedicationActivities" isQuery="true" bodyCondition="_5GOUdUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GOUdUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GOUckIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUdkIlEeG5UvLPSY8o7A">
            <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="_5GOUc0IlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GOUdEIlEeG5UvLPSY8o7A" 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="_5Cyl5EIlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalTemplateId" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cyl5UIlEeG5UvLPSY8o7A">
          <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="_5Cyl50IlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalCode" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cyl6EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11450-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Cyl6UIlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalTitle" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Cyl6kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5C8W4EIlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalText" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5C8W4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GrAVUIlEeG5UvLPSY8o7A" name="ProblemSectionEntriesOptionalProblemConcern" constrainedElement="_naxrkBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAVkIlEeG5UvLPSY8o7A">
          <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="_5GrAV0IlEeG5UvLPSY8o7A" name="getProblemConcerns" isQuery="true" bodyCondition="_5GrAWkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GrAWkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GrAV0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAW0IlEeG5UvLPSY8o7A">
            <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="_5GrAWEIlEeG5UvLPSY8o7A" type="_2H6yUBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GrAWUIlEeG5UvLPSY8o7A" 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="_5C8W4kIlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalTemplateId" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5C8W40IlEeG5UvLPSY8o7A">
          <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="_5C8W5UIlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalCode" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5C8W5kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '47519-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5C8W50IlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalText" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5C8W6EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FLLgEIlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalProcedureActivityProcedure" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLgUIlEeG5UvLPSY8o7A">
          <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="_5FLLh0IlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalProcedureAcivityObservation" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLiEIlEeG5UvLPSY8o7A">
          <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="_5FLLjkIlEeG5UvLPSY8o7A" name="ProceduresSectionEntriesOptionalProcedureActivityAct" constrainedElement="_s9Ig4BVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLj0IlEeG5UvLPSY8o7A">
          <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="_5FLLgkIlEeG5UvLPSY8o7A" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_5FLLhUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FLLhUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FLLgkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLhkIlEeG5UvLPSY8o7A">
            <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="_5FLLg0IlEeG5UvLPSY8o7A" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FLLhEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FLLiUIlEeG5UvLPSY8o7A" name="getProcedureAcivityObservations" isQuery="true" bodyCondition="_5FLLjEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FLLjEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FLLiUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLjUIlEeG5UvLPSY8o7A">
            <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="_5FLLikIlEeG5UvLPSY8o7A" type="_Aj7JkBg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FLLi0IlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FLLkEIlEeG5UvLPSY8o7A" name="getProcedureActivityActs" isQuery="true" bodyCondition="_5FLLk0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FLLk0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FLLkEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLlEIlEeG5UvLPSY8o7A">
            <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="_5FLLkUIlEeG5UvLPSY8o7A" type="_awdH4Bg4EeGs5a462vYX5Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FLLkkIlEeG5UvLPSY8o7A" 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="_5C8W6UIlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalTemplateId" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5C8W6kIlEeG5UvLPSY8o7A">
          <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="_5DGH4UIlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalCode" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DGH4kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '30954-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DGH40IlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalTitle" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DGH5EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DGH5UIlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalText" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DGH5kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GXeV0IlEeG5UvLPSY8o7A" name="ResultsSectionEntriesOptionalResultOrganizer" constrainedElement="_xGqiEBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeWEIlEeG5UvLPSY8o7A">
          <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="_5GXeWUIlEeG5UvLPSY8o7A" name="getResultOrganizers" isQuery="true" bodyCondition="_5GXeXEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GXeXEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GXeWUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeXUIlEeG5UvLPSY8o7A">
            <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="_5GXeWkIlEeG5UvLPSY8o7A" type="_2JxzgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GXeW0IlEeG5UvLPSY8o7A" 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>
      <ownedComment xmi:id="_1RZdIhVdEeGQCvUGzi1kDQ" annotatedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <body>&lt;p>&#xD;
    The Advance Directives Section contains information that defines the patient's expectations and requests&#xD;
    for care along with the locations of the documents. &#xD;
&lt;/p></body>
      </ownedComment>
      <ownedRule xmi:id="_5DGH50IlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalTemplateId" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DGH6EIlEeG5UvLPSY8o7A">
          <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="_5DPR0EIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalCode" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DPR0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '42348-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DPR0kIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalTitle" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DPR00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DPR1EIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalText" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DPR1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HtiKEIlEeG5UvLPSY8o7A" name="AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation" constrainedElement="_1RZdIBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiKUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(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="_5HtiKkIlEeG5UvLPSY8o7A" name="getAdvanceDirectiveObservation" isQuery="true" bodyCondition="_5HtiLUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5HtiLUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5HtiKkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiLkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::AdvanceDirectiveObservation))->asSequence()->first().oclAsType(consol::AdvanceDirectiveObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5HtiK0IlEeG5UvLPSY8o7A" type="_2KlEwBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5HtiLEIlEeG5UvLPSY8o7A" value="1"/>
        </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="_5DPR1kIlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalTemplateId" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DPR10IlEeG5UvLPSY8o7A">
          <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="_5DPR2UIlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalCode" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DPR2kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '46240-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DZC0EIlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalTitle" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DZC0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DZC0kIlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalText" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DZC00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5I51A0IlEeG5UvLPSY8o7A" name="EncountersSectionEntriesOptionalEncounterActivities" constrainedElement="_4yj2wBVdEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I51BEIlEeG5UvLPSY8o7A">
          <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="_5I51BUIlEeG5UvLPSY8o7A" name="getEncounterActivitiess" isQuery="true" bodyCondition="_5I51CEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5I51CEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5I51BUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5I51CUIlEeG5UvLPSY8o7A">
            <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="_5I51BkIlEeG5UvLPSY8o7A" type="_2LayQBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5I51B0IlEeG5UvLPSY8o7A" 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="_5DZC1EIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalTemplateId" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DZC1UIlEeG5UvLPSY8o7A">
          <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="_5DZC10IlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalCode" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DZC2EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11369-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DZC2UIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalTitle" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DZC2kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DiMwEIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalText" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DiMwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GhPWEIlEeG5UvLPSY8o7A" name="ImmunizationsSectionEntriesOptionalImmunizationActivity" constrainedElement="_EuPloBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GhPWUIlEeG5UvLPSY8o7A">
          <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="_5GrAUEIlEeG5UvLPSY8o7A" name="getImmunizationActivities" isQuery="true" bodyCondition="_5GrAU0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GrAU0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GrAUEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAVEIlEeG5UvLPSY8o7A">
            <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="_5GrAUUIlEeG5UvLPSY8o7A" type="_2MAoIBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GrAUkIlEeG5UvLPSY8o7A" 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="_5DiMwkIlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalTemplateId" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DiMw0IlEeG5UvLPSY8o7A">
          <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="_5DiMxUIlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalCode" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DiMxkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '8716-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DiMx0IlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalText" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DiMyEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5DiMyUIlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalTitle" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5DiMykIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FLLl0IlEeG5UvLPSY8o7A" name="VitalSignsSectionEntriesOptionalVitalSignsOrganizer" constrainedElement="_bRH8sBVeEeGQCvUGzi1kDQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FLLmEIlEeG5UvLPSY8o7A">
          <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="_5FU8gEIlEeG5UvLPSY8o7A" name="getVitalSignsOrganizers" isQuery="true" bodyCondition="_5FU8g0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FU8g0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FU8gEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FU8hEIlEeG5UvLPSY8o7A">
            <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="_5FU8gUIlEeG5UvLPSY8o7A" type="_2OlbCRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FU8gkIlEeG5UvLPSY8o7A" 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.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.104'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_gpDwsBxvEeGXP8PxDYviDg" name="ProcedureActivityObservationCodeOriginalText" constrainedElement="_qGzKgBrPEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gpDwsRxvEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_iKsikBxvEeGXP8PxDYviDg" name="ProcedureActivityObservationOriginalTextReferenceValue" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_iKsikRxvEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</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.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.oclIsKindOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Dr9wEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationTemplateId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Dr9wUIlEeG5UvLPSY8o7A">
          <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="_5Dr9w0IlEeG5UvLPSY8o7A" name="ProcedureActivityObservationClassCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Dr9xEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5D1uwEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationId" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D1uwUIlEeG5UvLPSY8o7A">
          <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="_5D1uwkIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D1uw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5D1uxEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationStatusCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D1uxUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.14' and (value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5D1uxkIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationValue" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D1ux0IlEeG5UvLPSY8o7A">
          <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="_5D-4sEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationEffectiveTime" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D-4sUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5D-4skIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationPriorityCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D-4s0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5D-4tEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationMethodCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D-4tUIlEeG5UvLPSY8o7A">
          <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="_5D-4tkIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationTargetSiteCode" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5D-4t0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.targetSiteCode->isEmpty() or self.targetSiteCode->exists(element | element.isNullFlavorUndefined())) implies (self.targetSiteCode->forAll(element | not element.oclIsUndefined() and element.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = element.oclAsType(datatypes::CD) in &#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.96' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FxofkIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationPerformer" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fxof0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FxogEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationServiceDeliveryLocation" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxogUIlEeG5UvLPSY8o7A">
          <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="_5Fxoh0IlEeG5UvLPSY8o7A" name="ProcedureActivityObservationProcedureEncounter" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxoiEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(cda::Encounter) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5F6yZUIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationInstructions" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6yZkIlEeG5UvLPSY8o7A">
          <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="_5F6ybEIlEeG5UvLPSY8o7A" name="ProcedureActivityObservationIndication" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6ybUIlEeG5UvLPSY8o7A">
          <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="_5F6yc0IlEeG5UvLPSY8o7A" name="ProcedureActivityObservationMedicationActivity" constrainedElement="_Aj7JkBg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6ydEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</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="_5FxogkIlEeG5UvLPSY8o7A" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_5FxohUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FxohUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FxogkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxohkIlEeG5UvLPSY8o7A">
            <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="_5Fxog0IlEeG5UvLPSY8o7A" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FxohEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5F6yYEIlEeG5UvLPSY8o7A" name="getProcedureEncounters" isQuery="true" bodyCondition="_5F6yY0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5F6yY0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5F6yYEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6yZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).oclAsType(cda::Encounter)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5F6yYUIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5F6yYkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5F6yZ0IlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_5F6yakIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5F6yakIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5F6yZ0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6ya0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5F6yaEIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5F6yaUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5F6ybkIlEeG5UvLPSY8o7A" name="getIndications" isQuery="true" bodyCondition="_5F6ycUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5F6ycUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5F6ybkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6yckIlEeG5UvLPSY8o7A">
            <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="_5F6yb0IlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5F6ycEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5F6ydUIlEeG5UvLPSY8o7A" name="getMedicationActivity" isQuery="true" bodyCondition="_5F6yeEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5F6yeEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5F6ydUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6yeUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity))->asSequence()->first().oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5F6ydkIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5F6yd0IlEeG5UvLPSY8o7A" value="1"/>
        </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.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 self.code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_rX9yIBxpEeGXP8PxDYviDg" name="ProcedureActivityActOriginalTextReferenceValue" constrainedElement="_N4ba0BrQEeGxIZCGAXKxsQ">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_rX9yIRxpEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined() implies not self.code.originalText.reference.value.oclIsUndefined()</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.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.oclIsKindOf(consol::Instructions))->forAll(ent : cda::EntryRelationship | ent.inversionInd=true)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EIpsEIlEeG5UvLPSY8o7A" name="ProcedureActivityActTemplateId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EIpsUIlEeG5UvLPSY8o7A">
          <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="_5EIps0IlEeG5UvLPSY8o7A" name="ProcedureActivityActClassCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EIptEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ESasEIlEeG5UvLPSY8o7A" name="ProcedureActivityActId" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ESasUIlEeG5UvLPSY8o7A">
          <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="_5ESaskIlEeG5UvLPSY8o7A" name="ProcedureActivityActCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ESas0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ESatEIlEeG5UvLPSY8o7A" name="ProcedureActivityActStatusCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ESatUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.5.14' and (value.code = 'completed' or value.code = 'active' or value.code = 'aborted' or value.code = 'cancelled')))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ESatkIlEeG5UvLPSY8o7A" name="ProcedureActivityActEffectiveTime" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ESat0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EbkoEIlEeG5UvLPSY8o7A" name="ProcedureActivityActPriorityCode" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EbkoUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.priorityCode.oclIsUndefined() or self.priorityCode.isNullFlavorUndefined()) implies (not self.priorityCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Fn3dUIlEeG5UvLPSY8o7A" name="ProcedureActivityActPerformer" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3dkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.performer->exists(performer : cda::Performer2 | not performer.oclIsUndefined() and performer.oclIsKindOf(cda::Performer2))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Fn3d0IlEeG5UvLPSY8o7A" name="ProcedureActivityActServiceDeliveryLocation" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3eEIlEeG5UvLPSY8o7A">
          <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="_5Fn3fkIlEeG5UvLPSY8o7A" name="ProcedureActivityActProcedureEncounter" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3f0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->exists(entryRelationship : cda::EntryRelationship | not entryRelationship.encounter.oclIsUndefined() and entryRelationship.encounter.oclIsKindOf(cda::Encounter) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Fn3hUIlEeG5UvLPSY8o7A" name="ProcedureActivityActInstructions" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3hkIlEeG5UvLPSY8o7A">
          <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="_5FxocEIlEeG5UvLPSY8o7A" name="ProcedureActivityActIndication" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxocUIlEeG5UvLPSY8o7A">
          <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="_5Fxod0IlEeG5UvLPSY8o7A" name="ProcedureActivityActMedicationActivity" constrainedElement="_awdH4Bg4EeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxoeEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(entryRelationship : cda::EntryRelationship | not entryRelationship.substanceAdministration.oclIsUndefined() and entryRelationship.substanceAdministration.oclIsKindOf(consol::MedicationActivity) and entryRelationship.typeCode = vocab::x_ActRelationshipEntryRelationship::COMP)</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="_5Fn3eUIlEeG5UvLPSY8o7A" name="getServiceDeliveryLocations" isQuery="true" bodyCondition="_5Fn3fEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Fn3fEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Fn3eUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3fUIlEeG5UvLPSY8o7A">
            <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="_5Fn3ekIlEeG5UvLPSY8o7A" type="_2LiHABSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Fn3e0IlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Fn3gEIlEeG5UvLPSY8o7A" name="getProcedureEncounters" isQuery="true" bodyCondition="_5Fn3g0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Fn3g0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Fn3gEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3hEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getEncounters()->select(encounter : cda::Encounter | not encounter.oclIsUndefined() and encounter.oclIsKindOf(cda::Encounter)).oclAsType(cda::Encounter)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Fn3gUIlEeG5UvLPSY8o7A" direction="return">
          <type xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Fn3gkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Fn3h0IlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_5Fn3ikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Fn3ikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Fn3h0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Fn3i0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Fn3iEIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Fn3iUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FxockIlEeG5UvLPSY8o7A" name="getIndications" isQuery="true" bodyCondition="_5FxodUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FxodUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FxockIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxodkIlEeG5UvLPSY8o7A">
            <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="_5Fxoc0IlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5FxodEIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5FxoeUIlEeG5UvLPSY8o7A" name="getMedicationActivity" isQuery="true" bodyCondition="_5FxofEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5FxofEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5FxoeUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FxofUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity))->asSequence()->first().oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5FxoekIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Fxoe0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_XUoXwBnZEeGs5a462vYX5Q" name="AuthorizationActivity">
      <ownedRule xmi:id="_5EbkokIlEeG5UvLPSY8o7A" name="AuthorizationActivityTemplateId" constrainedElement="_XUoXwBnZEeGs5a462vYX5Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Ebko0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = '2.16.840.1.113883.10.20.1.19')</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="_5ElVokIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderTemplateId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ElVo0IlEeG5UvLPSY8o7A">
          <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="_5ElVpUIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderClassCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ElVpkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ElVp0IlEeG5UvLPSY8o7A" name="MedicationSupplyOrderEffectiveTime" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ElVqEIlEeG5UvLPSY8o7A">
          <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="_5ElVqUIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderMoodCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ElVqkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EufkEIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderQuantity" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EufkUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.quantity.oclIsUndefined() or self.quantity.isNullFlavorUndefined()) implies (not self.quantity.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EufkkIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderRepeatNumber" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Eufk0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.repeatNumber.oclIsUndefined() or self.repeatNumber.isNullFlavorUndefined()) implies (not self.repeatNumber.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EuflEIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderStatusCode" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EuflUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EuflkIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderId" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Eufl0IlEeG5UvLPSY8o7A">
          <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="_5EufmEIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderAuthor" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5EufmUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.author->one(author : cda::Author | not author.oclIsUndefined() and author.oclIsKindOf(rim::Participation))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5EufmkIlEeG5UvLPSY8o7A" name="MedicationSupplyOrderInstructions" constrainedElement="_j3aTQBrTEeGo461UQq-B1g">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Eufm0IlEeG5UvLPSY8o7A">
          <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="_5E4QkEIlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_5E4Qk0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5E4Qk0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5E4QkEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5E4QlEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5E4QkUIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5E4QkkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_JIc0oBxEEeGIELeDlfT77A" name="ProcedureSpecimen">
      <ownedComment xmi:id="_Z47QwBxbEeGXP8PxDYviDg">
        <body>This specimen is for representing specimens obtained from a procedure</body>
      </ownedComment>
      <ownedRule xmi:id="_qp5TkBxbEeGXP8PxDYviDg" name="ProcedureSpecimenSpecimenRole" constrainedElement="_JIc0oBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_t30BEBxbEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.specimenRole->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_wOrx0BxbEeGXP8PxDYviDg" name="ProcedureSpecimenSpecimentRoleId" constrainedElement="_qp5TkBxbEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zIM8oBxbEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.specimenRole.id->size() > 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FU8hUIlEeG5UvLPSY8o7A" name="ProcedureSpecimenTemplateId" constrainedElement="_JIc0oBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FU8hkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.templateId->exists(id : datatypes::II | id.root = 'null')</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JIyy4BxEEeGIELeDlfT77A">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_mdwKcEcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_nbpGUBxEEeGIELeDlfT77A" name="ProcedurePerformer">
      <ownedRule xmi:id="_fu9akBxcEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntity" constrainedElement="_nbpGUBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kD6BkBxcEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_ofCJEBxcEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityId" constrainedElement="_fu9akBxcEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_qjD2UBxcEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.id->size() >= 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_IMfKkBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityAddr" constrainedElement="_ofCJEBxcEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_LGmyUBxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.addr->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_NG_8wBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityTelecom" constrainedElement="_IMfKkBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_QxeDYBxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.telecom->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Ss84oBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityRepOrg" constrainedElement="_NG_8wBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VRCmABxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.representedOrganization->size() &lt;= 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_X3E0IBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityRepOrgId" constrainedElement="_Ss84oBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_zVWHIBxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.representedOrganization.id->size() > 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_bkN0QBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityRepOrgName" constrainedElement="_X3E0IBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_4NUisBxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.representedOrganization.name->size() > 0</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_cs-MEBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityRepOrgAddr" constrainedElement="_bkN0QBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5BP6ABxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.representedOrganization.addr->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_eFMjQBxjEeGXP8PxDYviDg" name="ProcedurePerformerAssignedEntityRepOrgTelecom" constrainedElement="_cs-MEBxjEeGXP8PxDYviDg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_585p8BxjEeGXP8PxDYviDg">
          <language>OCL</language>
          <body>self.assignedEntity.representedOrganization.telecom->size() = 1</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_nbptYBxEEeGIELeDlfT77A">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_HP8qoEcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_qeLqQBxEEeGIELeDlfT77A" name="ProcedureEncounter">
      <ownedRule xmi:id="_5FetgUIlEeG5UvLPSY8o7A" name="ProcedureEncounterClassCode" constrainedElement="_qeLqQBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FetgkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Fetg0IlEeG5UvLPSY8o7A" name="ProcedureEncounterMoodCode" constrainedElement="_qeLqQBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FethEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5FethUIlEeG5UvLPSY8o7A" name="ProcedureEncounterId" constrainedElement="_qeLqQBxEEeGIELeDlfT77A">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5FethkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() = 1)</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_qeMRUBxEEeGIELeDlfT77A">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_AAXtEEbvEd6besF9iFIJkQ"/>
      </generalization>
    </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="_5F6yekIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryTemplateId" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5F6ye0IlEeG5UvLPSY8o7A">
          <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="_5GEjYEIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryClassCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GEjYUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GEjYkIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GEjY0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '11778-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GEjZEIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryMoodCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GEjZUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GEjZkIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryStatusCode" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GEjZ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.statusCode.oclIsUndefined() or self.statusCode.isNullFlavorUndefined()) implies (not self.statusCode.oclIsUndefined() and self.statusCode.oclIsKindOf(datatypes::CS) and &#xD;&#xA;let value : datatypes::CS = self.statusCode.oclAsType(datatypes::CS) in (&#xD;&#xA;value.code = 'completed'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5GOUYEIlEeG5UvLPSY8o7A" name="EstimatedDateOfDeliveryValue" constrainedElement="_vBswQBtpEeGT89b80j3MTg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GOUYUIlEeG5UvLPSY8o7A">
          <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="__WUM4CAMEeGKirKJsFylGA" name="MedicationInformationManufacturedMaterial">
      <ownedRule xmi:id="_5GXeVUIlEeG5UvLPSY8o7A" name="MedicationInformationManufacturedMaterialCode" constrainedElement="__WUM4CAMEeGKirKJsFylGA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GXeVkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.88' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="__WUM4SAMEeGKirKJsFylGA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_rFzJEEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_JNgjcCHZEeGFLIX-2_sWzA" name="FamilyHistorySubject">
      <ownedRule xmi:id="_kQyjkCHZEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectClassCode">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_kQ8UkCHZEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.isClassCodeDefined() and self.relatedSubject.classCode = vocab::x_DocumentSubject::PRS</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_OzXt0CHbEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectCode" constrainedElement="_JNgjcCHZEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Um3WcCHbEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject->size() = 1 implies self.relatedSubject.code->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_vjf8ACHbEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectCodeValueSet" constrainedElement="_JNgjcCHZEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xG5BYCHbEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.code->size() = 1 implies self.relatedSubject.code.codeSystem = '2.16.840.1.113883.5.111'</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_4MXPQCHbEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectSubject" constrainedElement="_vjf8ACHbEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_7Z9zsCHbEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.subject->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Fra1YCHcEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectSubjectAdmGenderCode" constrainedElement="_4MXPQCHbEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_JlW7YCHcEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.subject->size() = 1 implies (self.relatedSubject.subject.administrativeGenderCode->size() = 1 and self.relatedSubject.subject.administrativeGenderCode.codeSystem = '2.16.840.1.113883.5.1')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_pt_EsCHcEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectSubjectBirthTime" constrainedElement="_Fra1YCHcEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZrO4CHcEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.subject->size() = 1 implies self.relatedSubject.subject.birthTime->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_Fi9AcCHdEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectSubjectDeceasedInd" constrainedElement="_4MXPQCHbEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_J3O5ECHdEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.subject->size() = 1 implies self.relatedSubject.subject.sDTCDeceasedInd->size() = 1</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_WX7uoCHfEeGFLIX-2_sWzA" name="FamilyHistorySubjectRelatedSubjectSubjectDeceasedTime" constrainedElement="_Fi9AcCHdEeGFLIX-2_sWzA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Xy-wUCHfEeGFLIX-2_sWzA">
          <language>OCL</language>
          <body>self.relatedSubject.subject->size() = 1 implies self.relatedSubject.subject.sDTCDeceasedTime->size() = 1</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_JNgjcSHZEeGFLIX-2_sWzA">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_rNlWoEcaEd6besF9iFIJkQ"/>
      </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="_5GrAbEIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisSectionTemplateId" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAbUIlEeG5UvLPSY8o7A">
          <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="_5G0KQEIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisSectionCode" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G0KQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11535-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G0KQkIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisSectionTitle" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G0KQ0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G0KREIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisSectionText" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G0KRUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IAdFkIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis" constrainedElement="_2PidURSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdF0IlEeG5UvLPSY8o7A">
          <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="_5IAdGEIlEeG5UvLPSY8o7A" name="getHospitalDischargeDiagnosis" isQuery="true" bodyCondition="_5IAdG0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5IAdG0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5IAdGEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdHEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::HospitalDischargeDiagnosis))->asSequence()->first().oclAsType(consol::HospitalDischargeDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5IAdGUIlEeG5UvLPSY8o7A" type="_KtwVgCULEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5IAdGkIlEeG5UvLPSY8o7A" 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="_5G0KRkIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G0KR0IlEeG5UvLPSY8o7A">
          <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="_5G0KSUIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalCode" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G0KSkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10183-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G97QEIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalTitle" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G97QUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G97QkIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalText" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G97Q0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IAdHUIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication" constrainedElement="_2Poj7RSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdHkIlEeG5UvLPSY8o7A">
          <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="_5IAdH0IlEeG5UvLPSY8o7A" name="getDischargeMedications" isQuery="true" bodyCondition="_5IAdIkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5IAdIkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5IAdH0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdI0IlEeG5UvLPSY8o7A">
            <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="_5IAdIEIlEeG5UvLPSY8o7A" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5IAdIUIlEeG5UvLPSY8o7A" 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="_5G97REIlEeG5UvLPSY8o7A" name="HospitalCourseSectionTemplateId" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G97RUIlEeG5UvLPSY8o7A">
          <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="_5G97R0IlEeG5UvLPSY8o7A" name="HospitalCourseSectionCode" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G97SEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '8648-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5G97SUIlEeG5UvLPSY8o7A" name="HospitalCourseSectionTitle" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5G97SkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HHFMEIlEeG5UvLPSY8o7A" name="HospitalCourseSectionText" constrainedElement="_2RqkOxSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HHFMUIlEeG5UvLPSY8o7A">
          <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="_5HHFMkIlEeG5UvLPSY8o7A" name="DischargeDietSectionTemplateId" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HHFM0IlEeG5UvLPSY8o7A">
          <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="_5HHFNUIlEeG5UvLPSY8o7A" name="DischargeDietSectionCode" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HHFNkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '42344-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HHFN0IlEeG5UvLPSY8o7A" name="DischargeDietSectionTitle" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HHFOEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HHFOUIlEeG5UvLPSY8o7A" name="DischargeDietSectionText" constrainedElement="_2Uz-4xSVEeGGzu7fmW9pXw">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HHFOkIlEeG5UvLPSY8o7A">
          <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="_5HQ2MEIlEeG5UvLPSY8o7A" name="HospitalDischargeStudiesSummarySectionTemplateId" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HQ2MUIlEeG5UvLPSY8o7A">
          <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="_5HQ2M0IlEeG5UvLPSY8o7A" name="HospitalDischargeStudiesSummarySectionCode" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HQ2NEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11493-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HQ2NUIlEeG5UvLPSY8o7A" name="HospitalDischargeStudiesSummarySectionTitle" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HQ2NkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HQ2N0IlEeG5UvLPSY8o7A" name="HospitalDischargeStudiesSummarySectionText" constrainedElement="_38AXoCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HQ2OEIlEeG5UvLPSY8o7A">
          <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="_5GrAXEIlEeG5UvLPSY8o7A" name="DischargeMedicationMedicationActivity" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAXUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(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="_5HQ2OUIlEeG5UvLPSY8o7A" name="DischargeMedicationTemplateId" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HQ2OkIlEeG5UvLPSY8o7A">
          <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="_5HanMEIlEeG5UvLPSY8o7A" name="DischargeMedicationClassCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HanMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HanMkIlEeG5UvLPSY8o7A" name="DischargeMedicationMoodCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HanM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HanNEIlEeG5UvLPSY8o7A" name="DischargeMedicationCode" constrainedElement="_hD-z0CUPEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HanNUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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="_5GrAX0IlEeG5UvLPSY8o7A" name="getMedicationActivity" isQuery="true" bodyCondition="_5GrAYkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GrAYkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GrAX0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAY0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity))->asSequence()->first().oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5GrAYEIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GrAYUIlEeG5UvLPSY8o7A" value="1"/>
        </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="_5GrAZEIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisProblemObservation" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAZUIlEeG5UvLPSY8o7A">
          <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="_5HanNkIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisTemplateId" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HanN0IlEeG5UvLPSY8o7A">
          <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="_5HjxIEIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisClassCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HjxIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HjxIkIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisMoodCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HjxI0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('moodCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HjxJEIlEeG5UvLPSY8o7A" name="HospitalDischargeDiagnosisCode" constrainedElement="_KtwVgCULEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HjxJUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;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="_5GrAZ0IlEeG5UvLPSY8o7A" name="getProblemObservations" isQuery="true" bodyCondition="_5GrAakIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5GrAakIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5GrAZ0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5GrAa0IlEeG5UvLPSY8o7A">
            <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="_5GrAaEIlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GrAaUIlEeG5UvLPSY8o7A" 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="_5HjxJkIlEeG5UvLPSY8o7A" name="HospitalDischargeInstructionsSectionTemplateId" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HjxJ0IlEeG5UvLPSY8o7A">
          <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="_5HjxKUIlEeG5UvLPSY8o7A" name="HospitalDischargeInstructionsSectionCode" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HjxKkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '8653-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HtiIEIlEeG5UvLPSY8o7A" name="HospitalDischargeInstructionsSectionTitle" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5HtiIkIlEeG5UvLPSY8o7A" name="HospitalDischargeInstructionsSectionText" constrainedElement="_lBergCUMEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiI0IlEeG5UvLPSY8o7A">
          <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="_5HtiJUIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionEntriesOptionalTemplateId" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5HtiJkIlEeG5UvLPSY8o7A">
          <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="_5IKOEEIlEeG5UvLPSY8o7A" name="HospitalDischargeMedicationsSectionDischargeMedication" constrainedElement="_TytVkCUQEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOEUIlEeG5UvLPSY8o7A">
          <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"/>
      <ownedOperation xmi:id="_5IKOEkIlEeG5UvLPSY8o7A" name="getConsolDischargeMedications" isQuery="true" bodyCondition="_5IKOFUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5IKOFUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5IKOEkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOFkIlEeG5UvLPSY8o7A">
            <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="_5IKOE0IlEeG5UvLPSY8o7A" type="_hD-z0CUPEeGiOPpZVnfEJA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5IKOFEIlEeG5UvLPSY8o7A" 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="_5H3TLEIlEeG5UvLPSY8o7A" name="HospitalDischargePhysicalSectionTemplateId" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5H3TLUIlEeG5UvLPSY8o7A">
          <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="_5IAdEEIlEeG5UvLPSY8o7A" name="HospitalDischargePhysicalSectionCode" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10184-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IAdEkIlEeG5UvLPSY8o7A" name="HospitalDischargePhysicalSectionTitle" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdE0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IAdFEIlEeG5UvLPSY8o7A" name="HospitalDischargePhysicalSectionText" constrainedElement="_WikGsCUTEeGiOPpZVnfEJA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IAdFUIlEeG5UvLPSY8o7A">
          <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="_5IKOF0IlEeG5UvLPSY8o7A" name="ChiefComplaintAndReasonForVisitSectionTemplateId" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOGEIlEeG5UvLPSY8o7A">
          <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="_5IKOGkIlEeG5UvLPSY8o7A" name="ChiefComplaintAndReasonForVisitSectionCode" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOG0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '46239-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IKOHEIlEeG5UvLPSY8o7A" name="ChiefComplaintAndReasonForVisitSectionText" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOHUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5IKOHkIlEeG5UvLPSY8o7A" name="ChiefComplaintAndReasonForVisitSectionTitle" constrainedElement="_oI7CQCsaEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IKOH0IlEeG5UvLPSY8o7A">
          <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="_5ITYAEIlEeG5UvLPSY8o7A" name="ReasonForVisitSectionTemplateId" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ITYAUIlEeG5UvLPSY8o7A">
          <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="_5ITYA0IlEeG5UvLPSY8o7A" name="ReasonForVisitSectionCode" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ITYBEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '29299-5' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ITYBUIlEeG5UvLPSY8o7A" name="ReasonForVisitSectionText" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ITYBkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ITYB0IlEeG5UvLPSY8o7A" name="ReasonForVisitSectionTitle" constrainedElement="_Nm64UCscEeGHF88-qhhUMA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ITYCEIlEeG5UvLPSY8o7A">
          <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="_pjq7UCzCEeGMXrZ0DiQwGg" name="RelatedInformant">
      <ownedRule xmi:id="_5Im6BEIlEeG5UvLPSY8o7A" name="RelatedInformantAddr" constrainedElement="_pjq7UCzCEeGMXrZ0DiQwGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6BUIlEeG5UvLPSY8o7A">
          <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="_5Im6B0IlEeG5UvLPSY8o7A" name="RelatedInformantCode" constrainedElement="_pjq7UCzCEeGMXrZ0DiQwGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Im6CEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_pjriYCzCEeGMXrZ0DiQwGg">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_e-h_0EcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_D5azMCwXEeGKLc4ckmfDag" name="EncounterPerformer">
      <ownedComment xmi:id="_jO95wCwXEeGKLc4ckmfDag">
        <body>INLINE</body>
      </ownedComment>
      <generalization xmi:id="_D5azMSwXEeGKLc4ckmfDag">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_HP8qoEcaEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_I1LikCwXEeGKLc4ckmfDag" name="EncounterPerformerAssignedEntity">
      <ownedComment xmi:id="_ik63MCwXEeGKLc4ckmfDag">
        <body>INLINE</body>
      </ownedComment>
      <ownedRule xmi:id="_5IwD_UIlEeG5UvLPSY8o7A" name="EncounterPerformerAssignedEntityCode" constrainedElement="_I1LikCwXEeGKLc4ckmfDag">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5IwD_kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_I1LikSwXEeGKLc4ckmfDag">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_6qmVsEcDEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0HgNkDJAEeG6R8Pb5FT2Ow" name="AllergyObservationParticipant">
      <ownedRule xmi:id="_5JDl9UIlEeG5UvLPSY8o7A" name="AllergyObservationParticipantParticipantRole" constrainedElement="_0HgNkDJAEeG6R8Pb5FT2Ow">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JDl9kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participantRole->one(participantRole : cda::ParticipantRole | not participantRole.oclIsUndefined() and participantRole.oclIsKindOf(cda::ParticipantRole))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_0HgNkTJAEeG6R8Pb5FT2Ow">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_51DLwEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_4Lj44DJAEeG6R8Pb5FT2Ow" name="AllergyObservationParticipantRole">
      <ownedRule xmi:id="_5JDl90IlEeG5UvLPSY8o7A" name="AllergyObservationParticipantRolePlayingEntity" constrainedElement="_4Lj44DJAEeG6R8Pb5FT2Ow">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JDl-EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.playingEntity->one(playingEntity : cda::PlayingEntity | not playingEntity.oclIsUndefined() and playingEntity.oclIsKindOf(cda::PlayingEntity))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_4Lj44TJAEeG6R8Pb5FT2Ow">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#__QZaIEcZEd6besF9iFIJkQ"/>
      </generalization>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_E1B60DJBEeG6R8Pb5FT2Ow" name="AllergyObservationPlayingEntity">
      <ownedRule xmi:id="_ZIdiUDJCEeG6R8Pb5FT2Ow" name="AllergyObservationPlayingEntityCodeOriginalText">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_xtJZEDJCEeG6R8Pb5FT2Ow">
          <language>OCL</language>
          <body>not self.code.originalText.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_eR_n8DJCEeG6R8Pb5FT2Ow" name="AllergyObservationPlayingEntityCodeTranslation">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lW3Y4DJCEeG6R8Pb5FT2Ow">
          <language>OCL</language>
          <body>not self.code.translation->isEmpty()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JDl8UIlEeG5UvLPSY8o7A" name="AllergyObservationPlayingEntityClassCode" constrainedElement="_E1B60DJBEeG6R8Pb5FT2Ow">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JDl8kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>isDefined('classCode')</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JDl80IlEeG5UvLPSY8o7A" name="AllergyObservationPlayingEntityCode" constrainedElement="_E1B60DJBEeG6R8Pb5FT2Ow">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JDl9EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_E1B60TJBEeG6R8Pb5FT2Ow">
        <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_Lr9i8EcaEd6besF9iFIJkQ"/>
      </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="_5JMv5kIlEeG5UvLPSY8o7A" name="AnesthesiaSectionTemplateId" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JMv50IlEeG5UvLPSY8o7A">
          <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="_5JMv6UIlEeG5UvLPSY8o7A" name="AnesthesiaSectionCode" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JMv6kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59774-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JMv60IlEeG5UvLPSY8o7A" name="AnesthesiaSectionText" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg4EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JWg4UIlEeG5UvLPSY8o7A" name="AnesthesiaSectionTitle" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg4kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LvGhkIlEeG5UvLPSY8o7A" name="AnesthesiaSectionProcedureActivityProcedure" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGh0IlEeG5UvLPSY8o7A">
          <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="_5LvGjUIlEeG5UvLPSY8o7A" name="AnesthesiaSectionMedicationActivity" constrainedElement="_OA_Q0DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGjkIlEeG5UvLPSY8o7A">
          <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="_5LvGiEIlEeG5UvLPSY8o7A" name="getProcedureActivityProcedures" isQuery="true" bodyCondition="_5LvGi0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5LvGi0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5LvGiEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGjEIlEeG5UvLPSY8o7A">
            <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="_5LvGiUIlEeG5UvLPSY8o7A" type="_2OG58RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5LvGikIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5LvGj0IlEeG5UvLPSY8o7A" name="getMedicationActivities" isQuery="true" bodyCondition="_5LvGkkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5LvGkkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5LvGj0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGk0IlEeG5UvLPSY8o7A">
            <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="_5LvGkEIlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5LvGkUIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_R1OXcDVyEeGaW4kr-GbV8Q" name="ComplicationsSection">
      <ownedRule xmi:id="_5JWg40IlEeG5UvLPSY8o7A" name="ComplicationsSectionTemplateId" constrainedElement="_R1OXcDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg5EIlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_R1OXcTVyEeGaW4kr-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="_WPTWEDVyEeGaW4kr-GbV8Q" name="DICOMObjectCatalogSection">
      <ownedRule xmi:id="_5JWg5kIlEeG5UvLPSY8o7A" name="DICOMObjectCatalogSectionTemplateId" constrainedElement="_WPTWEDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg50IlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_WPTWETVyEeGaW4kr-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="_ZcC-4DVyEeGaW4kr-GbV8Q" name="FindingsSection ">
      <ownedRule xmi:id="_5JWg6UIlEeG5UvLPSY8o7A" name="FindingsSection TemplateId" constrainedElement="_ZcC-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg6kIlEeG5UvLPSY8o7A">
          <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="_5JWg7EIlEeG5UvLPSY8o7A" name="HospitalConsultationsSection TemplateId" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JWg7UIlEeG5UvLPSY8o7A">
          <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="_5Jfq0EIlEeG5UvLPSY8o7A" name="HospitalConsultationsSection Code" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jfq0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '18841-7' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Jfq0kIlEeG5UvLPSY8o7A" name="HospitalConsultationsSection Text" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jfq00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Jfq1EIlEeG5UvLPSY8o7A" name="HospitalConsultationsSection Title" constrainedElement="_eKFbUDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jfq1UIlEeG5UvLPSY8o7A">
          <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="_5Jfq1kIlEeG5UvLPSY8o7A" name="InterventionsSectionTemplateId" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jfq10IlEeG5UvLPSY8o7A">
          <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="_5Jpb0EIlEeG5UvLPSY8o7A" name="InterventionsSectionCode" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jpb0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '62387-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Jpb0kIlEeG5UvLPSY8o7A" name="InterventionsSectionText" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jpb00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Jpb1EIlEeG5UvLPSY8o7A" name="InterventionsSectionTitle" constrainedElement="_hqzJADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jpb1UIlEeG5UvLPSY8o7A">
          <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="_5Jpb1kIlEeG5UvLPSY8o7A" name="MedicalHistorySectionTemplateId" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jpb10IlEeG5UvLPSY8o7A">
          <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="_5Jpb2UIlEeG5UvLPSY8o7A" name="MedicalHistorySectionCode" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Jpb2kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '11329-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JzM0EIlEeG5UvLPSY8o7A" name="MedicalHistorySectionText" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JzM0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5JzM0kIlEeG5UvLPSY8o7A" name="MedicalHistorySectionTitle" constrainedElement="_mEIgwDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JzM00IlEeG5UvLPSY8o7A">
          <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="_5JzM1EIlEeG5UvLPSY8o7A" name="ObjectiveSection TemplateId" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JzM1UIlEeG5UvLPSY8o7A">
          <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="_5JzM10IlEeG5UvLPSY8o7A" name="ObjectiveSection Code" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5JzM2EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '61149-1' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5J8WwEIlEeG5UvLPSY8o7A" name="ObjectiveSection Text" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8WwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5J8WwkIlEeG5UvLPSY8o7A" name="ObjectiveSection Title" constrainedElement="_rNJpADVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8Ww0IlEeG5UvLPSY8o7A">
          <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">
      <ownedRule xmi:id="_5J8WxEIlEeG5UvLPSY8o7A" name="OperativeNoteFluidSectionTemplateId" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8WxUIlEeG5UvLPSY8o7A">
          <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="_5J8Wx0IlEeG5UvLPSY8o7A" name="OperativeNoteFluidSectionCode" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8WyEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10216-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5J8WyUIlEeG5UvLPSY8o7A" name="OperativeNoteFluidSectionText" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8WykIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5J8Wy0IlEeG5UvLPSY8o7A" name="OperativeNoteFluidSectionTitle" constrainedElement="_vHfXoDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5J8WzEIlEeG5UvLPSY8o7A">
          <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="_MAXA0EEuEeGdmoWy_aLP0Q" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_O6eBgEEuEeGdmoWy_aLP0Q">
          <language>Analysis</language>
          <body>If the surgical procedure section is present there SHALL be text indicating the procedure performed.</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KGHwEIlEeG5UvLPSY8o7A" name="OperativeNoteSurgicalProcedureSectionTemplateId" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KGHwUIlEeG5UvLPSY8o7A">
          <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="_5KGHw0IlEeG5UvLPSY8o7A" name="OperativeNoteSurgicalProcedureSectionCode" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KGHxEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10223-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KGHxUIlEeG5UvLPSY8o7A" name="OperativeNoteSurgicalProcedureSectionText" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KGHxkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KGHx0IlEeG5UvLPSY8o7A" name="OperativeNoteSurgicalProcedureSectionTitle" constrainedElement="_zel6wDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KGHyEIlEeG5UvLPSY8o7A">
          <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="_5KP4wEIlEeG5UvLPSY8o7A" name="PlannedProcedureSectionTemplateId" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KP4wUIlEeG5UvLPSY8o7A">
          <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="_5KP4w0IlEeG5UvLPSY8o7A" name="PlannedProcedureSectionCode" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KP4xEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59772-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KP4xUIlEeG5UvLPSY8o7A" name="PlannedProcedureSectionText" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KP4xkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KP4x0IlEeG5UvLPSY8o7A" name="PlannedProcedureSectionTitle" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KP4yEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Rskk0IlEeG5UvLPSY8o7A" name="PlannedProcedureSectionPlanOfCareActivityProcedure" constrainedElement="_3b6E4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RsklEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(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="_5RsklUIlEeG5UvLPSY8o7A" name="getPlanOfCareActivityProcedure" isQuery="true" bodyCondition="_5RskmEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RskmEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RsklUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RskmUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getProcedures()->select(procedure : cda::Procedure | not procedure.oclIsUndefined() and procedure.oclIsKindOf(consol::PlanOfCareActivityProcedure))->asSequence()->first().oclAsType(consol::PlanOfCareActivityProcedure)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RsklkIlEeG5UvLPSY8o7A" type="_2NiSKhSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Rskl0IlEeG5UvLPSY8o7A" value="1"/>
        </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="_5KP4yUIlEeG5UvLPSY8o7A" name="PostoperativeDiagnosisSectionTemplateId" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KP4ykIlEeG5UvLPSY8o7A">
          <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="_5KZCsUIlEeG5UvLPSY8o7A" name="PostoperativeDiagnosisSectionCode" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KZCskIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '10218-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KZCs0IlEeG5UvLPSY8o7A" name="PostoperativeDiagnosisSectionText" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KZCtEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KZCtUIlEeG5UvLPSY8o7A" name="PostoperativeDiagnosisSectionTitle" constrainedElement="_7UA-4DVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KZCtkIlEeG5UvLPSY8o7A">
          <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="_5KZCt0IlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisSectionTemplateId" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KZCuEIlEeG5UvLPSY8o7A">
          <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="_5KizsEIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisSectionCode" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KizsUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KizskIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisSectionText" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Kizs0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5KiztEIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisSectionTitle" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KiztUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R1uiUIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisSectionPostprocedureDiagnosis" constrainedElement="_-jlSMDVyEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1uikIlEeG5UvLPSY8o7A">
          <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="_5R1ui0IlEeG5UvLPSY8o7A" name="getPostprocedureDiagnosis" isQuery="true" bodyCondition="_5R1ujkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5R1ujkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5R1ui0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1uj0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::PostprocedureDiagnosis))->asSequence()->first().oclAsType(consol::PostprocedureDiagnosis)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5R1ujEIlEeG5UvLPSY8o7A" type="_0fjXAEEvEeGdmoWy_aLP0Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5R1ujUIlEeG5UvLPSY8o7A" 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="_5KiztkIlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisSection TemplateId" constrainedElement="_Cu6qMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Kizt0IlEeG5UvLPSY8o7A">
          <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>
      <generalization xmi:id="_Cu6qMTVzEeGaW4kr-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="_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="_5KizuUIlEeG5UvLPSY8o7A" name="ProcedureDescriptionSectionTemplateId" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5KizukIlEeG5UvLPSY8o7A">
          <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="_5K1uoEIlEeG5UvLPSY8o7A" name="ProcedureDescriptionSectionCode" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K1uoUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '29554-3' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5K1uokIlEeG5UvLPSY8o7A" name="ProcedureDescriptionSectionText" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K1uo0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5K1upEIlEeG5UvLPSY8o7A" name="ProcedureDescriptionSectionTitle" constrainedElement="_HNUIIDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K1upUIlEeG5UvLPSY8o7A">
          <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="_5K1upkIlEeG5UvLPSY8o7A" name="ProcedureDispositionSectionTemplateId" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K1up0IlEeG5UvLPSY8o7A">
          <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="_5K1uqUIlEeG5UvLPSY8o7A" name="ProcedureDispositionSectionCode" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K1uqkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59775-7' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5K_foEIlEeG5UvLPSY8o7A" name="ProcedureDispositionSectionText" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K_foUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5K_fokIlEeG5UvLPSY8o7A" name="ProcedureDispositionSectionTitle" constrainedElement="_QhXGYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K_fo0IlEeG5UvLPSY8o7A">
          <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="_5K_fpEIlEeG5UvLPSY8o7A" name="ProcedureEstimatedBloodLossSection TemplateId" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K_fpUIlEeG5UvLPSY8o7A">
          <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="_5K_fp0IlEeG5UvLPSY8o7A" name="ProcedureEstimatedBloodLossSection Code" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5K_fqEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59770-8' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LIpkEIlEeG5UvLPSY8o7A" name="ProcedureEstimatedBloodLossSection Text" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LIpkUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LIpkkIlEeG5UvLPSY8o7A" name="ProcedureEstimatedBloodLossSection Title" constrainedElement="_TvcL8DVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LIpk0IlEeG5UvLPSY8o7A">
          <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="_5LIplEIlEeG5UvLPSY8o7A" name="ProcedureFindingsSectionTemplateId" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LIplUIlEeG5UvLPSY8o7A">
          <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="_5LIpl0IlEeG5UvLPSY8o7A" name="ProcedureFindingsSectionCode" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LIpmEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59776-5' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LIpmUIlEeG5UvLPSY8o7A" name="ProcedureFindingsSectionText" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LIpmkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LSakEIlEeG5UvLPSY8o7A" name="ProcedureFindingsSectionTitle" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LSakUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R_fi0IlEeG5UvLPSY8o7A" name="ProcedureFindingsSectionProblemObservation" constrainedElement="_W4UBYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R_fjEIlEeG5UvLPSY8o7A">
          <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="_5SJQgEIlEeG5UvLPSY8o7A" name="getProblemObservations" isQuery="true" bodyCondition="_5SJQg0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SJQg0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SJQgEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQhEIlEeG5UvLPSY8o7A">
            <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="_5SJQgUIlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SJQgkIlEeG5UvLPSY8o7A" 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="_5LSakkIlEeG5UvLPSY8o7A" name="ProcedureImplantsSectionTemplateId" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LSak0IlEeG5UvLPSY8o7A">
          <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="_5LSalUIlEeG5UvLPSY8o7A" name="ProcedureImplantsSectionCode" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LSalkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59771-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LSal0IlEeG5UvLPSY8o7A" name="ProcedureImplantsSectionText" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LSamEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LSamUIlEeG5UvLPSY8o7A" name="ProcedureImplantsSectionTitle" constrainedElement="_Z662wDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LSamkIlEeG5UvLPSY8o7A">
          <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="_5LcLkEIlEeG5UvLPSY8o7A" name="ProcedureIndicationsSectionTemplateId" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LcLkUIlEeG5UvLPSY8o7A">
          <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="_5LcLk0IlEeG5UvLPSY8o7A" name="ProcedureIndicationsSectionCode" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LcLlEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59768-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LcLlUIlEeG5UvLPSY8o7A" name="ProcedureIndicationsSectionText" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LcLlkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LcLl0IlEeG5UvLPSY8o7A" name="ProcedureIndicationsSectionTitle" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LcLmEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SJQhUIlEeG5UvLPSY8o7A" name="ProcedureIndicationsSectionIndication" constrainedElement="_cjmJMDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQhkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(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="_5SJQh0IlEeG5UvLPSY8o7A" name="getIndication" isQuery="true" bodyCondition="_5SJQikIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SJQikIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SJQh0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQi0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::Indication))->asSequence()->first().oclAsType(consol::Indication)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SJQiEIlEeG5UvLPSY8o7A" type="_sHrUoBUSEeG6PvUxSTZnaw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SJQiUIlEeG5UvLPSY8o7A" value="1"/>
        </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="_5LcLmUIlEeG5UvLPSY8o7A" name="ProcedureSpecimensTakenSectionTemplateId" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LcLmkIlEeG5UvLPSY8o7A">
          <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="_5LlVgEIlEeG5UvLPSY8o7A" name="ProcedureSpecimensTakenSectionCode" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LlVgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '59773-2' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LlVgkIlEeG5UvLPSY8o7A" name="ProcedureSpecimensTakenSectionText" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LlVg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LlVhEIlEeG5UvLPSY8o7A" name="ProcedureSpecimensTakenSectionTitle" constrainedElement="_gSUdsDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LlVhUIlEeG5UvLPSY8o7A">
          <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="_5LlVhkIlEeG5UvLPSY8o7A" name="SubjectiveSectionTemplateId" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LlVh0IlEeG5UvLPSY8o7A">
          <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="_5LvGgEIlEeG5UvLPSY8o7A" name="SubjectiveSectionCode" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '61150-9' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LvGgkIlEeG5UvLPSY8o7A" name="SubjectiveSectionText" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5LvGhEIlEeG5UvLPSY8o7A" name="SubjectiveSectionTitle" constrainedElement="_iy8nYDVzEeGaW4kr-GbV8Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGhUIlEeG5UvLPSY8o7A">
          <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="_5LvGlEIlEeG5UvLPSY8o7A" name="ConsultationNote TemplateId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5LvGlUIlEeG5UvLPSY8o7A">
          <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="_5L4QcUIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5L4QckIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MCBckIlEeG5UvLPSY8o7A" name="ConsultationNote InFulfillmentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBc0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(cda::InFulfillmentOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MCBdEIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOf" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBdUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MCBf0IlEeG5UvLPSY8o7A" name="ConsultationNote AssessmentSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBgEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MLydUIlEeG5UvLPSY8o7A" name="ConsultationNote AssessmentAndPlanSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLydkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MLyg0IlEeG5UvLPSY8o7A" name="ConsultationNote PlanOfCareSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLyhEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MU8ZUIlEeG5UvLPSY8o7A" name="ConsultationNote HistoryOfPresentIllness" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8ZkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MU8bEIlEeG5UvLPSY8o7A" name="ConsultationNote PhysicalExamSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8bUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MU8c0IlEeG5UvLPSY8o7A" name="ConsultationNote ReasonForReferralSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8dEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MU8ekIlEeG5UvLPSY8o7A" name="ConsultationNote ReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8e0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MU8gUIlEeG5UvLPSY8o7A" name="ConsultationNote AllergiesSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8gkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MetZUIlEeG5UvLPSY8o7A" name="ConsultationNote ChiefComplaintSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetZkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MetbEIlEeG5UvLPSY8o7A" name="ConsultationNote ChiefComplaintAndReasonForVisitSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetbUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Metc0IlEeG5UvLPSY8o7A" name="ConsultationNote FamilyHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetdEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MetekIlEeG5UvLPSY8o7A" name="ConsultationNote GeneralStatusSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Mete0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MetgUIlEeG5UvLPSY8o7A" name="ConsultationNote HistoryOfPastIllnessSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetgkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MoeZUIlEeG5UvLPSY8o7A" name="ConsultationNote ImmunizationsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoeZkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MoebEIlEeG5UvLPSY8o7A" name="ConsultationNote MedicationsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoebUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Moec0IlEeG5UvLPSY8o7A" name="ConsultationNote ProblemSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoedEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MoeekIlEeG5UvLPSY8o7A" name="ConsultationNote ProceduresSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Moee0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxoUEIlEeG5UvLPSY8o7A" name="ConsultationNote ResultsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoUUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxoV0IlEeG5UvLPSY8o7A" name="ConsultationNote ReviewOfSystemsSection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoWEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxoXkIlEeG5UvLPSY8o7A" name="ConsultationNote SocialHistorySection" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoX0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MxoZUIlEeG5UvLPSY8o7A" name="ConsultationNote VitalSignsSectionEntriesOptional" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoZkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VkX9EIlEeG5UvLPSY8o7A" name="ConsultationNote InFulfillmentOfOrderId" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VkX9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf.order->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI8EIlEeG5UvLPSY8o7A" name="ConsultationNote InFulfillmentOfOrder" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI8UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf->select(not oclIsUndefined())->forAll(order->one(order : cda::Order | not order.oclIsUndefined() and order.oclIsKindOf(cda::Order)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI8kIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI9EIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI9UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI9kIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI90IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI-EIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI-UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI-kIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2EffectiveTime" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI-0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI_EIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2Id" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI_UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuI_kIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2ResponsibleParty" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuI_0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5VuJAEIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipant" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5VuJAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(encounterParticipant->exists(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5V3S4EIlEeG5UvLPSY8o7A" name="ConsultationNote ComponentOfEncompassingEncounter" constrainedElement="_R-vIoDssEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5V3S4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->select(not oclIsUndefined())->forAll(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_R_oggDssEeGvzMYhXuqAEA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_xf2eoDsvEeGvzMYhXuqAEA" name="ComponentOf">
        <ownedComment xmi:id="_xf2eojsvEeGvzMYhXuqAEA">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5MCBdkIlEeG5UvLPSY8o7A" name="ComponentOfEncompassingEncounter" constrainedElement="_xf2eoDsvEeGvzMYhXuqAEA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBd0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_xf2eozsvEeGvzMYhXuqAEA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_xf2epzsvEeGvzMYhXuqAEA" name="EncompassingEncounter2">
          <ownedRule xmi:id="_5L4Qc0IlEeG5UvLPSY8o7A" name="EncompassingEncounter2EffectiveTime" constrainedElement="_xf2epzsvEeGvzMYhXuqAEA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5L4QdEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5L4QdkIlEeG5UvLPSY8o7A" name="EncompassingEncounter2Id" constrainedElement="_xf2epzsvEeGvzMYhXuqAEA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5L4Qd0IlEeG5UvLPSY8o7A">
              <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="_5MCBeUIlEeG5UvLPSY8o7A" name="EncompassingEncounter2ResponsibleParty" constrainedElement="_xf2epzsvEeGvzMYhXuqAEA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBekIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5MCBfUIlEeG5UvLPSY8o7A" name="EncompassingEncounter2EncounterParticipant" constrainedElement="_xf2epzsvEeGvzMYhXuqAEA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBfkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.encounterParticipant->exists(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_xf2eqDsvEeGvzMYhXuqAEA">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_tUQLcDswEeGvzMYhXuqAEA" name="ResponsibleParty">
            <ownedRule xmi:id="_M0h7UDsxEeGvzMYhXuqAEA" name="ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_tUQLcDswEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_YI39YDsxEeGvzMYhXuqAEA">
                <language>OCL</language>
                <body>not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5MCBe0IlEeG5UvLPSY8o7A" name="ResponsiblePartyAssignedEntity" constrainedElement="_tUQLcDswEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MCBfEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_68HvUDswEeGvzMYhXuqAEA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_hfdrgEcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_Or7FUDsyEeGvzMYhXuqAEA" name="EncounterParticipant">
            <ownedRule xmi:id="_ybGekDsyEeGvzMYhXuqAEA" name="EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth" constrainedElement="_tUQLcDswEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_ybGekTsyEeGvzMYhXuqAEA">
                <language>OCL</language>
                <body>not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5MxobEIlEeG5UvLPSY8o7A" name="EncounterParticipantAssignedEntity" constrainedElement="_Or7FUDsyEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxobUIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_Q4cAMDsyEeGvzMYhXuqAEA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_5t1WAEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5MLycEIlEeG5UvLPSY8o7A" name="getAssessmentSection" isQuery="true" bodyCondition="_5MLyc0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MLyc0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MLycEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLydEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->first().oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MLycUIlEeG5UvLPSY8o7A" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MLyckIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MLyd0IlEeG5UvLPSY8o7A" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_5MLyekIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MLyekIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MLyd0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLye0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->first().oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MLyeEIlEeG5UvLPSY8o7A" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MLyeUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MU8YEIlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5MU8Y0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MU8Y0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MU8YEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8ZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MU8YUIlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MU8YkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MU8Z0IlEeG5UvLPSY8o7A" name="getHistoryOfPresentIllness" isQuery="true" bodyCondition="_5MU8akIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MU8akIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MU8Z0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8a0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MU8aEIlEeG5UvLPSY8o7A" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MU8aUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MU8bkIlEeG5UvLPSY8o7A" name="getPhysicalExamSection" isQuery="true" bodyCondition="_5MU8cUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MU8cUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MU8bkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8ckIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->first().oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MU8b0IlEeG5UvLPSY8o7A" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MU8cEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MU8dUIlEeG5UvLPSY8o7A" name="getReasonForReferralSection" isQuery="true" bodyCondition="_5MU8eEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MU8eEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MU8dUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8eUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForReferralSection))->asSequence()->first().oclAsType(consol::ReasonForReferralSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MU8dkIlEeG5UvLPSY8o7A" type="_2PWQFxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MU8d0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MU8fEIlEeG5UvLPSY8o7A" name="getReasonForVisitSection" isQuery="true" bodyCondition="_5MU8f0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MU8f0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MU8fEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MU8gEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->first().oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MU8fUIlEeG5UvLPSY8o7A" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MU8fkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MetYEIlEeG5UvLPSY8o7A" name="getAllergiesSection" isQuery="true" bodyCondition="_5MetY0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MetY0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MetYEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->first().oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MetYUIlEeG5UvLPSY8o7A" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MetYkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MetZ0IlEeG5UvLPSY8o7A" name="getChiefComplaintSection" isQuery="true" bodyCondition="_5MetakIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MetakIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MetZ0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Meta0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->first().oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MetaEIlEeG5UvLPSY8o7A" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MetaUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MetbkIlEeG5UvLPSY8o7A" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_5MetcUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MetcUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MetbkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetckIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->first().oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Metb0IlEeG5UvLPSY8o7A" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MetcEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MetdUIlEeG5UvLPSY8o7A" name="getFamilyHistorySection" isQuery="true" bodyCondition="_5MeteEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MeteEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MetdUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MeteUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->first().oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MetdkIlEeG5UvLPSY8o7A" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Metd0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MetfEIlEeG5UvLPSY8o7A" name="getGeneralStatusSection" isQuery="true" bodyCondition="_5Metf0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Metf0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MetfEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MetgEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->first().oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MetfUIlEeG5UvLPSY8o7A" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MetfkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MoeYEIlEeG5UvLPSY8o7A" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_5MoeY0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MoeY0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MoeYEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoeZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MoeYUIlEeG5UvLPSY8o7A" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MoeYkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MoeZ0IlEeG5UvLPSY8o7A" name="getImmunizationsSection" isQuery="true" bodyCondition="_5MoeakIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MoeakIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MoeZ0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Moea0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSection))->asSequence()->first().oclAsType(consol::ImmunizationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MoeaEIlEeG5UvLPSY8o7A" type="_2L7voBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MoeaUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MoebkIlEeG5UvLPSY8o7A" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_5MoecUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MoecUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MoebkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoeckIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Moeb0IlEeG5UvLPSY8o7A" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MoecEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MoedUIlEeG5UvLPSY8o7A" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_5MoeeEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MoeeEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MoedUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoeeUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MoedkIlEeG5UvLPSY8o7A" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Moed0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MoefEIlEeG5UvLPSY8o7A" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_5Moef0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Moef0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MoefEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MoegEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MoefUIlEeG5UvLPSY8o7A" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MoefkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MxoUkIlEeG5UvLPSY8o7A" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_5MxoVUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MxoVUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MxoUkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoVkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MxoU0IlEeG5UvLPSY8o7A" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MxoVEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MxoWUIlEeG5UvLPSY8o7A" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_5MxoXEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MxoXEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MxoWUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoXUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->first().oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MxoWkIlEeG5UvLPSY8o7A" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MxoW0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MxoYEIlEeG5UvLPSY8o7A" name="getSocialHistorySection" isQuery="true" bodyCondition="_5MxoY0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MxoY0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MxoYEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MxoZEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->first().oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MxoYUIlEeG5UvLPSY8o7A" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MxoYkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5MxoZ0IlEeG5UvLPSY8o7A" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_5MxoakIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5MxoakIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5MxoZ0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Mxoa0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5MxoaEIlEeG5UvLPSY8o7A" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5MxoaUIlEeG5UvLPSY8o7A" 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 called impression or diagnoses) represents the clinician's conclusions and working assumptions that will guide treatment of the patient. The assessment formulates a specific plan or set of recommendations. The assessment may be a list of specific disease entities or a narrative block.</body>
      </ownedComment>
      <ownedRule xmi:id="_5MLyfEIlEeG5UvLPSY8o7A" name="AssessmentSectionTemplateId" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLyfUIlEeG5UvLPSY8o7A">
          <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="_5MLyf0IlEeG5UvLPSY8o7A" name="AssessmentSectionCode" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLygEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '2. 51848-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5MLygUIlEeG5UvLPSY8o7A" name="AssessmentSectionText" constrainedElement="_W8pI4DszEeGvzMYhXuqAEA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5MLygkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.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="_5NYFUkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteTemplateId" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NYFU0IlEeG5UvLPSY8o7A">
          <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="_5NhPMEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NhPMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5NrAMkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteInFulfillmentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.inFulfillmentOf->exists(inFulfillmentOf : cda::InFulfillmentOf | not inFulfillmentOf.oclIsUndefined() and inFulfillmentOf.oclIsKindOf(rim::ActRelationship))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N0xMEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOf" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xMUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N0xMkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteAllergiesSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xM0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N0xOUIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteAssessmentSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xOkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N0xQEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNotePlanOfCareSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xQUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N0xR0IlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteAssessmentAndPlanSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xSEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N97JUIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteChiefComplaintSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97JkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N97LEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97LUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N97M0IlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteFamilyHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97NEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5N97OkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteGeneralStatusSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97O0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OHsIEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteHistoryOfPastIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsIUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OHsJ0IlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteMedicationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsKEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OHsLkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNotePhysicalExamSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsL0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OHsNUIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteReasonForVisitSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsNkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OHsPEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteResultsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsPUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OQ2FUIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteReviewOfSystemsSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2FkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OQ2HEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteSocialHistorySection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2HUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OQ2I0IlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteHistoryOfPresentIllnessSection" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2JEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OQ2KkIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteImmunizationsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2K0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OanFUIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteProblemSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanFkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OanHEIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteProceduresSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanHUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5OanI0IlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanJEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD6EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD6UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD6kIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD60IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.responsibleParty->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WBD7EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WBD7UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(not assignedEntity.assignedPerson.oclIsUndefined() or not assignedEntity.representedOrganization->isEmpty())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK04EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK04UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(not oclIsUndefined())->forAll(assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK04kIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK040IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK05EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK05UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK05kIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK050IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(rim::Participation)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK06EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK06UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK06kIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK060IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WK07EIlEeG5UvLPSY8o7A" name="HistoryAndPhysicalNoteComponentOfEncompassingEncounter" constrainedElement="_-Qa60D1jEeG3tde5scYNWA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WK07UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->select(not oclIsUndefined())->forAll(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_-QelMD1jEeG3tde5scYNWA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_A4JVkD1lEeG3tde5scYNWA" name="ComponentOf">
        <ownedComment xmi:id="_kbHGsD2EEeGYzOhiGkMbTA">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5NrANEIlEeG5UvLPSY8o7A" name="ComponentOfEncompassingEncounter" constrainedElement="_A4JVkD1lEeG3tde5scYNWA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrANUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_FX2bED1lEeG3tde5scYNWA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_PThaAD1lEeG3tde5scYNWA" name="EncompassingEncounter4">
          <ownedRule xmi:id="_5NhPMkIlEeG5UvLPSY8o7A" name="EncompassingEncounter4EffectiveTime" constrainedElement="_PThaAD1lEeG3tde5scYNWA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NhPM0IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5NhPNUIlEeG5UvLPSY8o7A" name="EncompassingEncounter4Id" constrainedElement="_PThaAD1lEeG3tde5scYNWA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NhPNkIlEeG5UvLPSY8o7A">
              <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="_5NrAN0IlEeG5UvLPSY8o7A" name="EncompassingEncounter4Location" constrainedElement="_PThaAD1lEeG3tde5scYNWA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAOEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(rim::Participation))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5NrAOUIlEeG5UvLPSY8o7A" name="EncompassingEncounter4ResponsibleParty" constrainedElement="_PThaAD1lEeG3tde5scYNWA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAOkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.responsibleParty->one(responsibleParty : cda::ResponsibleParty | not responsibleParty.oclIsUndefined() and responsibleParty.oclIsKindOf(cda::ResponsibleParty))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5NrAPUIlEeG5UvLPSY8o7A" name="EncompassingEncounter4EncounterParticipant" constrainedElement="_PThaAD1lEeG3tde5scYNWA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAPkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_c-tXoD1lEeG3tde5scYNWA">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="__kITgD1lEeG3tde5scYNWA" name="ResponsibleParty">
            <ownedRule xmi:id="__kITgT1lEeG3tde5scYNWA" name="ResponsiblePartyAssignedEntityHasPersonOrOrganization" constrainedElement="__kITgD1lEeG3tde5scYNWA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="__kITgj1lEeG3tde5scYNWA">
                <language>OCL</language>
                <body>not self.assignedEntity.assignedPerson.oclIsUndefined() or not self.assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5NrAO0IlEeG5UvLPSY8o7A" name="ResponsiblePartyAssignedEntity" constrainedElement="__kITgD1lEeG3tde5scYNWA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAPEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="__kITgz1lEeG3tde5scYNWA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_hfdrgEcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_B9BdgD1mEeG3tde5scYNWA" name="EncounterParticipant">
            <ownedRule xmi:id="_B9BdgT1mEeG3tde5scYNWA" name="EncounterParticipantAssignedEntityHasPersonOrOrganization" constrainedElement="_tUQLcDswEeGvzMYhXuqAEA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_B9Bdgj1mEeG3tde5scYNWA">
                <language>OCL</language>
                <body>not self.assignedEntity.assignedPerson.oclIsUndefined() or not self.assignedEntity.representedOrganization->isEmpty()</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5NrAP0IlEeG5UvLPSY8o7A" name="EncounterParticipantAssignedEntity" constrainedElement="_B9BdgD1mEeG3tde5scYNWA">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5NrAQEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.assignedEntity->one(assignedEntity : cda::AssignedEntity | not assignedEntity.oclIsUndefined() and assignedEntity.oclIsKindOf(rim::Role))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_B9Bdgz1mEeG3tde5scYNWA">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_5t1WAEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5N0xNEIlEeG5UvLPSY8o7A" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_5N0xN0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N0xN0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N0xNEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xOEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->first().oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N0xNUIlEeG5UvLPSY8o7A" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N0xNkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N0xO0IlEeG5UvLPSY8o7A" name="getAssessmentSection" isQuery="true" bodyCondition="_5N0xPkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N0xPkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N0xO0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xP0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->first().oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N0xPEIlEeG5UvLPSY8o7A" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N0xPUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N0xQkIlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5N0xRUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N0xRUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N0xQkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N0xRkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N0xQ0IlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N0xREIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N97IEIlEeG5UvLPSY8o7A" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_5N97I0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N97I0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N97IEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97JEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->first().oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N97IUIlEeG5UvLPSY8o7A" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N97IkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N97J0IlEeG5UvLPSY8o7A" name="getChiefComplaintSection" isQuery="true" bodyCondition="_5N97KkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N97KkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N97J0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97K0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->first().oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N97KEIlEeG5UvLPSY8o7A" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N97KUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N97LkIlEeG5UvLPSY8o7A" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_5N97MUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N97MUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N97LkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97MkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->first().oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N97L0IlEeG5UvLPSY8o7A" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N97MEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N97NUIlEeG5UvLPSY8o7A" name="getFamilyHistorySection" isQuery="true" bodyCondition="_5N97OEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N97OEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N97NUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97OUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->first().oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N97NkIlEeG5UvLPSY8o7A" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N97N0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5N97PEIlEeG5UvLPSY8o7A" name="getGeneralStatusSection" isQuery="true" bodyCondition="_5N97P0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5N97P0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5N97PEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5N97QEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::GeneralStatusSection))->asSequence()->first().oclAsType(consol::GeneralStatusSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5N97PUIlEeG5UvLPSY8o7A" type="_2Pxt6xSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5N97PkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OHsIkIlEeG5UvLPSY8o7A" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_5OHsJUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OHsJUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OHsIkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsJkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OHsI0IlEeG5UvLPSY8o7A" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OHsJEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OHsKUIlEeG5UvLPSY8o7A" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_5OHsLEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OHsLEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OHsKUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsLUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OHsKkIlEeG5UvLPSY8o7A" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OHsK0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OHsMEIlEeG5UvLPSY8o7A" name="getPhysicalExamSection" isQuery="true" bodyCondition="_5OHsM0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OHsM0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OHsMEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsNEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->first().oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OHsMUIlEeG5UvLPSY8o7A" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OHsMkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OHsN0IlEeG5UvLPSY8o7A" name="getReasonForVisitSection" isQuery="true" bodyCondition="_5OHsOkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OHsOkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OHsN0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OHsO0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->first().oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OHsOEIlEeG5UvLPSY8o7A" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OHsOUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OQ2EEIlEeG5UvLPSY8o7A" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_5OQ2E0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OQ2E0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OQ2EEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2FEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OQ2EUIlEeG5UvLPSY8o7A" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OQ2EkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OQ2F0IlEeG5UvLPSY8o7A" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_5OQ2GkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OQ2GkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OQ2F0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2G0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->first().oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OQ2GEIlEeG5UvLPSY8o7A" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OQ2GUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OQ2HkIlEeG5UvLPSY8o7A" name="getSocialHistorySection" isQuery="true" bodyCondition="_5OQ2IUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OQ2IUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OQ2HkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2IkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->first().oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OQ2H0IlEeG5UvLPSY8o7A" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OQ2IEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OQ2JUIlEeG5UvLPSY8o7A" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_5OQ2KEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OQ2KEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OQ2JUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OQ2KUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OQ2JkIlEeG5UvLPSY8o7A" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OQ2J0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OanEEIlEeG5UvLPSY8o7A" name="getImmunizationsSectionEntriesOptional" isQuery="true" bodyCondition="_5OanE0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OanE0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OanEEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanFEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ImmunizationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ImmunizationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OanEUIlEeG5UvLPSY8o7A" type="_EuPloBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OanEkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OanF0IlEeG5UvLPSY8o7A" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_5OanGkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OanGkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OanF0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanG0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OanGEIlEeG5UvLPSY8o7A" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OanGUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OanHkIlEeG5UvLPSY8o7A" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_5OanIUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OanIUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OanHkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanIkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OanH0IlEeG5UvLPSY8o7A" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OanIEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5OanJUIlEeG5UvLPSY8o7A" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_5OanKEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5OanKEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5OanJUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OanKUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5OanJkIlEeG5UvLPSY8o7A" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5OanJ0IlEeG5UvLPSY8o7A" 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="_5OkYEUIlEeG5UvLPSY8o7A" name="OperativeNoteTemplateId" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OkYEkIlEeG5UvLPSY8o7A">
          <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="_5OkYFEIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OkYFUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5O3TAEIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOf" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TAUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->exists(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5O3TAkIlEeG5UvLPSY8o7A" name="OperativeNoteAnesthesiaSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TA0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5O3TCUIlEeG5UvLPSY8o7A" name="OperativeNoteComplicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TCkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5O3TEEIlEeG5UvLPSY8o7A" name="OperativeNotePostoperativeDiagnosisSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TEUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5O3TF0IlEeG5UvLPSY8o7A" name="OperativeNotePreoperativeDiagnosisSection " constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TGEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PBEAUIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureEstimatedBloodLossSection " constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEAkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PBECEIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureFindingsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBECUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PBED0IlEeG5UvLPSY8o7A" name="OperativeNoteProcedureSpecimensTakenSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEEEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PBEFkIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureDescriptionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEF0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PBEHUIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureImplantsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEHkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PKN9UIlEeG5UvLPSY8o7A" name="OperativeNoteOperativeNoteFluidSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKN9kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PKN_EIlEeG5UvLPSY8o7A" name="OperativeNoteOperativeNoteSurgicalProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKN_UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PKOA0IlEeG5UvLPSY8o7A" name="OperativeNotePlanOfCareSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKOBEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PKOCkIlEeG5UvLPSY8o7A" name="OperativeNotePlannedProcedureSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKOC0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PT-8kIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureDispositionSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT-80IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PT--UIlEeG5UvLPSY8o7A" name="OperativeNoteProcedureIndicationsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT--kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5PT_AEIlEeG5UvLPSY8o7A" name="OperativeNoteSurgicalDrainsSection" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT_AUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-0kIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerFunctionCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(not oclIsUndefined())->forAll((functionCode.oclIsUndefined() or functionCode.isNullFlavorUndefined()) implies (functionCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = functionCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined())))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-1EIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent.performer->select(typeCode = vocab::x_ServiceEventPerformer::PPRF)->select(not oclIsUndefined())->forAll(isDefined('typeCode'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-1kIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventProcedureCodes" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-10IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(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="_5WT-2EIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-2UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(not effectiveTime.low.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-2kIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-20IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-3EIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-3UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(not effectiveTime.width.oclIsUndefined() xor not effectiveTime.high.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-3kIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventAnyAssistantsAsSecondary" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-30IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(performer->forAll(typeCode = vocab::x_ServiceEventPerformer::PPRF or typeCode= vocab::x_ServiceEventPerformer::SPRF))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WT-4EIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventCode" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WT-4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv0EIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEventEffectiveTime" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv0UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv0kIlEeG5UvLPSY8o7A" name="OperativeNoteDocumentationOfServiceEvent" constrainedElement="_xe9MsD4iEeGhnL_c4sBHGg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv00IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->select(not oclIsUndefined())->forAll(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_xfHkwD4iEeGhnL_c4sBHGg" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_uKeuwD4jEeGhnL_c4sBHGg" name="DocumentationOf">
        <ownedComment xmi:id="_zddrUD4jEeGhnL_c4sBHGg">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5OtiCUIlEeG5UvLPSY8o7A" name="DocumentationOfServiceEvent" constrainedElement="_uKeuwD4jEeGhnL_c4sBHGg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OtiCkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_x30jMD4jEeGhnL_c4sBHGg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1fhigEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_1mJ2ID4jEeGhnL_c4sBHGg" name="ServiceEvent">
          <ownedRule xmi:id="_rb6aQD4kEeGhnL_c4sBHGg" name="ServiceEventProcedureCodes" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_vcvycD4kEeGhnL_c4sBHGg">
              <language>OCL</language>
              <body>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="_-KjqsD4kEeGhnL_c4sBHGg" name="ServiceEventEffectiveTimeHasLow" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_XpPEgD4lEeGhnL_c4sBHGg">
              <language>OCL</language>
              <body>not self.effectiveTime.low.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_CPtiMD4lEeGhnL_c4sBHGg" name="ServiceEventEffectiveTimeHasHighWhenNoWidth" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZG5VUD4lEeGhnL_c4sBHGg">
              <language>OCL</language>
              <body>not self.effectiveTime.width.oclIsUndefined() xor not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_LceMsD4lEeGhnL_c4sBHGg" name="ServiceEventEffectiveTimeNoHighIfWidth" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_cUDN0D4lEeGhnL_c4sBHGg">
              <language>OCL</language>
              <body>not self.effectiveTime.width.oclIsUndefined() xor not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_w0p5MD4nEeGtCLm-c2g23Q" name="ServiceEventAnyAssistantsAsSecondary" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_8RuZcD4nEeGtCLm-c2g23Q">
              <language>OCL</language>
              <body>self.performer->forAll(typeCode = vocab::x_ServiceEventPerformer::PPRF or typeCode= vocab::x_ServiceEventPerformer::SPRF)</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5OtiAEIlEeG5UvLPSY8o7A" name="ServiceEventCode" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OtiAUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5OtiAkIlEeG5UvLPSY8o7A" name="ServiceEventEffectiveTime" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OtiA0IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_6IsNMD4jEeGhnL_c4sBHGg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_lriDUEcaEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_CNfxID4kEeGhnL_c4sBHGg" name="PrimaryPerformer">
            <ownedComment xmi:id="_czvioD62EeGtCLm-c2g23Q">
              <body>SCOPE&amp;typeCode = vocab::x_ServiceEventPerformer::PPRF</body>
            </ownedComment>
            <ownedRule xmi:id="_5OtiBUIlEeG5UvLPSY8o7A" name="PrimaryPerformerFunctionCode" constrainedElement="_CNfxID4kEeGhnL_c4sBHGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OtiBkIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.functionCode.oclIsUndefined() or self.functionCode.isNullFlavorUndefined()) implies (self.functionCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.functionCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
              </specification>
            </ownedRule>
            <ownedRule xmi:id="_5OtiB0IlEeG5UvLPSY8o7A" name="PrimaryPerformerTypeCode" constrainedElement="_CNfxID4kEeGhnL_c4sBHGg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5OtiCEIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>isDefined('typeCode')</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_GRLpAD4kEeGhnL_c4sBHGg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_FvF74EcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5O3TBEIlEeG5UvLPSY8o7A" name="getAnesthesiaSection" isQuery="true" bodyCondition="_5O3TB0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5O3TB0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5O3TBEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TCEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))->asSequence()->first().oclAsType(consol::AnesthesiaSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5O3TBUIlEeG5UvLPSY8o7A" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5O3TBkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5O3TC0IlEeG5UvLPSY8o7A" name="getComplicationsSection" isQuery="true" bodyCondition="_5O3TDkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5O3TDkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5O3TC0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TD0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))->asSequence()->first().oclAsType(consol::ComplicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5O3TDEIlEeG5UvLPSY8o7A" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5O3TDUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5O3TEkIlEeG5UvLPSY8o7A" name="getPostoperativeDiagnosisSection" isQuery="true" bodyCondition="_5O3TFUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5O3TFUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5O3TEkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5O3TFkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostoperativeDiagnosisSection))->asSequence()->first().oclAsType(consol::PostoperativeDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5O3TE0IlEeG5UvLPSY8o7A" type="_7UA-4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5O3TFEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5O3TGUIlEeG5UvLPSY8o7A" name="getPreoperativeDiagnosisSection " isQuery="true" bodyCondition="_5O3THEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5O3THEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5O3TGUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEAEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PreoperativeDiagnosisSection ))->asSequence()->first().oclAsType(consol::PreoperativeDiagnosisSection )</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5O3TGkIlEeG5UvLPSY8o7A" type="_Cu6qMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5O3TG0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PBEA0IlEeG5UvLPSY8o7A" name="getProcedureEstimatedBloodLossSection " isQuery="true" bodyCondition="_5PBEBkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PBEBkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PBEA0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEB0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection ))->asSequence()->first().oclAsType(consol::ProcedureEstimatedBloodLossSection )</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PBEBEIlEeG5UvLPSY8o7A" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PBEBUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PBECkIlEeG5UvLPSY8o7A" name="getProcedureFindingsSection" isQuery="true" bodyCondition="_5PBEDUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PBEDUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PBECkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEDkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))->asSequence()->first().oclAsType(consol::ProcedureFindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PBEC0IlEeG5UvLPSY8o7A" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PBEDEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PBEEUIlEeG5UvLPSY8o7A" name="getProcedureSpecimensTakenSection" isQuery="true" bodyCondition="_5PBEFEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PBEFEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PBEEUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEFUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->first().oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PBEEkIlEeG5UvLPSY8o7A" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PBEE0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PBEGEIlEeG5UvLPSY8o7A" name="getProcedureDescriptionSection" isQuery="true" bodyCondition="_5PBEG0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PBEG0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PBEGEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PBEHEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->first().oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PBEGUIlEeG5UvLPSY8o7A" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PBEGkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PKN8EIlEeG5UvLPSY8o7A" name="getProcedureImplantsSection" isQuery="true" bodyCondition="_5PKN80IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PKN80IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PKN8EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKN9EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->first().oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PKN8UIlEeG5UvLPSY8o7A" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PKN8kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PKN90IlEeG5UvLPSY8o7A" name="getOperativeNoteFluidSection" isQuery="true" bodyCondition="_5PKN-kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PKN-kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PKN90IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKN-0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteFluidSection))->asSequence()->first().oclAsType(consol::OperativeNoteFluidSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PKN-EIlEeG5UvLPSY8o7A" type="_vHfXoDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PKN-UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PKN_kIlEeG5UvLPSY8o7A" name="getOperativeNoteSurgicalProcedureSection" isQuery="true" bodyCondition="_5PKOAUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PKOAUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PKN_kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKOAkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::OperativeNoteSurgicalProcedureSection))->asSequence()->first().oclAsType(consol::OperativeNoteSurgicalProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PKN_0IlEeG5UvLPSY8o7A" type="_zel6wDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PKOAEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PKOBUIlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5PKOCEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PKOCEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PKOBUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PKOCUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PKOBkIlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PKOB0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PKODEIlEeG5UvLPSY8o7A" name="getPlannedProcedureSection" isQuery="true" bodyCondition="_5PT-8EIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PT-8EIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PKODEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT-8UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))->asSequence()->first().oclAsType(consol::PlannedProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PKODUIlEeG5UvLPSY8o7A" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PKODkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PT-9EIlEeG5UvLPSY8o7A" name="getProcedureDispositionSection" isQuery="true" bodyCondition="_5PT-90IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PT-90IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PT-9EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT--EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->first().oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PT-9UIlEeG5UvLPSY8o7A" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PT-9kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PT--0IlEeG5UvLPSY8o7A" name="getProcedureIndicationsSection" isQuery="true" bodyCondition="_5PT-_kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PT-_kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PT--0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT-_0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))->asSequence()->first().oclAsType(consol::ProcedureIndicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PT-_EIlEeG5UvLPSY8o7A" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PT-_UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5PT_AkIlEeG5UvLPSY8o7A" name="getSurgicalDrainsSection" isQuery="true" bodyCondition="_5PT_BUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5PT_BUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5PT_AkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT_BkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SurgicalDrainsSection))->asSequence()->first().oclAsType(consol::SurgicalDrainsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5PT_A0IlEeG5UvLPSY8o7A" type="_luQh8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PT_BEIlEeG5UvLPSY8o7A" 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="_5PT_B0IlEeG5UvLPSY8o7A" name="ProcedureNoteTemplateId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PT_CEIlEeG5UvLPSY8o7A">
          <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="_5PdI4EIlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PdI4UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Pwq40IlEeG5UvLPSY8o7A" name="ProcedureNoteIndividual" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq5EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Pwq5UIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOf" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq5kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Pwq6kIlEeG5UvLPSY8o7A" name="ProcedureNotePrimaryCarePhysician" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq60IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5P502EIlEeG5UvLPSY8o7A" name="ProcedureNoteProvider" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P502UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->one(participant : cda::Participant1 | not participant.oclIsUndefined() and participant.oclIsKindOf(cda::Participant1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5P502kIlEeG5UvLPSY8o7A" name="ProcedureNoteAssessmentSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P5020IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5P504UIlEeG5UvLPSY8o7A" name="ProcedureNotePlanOfCareSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P504kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5P506EIlEeG5UvLPSY8o7A" name="ProcedureNoteAssessmentAndPlanSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P506UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QDl1UIlEeG5UvLPSY8o7A" name="ProcedureNoteComplicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl1kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QDl3EIlEeG5UvLPSY8o7A" name="ProcedureNotePostprocedureDiagnosisSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl3UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QDl40IlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureDescriptionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl5EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QDl6kIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureIndicationsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl60IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QDl8UIlEeG5UvLPSY8o7A" name="ProcedureNoteAllergiesSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl8kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNW1UIlEeG5UvLPSY8o7A" name="ProcedureNoteAnesthesiaSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW1kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNW3EIlEeG5UvLPSY8o7A" name="ProcedureNoteChiefComplaintSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW3UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNW40IlEeG5UvLPSY8o7A" name="ProcedureNoteChiefComplaintAndReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW5EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNW6kIlEeG5UvLPSY8o7A" name="ProcedureNoteFamilyHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW60IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QNW8UIlEeG5UvLPSY8o7A" name="ProcedureNoteHistoryOfPastIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW8kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QWgxUIlEeG5UvLPSY8o7A" name="ProcedureNoteHistoryOfPresentIllnessSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWgxkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QWgzEIlEeG5UvLPSY8o7A" name="ProcedureNoteMedicalHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWgzUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QWg00IlEeG5UvLPSY8o7A" name="ProcedureNoteMedicationsSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWg1EIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QWg2kIlEeG5UvLPSY8o7A" name="ProcedureNoteMedicationsAdministeredSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWg20IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QgRwEIlEeG5UvLPSY8o7A" name="ProcedureNotePhysicalExamSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgRwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QgRx0IlEeG5UvLPSY8o7A" name="ProcedureNotePlannedProcedureSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgRyEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QgRzkIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureDispositionSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgRz0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QgR1UIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureEstimatedBloodLossSection " constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgR1kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QgR3EIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureFindingsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgR3UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QpbtUIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureImplantsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbtkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QpbvEIlEeG5UvLPSY8o7A" name="ProcedureNoteProcedureSpecimensTakenSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbvUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Qpbw0IlEeG5UvLPSY8o7A" name="ProcedureNoteProceduresSectionEntriesOptional" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbxEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QpbykIlEeG5UvLPSY8o7A" name="ProcedureNoteReasonForVisitSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Qpby0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Qpb0UIlEeG5UvLPSY8o7A" name="ProcedureNoteReviewOfSystemsSection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Qpb0kIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5QzMtUIlEeG5UvLPSY8o7A" name="ProcedureNoteSocialHistorySection" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QzMtkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv1EIlEeG5UvLPSY8o7A" name="ProcedureNoteIndividualTypeId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv1UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode=vocab::ParticipationType::IND)->select(not oclIsUndefined())->forAll((typeId.oclIsUndefined() or typeId.isNullFlavorUndefined()) implies (not typeId.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv1kIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv10IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.location.healthCareFacility->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv2EIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv2UIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.location->select(not oclIsUndefined())->forAll(healthCareFacility->one(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wdv2kIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wdv20IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.encounterParticipant->select(typeCode = vocab::x_EncounterParticipant::REF)->select(not oclIsUndefined())->forAll(typeCode=vocab::x_EncounterParticipant::REF)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5wEIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5Code" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5wUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((code.oclIsUndefined() or code.isNullFlavorUndefined()) implies (not code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5wkIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5Location" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5w0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(location->exists(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5xEIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5xUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5xkIlEeG5UvLPSY8o7A" name="ProcedureNoteComponentOfEncompassingEncounter5" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5x0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->select(not oclIsUndefined())->forAll(encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5yEIlEeG5UvLPSY8o7A" name="ProcedureNoteProviderAssociatedEntityAssociatedPerson" constrainedElement="_LuYEsD7YEeGvOdejHZ7dYg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5yUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.participant->select(typeCode&lt;>vocab::ParticipationType::PRCP and typeCode&lt;>vocab::ParticipationType::IND).associatedEntity->select(not oclIsUndefined())->forAll(associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(rim::Entity)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_Luag8D7YEeGvOdejHZ7dYg" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_5JnTkD7YEeGvOdejHZ7dYg" name="ComponentOf">
        <ownedComment xmi:id="_gIsSED-vEeGtTIIxHid14Q">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5Pwq7EIlEeG5UvLPSY8o7A" name="ComponentOfEncompassingEncounter5" constrainedElement="_5JnTkD7YEeGvOdejHZ7dYg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq7UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.encompassingEncounter->one(encompassingEncounter : cda::EncompassingEncounter | not encompassingEncounter.oclIsUndefined() and encompassingEncounter.oclIsKindOf(cda::EncompassingEncounter))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_DkNqMD7ZEeGvOdejHZ7dYg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_6-yFcD7YEeGvOdejHZ7dYg" name="EncompassingEncounter5">
          <ownedRule xmi:id="_5PdI4kIlEeG5UvLPSY8o7A" name="EncompassingEncounter5Code" constrainedElement="_6-yFcD7YEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PdI40IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5P500UIlEeG5UvLPSY8o7A" name="EncompassingEncounter5Location" constrainedElement="_6-yFcD7YEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P500kIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.location->exists(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location))</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5P501kIlEeG5UvLPSY8o7A" name="EncompassingEncounter5EncounterParticipant" constrainedElement="_6-yFcD7YEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P5010IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.encounterParticipant->one(encounterParticipant : cda::EncounterParticipant | not encounterParticipant.oclIsUndefined() and encounterParticipant.oclIsKindOf(cda::EncounterParticipant))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_GARc8D7ZEeGvOdejHZ7dYg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_IVODYD-PEeGvOdejHZ7dYg" name="Location">
            <ownedRule xmi:id="_5P5000IlEeG5UvLPSY8o7A" name="LocationHealthCareFacility" constrainedElement="_IVODYD-PEeGvOdejHZ7dYg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P501EIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.healthCareFacility->one(healthCareFacility : cda::HealthCareFacility | not healthCareFacility.oclIsUndefined() and healthCareFacility.oclIsKindOf(cda::HealthCareFacility))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_Ka8ZwD-PEeGvOdejHZ7dYg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_il6LoEcZEd6besF9iFIJkQ"/>
            </generalization>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_MHwg4D-PEeGvOdejHZ7dYg" name="HealthCareFacility">
              <ownedRule xmi:id="_5PdI5UIlEeG5UvLPSY8o7A" name="HealthCareFacilityId" constrainedElement="_MHwg4D-PEeGvOdejHZ7dYg">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_5PdI5kIlEeG5UvLPSY8o7A">
                  <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="_O8i8sD-PEeGvOdejHZ7dYg">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qS58QEcIEd6besF9iFIJkQ"/>
              </generalization>
            </nestedClassifier>
          </nestedClassifier>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_VK6jcD-PEeGvOdejHZ7dYg" name="EncounterParticipant">
            <ownedComment xmi:id="_r98kcD-REeGvOdejHZ7dYg">
              <body>SCOPE&amp;typeCode = vocab::x_EncounterParticipant::REF</body>
            </ownedComment>
            <ownedRule xmi:id="_5Pm54kIlEeG5UvLPSY8o7A" name="EncounterParticipantTypeCode" constrainedElement="_VK6jcD-PEeGvOdejHZ7dYg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pm540IlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>self.typeCode=vocab::x_EncounterParticipant::REF</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_wZmiUD-PEeGvOdejHZ7dYg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_5t1WAEcEEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_dlv5cD7ZEeGvOdejHZ7dYg" name="Individual">
        <ownedComment xmi:id="_gmB-ID7aEeGvOdejHZ7dYg">
          <body>INLINE&amp;typeCode=vocab::ParticipationType::IND</body>
        </ownedComment>
        <ownedRule xmi:id="_5Pm55EIlEeG5UvLPSY8o7A" name="IndividualTypeId" constrainedElement="_dlv5cD7ZEeGvOdejHZ7dYg">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pm55UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>(self.typeId.oclIsUndefined() or self.typeId.isNullFlavorUndefined()) implies (not self.typeId.oclIsUndefined())</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_gzxUoD7ZEeGvOdejHZ7dYg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_4_GbMEcZEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_UAm-YD-NEeGvOdejHZ7dYg" name="PrimaryCarePhysician">
        <ownedComment xmi:id="_ybOGsD-NEeGvOdejHZ7dYg">
          <body>INLINE&amp;typeCode=vocab::ParticipationType::PRCP</body>
        </ownedComment>
        <generalization xmi:id="_ZbTFcD-NEeGvOdejHZ7dYg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_4_GbMEcZEd6besF9iFIJkQ"/>
        </generalization>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_-bwgYD-NEeGvOdejHZ7dYg" name="Provider">
        <ownedComment xmi:id="_Fl39sD-OEeGvOdejHZ7dYg">
          <body>INLINE&amp;typeCode&lt;>vocab::ParticipationType::PRCP and typeCode&lt;>vocab::ParticipationType::IND</body>
        </ownedComment>
        <generalization xmi:id="_HxWWwD-OEeGvOdejHZ7dYg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_4_GbMEcZEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_TBq0cD-OEeGvOdejHZ7dYg" name="AssociatedEntity">
          <ownedRule xmi:id="_5Pwq50IlEeG5UvLPSY8o7A" name="AssociatedEntityAssociatedPerson" constrainedElement="_TBq0cD-OEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq6EIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.associatedPerson->one(associatedPerson : cda::Person | not associatedPerson.oclIsUndefined() and associatedPerson.oclIsKindOf(rim::Entity))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_WNWGQD-OEeGvOdejHZ7dYg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_8OcHAEcDEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_aYrE8D-TEeGvOdejHZ7dYg" name="DocumentationOf">
        <ownedComment xmi:id="_hpGU4D-vEeGtTIIxHid14Q">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_gQbigD-TEeGvOdejHZ7dYg">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1fhigEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_ifn98D-TEeGvOdejHZ7dYg" name="ServiceEvent1">
          <ownedRule xmi:id="_1M1D8D-TEeGvOdejHZ7dYg" name="ServiceEvent1ProcedureCodes" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_1M1D8T-TEeGvOdejHZ7dYg">
              <language>OCL</language>
              <body>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="_9FRm4D-TEeGvOdejHZ7dYg" name="ServiceEvent1EffectiveTimeHasLow" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_9FRm4T-TEeGvOdejHZ7dYg">
              <language>OCL</language>
              <body>not self.effectiveTime.low.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_-xFBYD-TEeGvOdejHZ7dYg" name="ServiceEvent1EffectiveTimeHasHighWhenNoWidth" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_-xFBYT-TEeGvOdejHZ7dYg">
              <language>OCL</language>
              <body>not self.effectiveTime.width.oclIsUndefined() xor not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_An8cYD-UEeGvOdejHZ7dYg" name="ServiceEvent1EffectiveTimeNoHighIfWidth" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_An8cYT-UEeGvOdejHZ7dYg">
              <language>OCL</language>
              <body>not self.effectiveTime.width.oclIsUndefined() xor not self.effectiveTime.high.oclIsUndefined()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_guPDYD-UEeGvOdejHZ7dYg" name="ServiceEvent1AnyAssistantsAsSecondary" constrainedElement="_1mJ2ID4jEeGhnL_c4sBHGg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_guPDYT-UEeGvOdejHZ7dYg">
              <language>OCL</language>
              <body>self.performer->forAll(typeCode = vocab::x_ServiceEventPerformer::PPRF or typeCode= vocab::x_ServiceEventPerformer::SPRF)</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Pm56EIlEeG5UvLPSY8o7A" name="ServiceEvent1Code" constrainedElement="_ifn98D-TEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pm56UIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Pm56kIlEeG5UvLPSY8o7A" name="ServiceEvent1EffectiveTime" constrainedElement="_ifn98D-TEeGvOdejHZ7dYg">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pm560IlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_k7duQD-TEeGvOdejHZ7dYg">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_lriDUEcaEd6besF9iFIJkQ"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_TtkpcD-UEeGvOdejHZ7dYg" name="PrimaryPerformer">
            <ownedComment xmi:id="_TtkpcT-UEeGvOdejHZ7dYg">
              <body>SCOPE&amp;typeCode = vocab::x_ServiceEventPerformer::PPRF</body>
            </ownedComment>
            <ownedRule xmi:id="_5Pwq4UIlEeG5UvLPSY8o7A" name="PrimaryPerformerFunctionCode" constrainedElement="_TtkpcD-UEeGvOdejHZ7dYg">
              <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Pwq4kIlEeG5UvLPSY8o7A">
                <language>OCL</language>
                <body>(self.functionCode.oclIsUndefined() or self.functionCode.isNullFlavorUndefined()) implies (self.functionCode.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.functionCode.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.101' and not value.code.oclIsUndefined()))</body>
              </specification>
            </ownedRule>
            <generalization xmi:id="_Ttkpcj-UEeGvOdejHZ7dYg">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_FvF74EcaEd6besF9iFIJkQ"/>
            </generalization>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5P503EIlEeG5UvLPSY8o7A" name="getAssessmentSection" isQuery="true" bodyCondition="_5P5030IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5P5030IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5P503EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P504EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->first().oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5P503UIlEeG5UvLPSY8o7A" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5P503kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5P5040IlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5P505kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5P505kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5P5040IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5P5050IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5P505EIlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5P505UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QDl0EIlEeG5UvLPSY8o7A" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_5QDl00IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QDl00IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QDl0EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl1EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->first().oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QDl0UIlEeG5UvLPSY8o7A" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QDl0kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QDl10IlEeG5UvLPSY8o7A" name="getComplicationsSection" isQuery="true" bodyCondition="_5QDl2kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QDl2kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QDl10IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl20IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ComplicationsSection))->asSequence()->first().oclAsType(consol::ComplicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QDl2EIlEeG5UvLPSY8o7A" type="_R1OXcDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QDl2UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QDl3kIlEeG5UvLPSY8o7A" name="getPostprocedureDiagnosisSection" isQuery="true" bodyCondition="_5QDl4UIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QDl4UIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QDl3kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl4kIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PostprocedureDiagnosisSection))->asSequence()->first().oclAsType(consol::PostprocedureDiagnosisSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QDl30IlEeG5UvLPSY8o7A" type="_-jlSMDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QDl4EIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QDl5UIlEeG5UvLPSY8o7A" name="getProcedureDescriptionSection" isQuery="true" bodyCondition="_5QDl6EIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QDl6EIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QDl5UIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl6UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDescriptionSection))->asSequence()->first().oclAsType(consol::ProcedureDescriptionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QDl5kIlEeG5UvLPSY8o7A" type="_HNUIIDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QDl50IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QDl7EIlEeG5UvLPSY8o7A" name="getProcedureIndicationsSection" isQuery="true" bodyCondition="_5QDl70IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QDl70IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QDl7EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QDl8EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureIndicationsSection))->asSequence()->first().oclAsType(consol::ProcedureIndicationsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QDl7UIlEeG5UvLPSY8o7A" type="_cjmJMDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QDl7kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QNW0EIlEeG5UvLPSY8o7A" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_5QNW00IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QNW00IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QNW0EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW1EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->first().oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QNW0UIlEeG5UvLPSY8o7A" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QNW0kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QNW10IlEeG5UvLPSY8o7A" name="getAnesthesiaSection" isQuery="true" bodyCondition="_5QNW2kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QNW2kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QNW10IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW20IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AnesthesiaSection))->asSequence()->first().oclAsType(consol::AnesthesiaSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QNW2EIlEeG5UvLPSY8o7A" type="_OA_Q0DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QNW2UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QNW3kIlEeG5UvLPSY8o7A" name="getChiefComplaintSection" isQuery="true" bodyCondition="_5QNW4UIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QNW4UIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QNW3kIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW4kIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->first().oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QNW30IlEeG5UvLPSY8o7A" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QNW4EIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QNW5UIlEeG5UvLPSY8o7A" name="getChiefComplaintAndReasonForVisitSection" isQuery="true" bodyCondition="_5QNW6EIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QNW6EIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QNW5UIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW6UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintAndReasonForVisitSection))->asSequence()->first().oclAsType(consol::ChiefComplaintAndReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QNW5kIlEeG5UvLPSY8o7A" type="_oI7CQCsaEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QNW50IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QNW7EIlEeG5UvLPSY8o7A" name="getFamilyHistorySection" isQuery="true" bodyCondition="_5QNW70IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QNW70IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QNW7EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QNW8EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::FamilyHistorySection))->asSequence()->first().oclAsType(consol::FamilyHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QNW7UIlEeG5UvLPSY8o7A" type="_2IWQIxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QNW7kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QWgwEIlEeG5UvLPSY8o7A" name="getHistoryOfPastIllnessSection" isQuery="true" bodyCondition="_5QWgw0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QWgw0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QWgwEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWgxEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPastIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPastIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QWgwUIlEeG5UvLPSY8o7A" type="_2PQJcxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QWgwkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QWgx0IlEeG5UvLPSY8o7A" name="getHistoryOfPresentIllnessSection" isQuery="true" bodyCondition="_5QWgykIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QWgykIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QWgx0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWgy0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::HistoryOfPresentIllnessSection))->asSequence()->first().oclAsType(consol::HistoryOfPresentIllnessSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QWgyEIlEeG5UvLPSY8o7A" type="_2PcWsRSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QWgyUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QWgzkIlEeG5UvLPSY8o7A" name="getMedicalHistorySection" isQuery="true" bodyCondition="_5QWg0UIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QWg0UIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QWgzkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWg0kIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicalHistorySection))->asSequence()->first().oclAsType(consol::MedicalHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QWgz0IlEeG5UvLPSY8o7A" type="_mEIgwDVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QWg0EIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QWg1UIlEeG5UvLPSY8o7A" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_5QWg2EIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QWg2EIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QWg1UIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWg2UIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QWg1kIlEeG5UvLPSY8o7A" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QWg10IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QWg3EIlEeG5UvLPSY8o7A" name="getMedicationsAdministeredSection" isQuery="true" bodyCondition="_5QWg30IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QWg30IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QWg3EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QWg4EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsAdministeredSection))->asSequence()->first().oclAsType(consol::MedicationsAdministeredSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QWg3UIlEeG5UvLPSY8o7A" type="_2Poj_BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QWg3kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QgRwkIlEeG5UvLPSY8o7A" name="getPhysicalExamSection" isQuery="true" bodyCondition="_5QgRxUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QgRxUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QgRwkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgRxkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->first().oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QgRw0IlEeG5UvLPSY8o7A" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QgRxEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QgRyUIlEeG5UvLPSY8o7A" name="getPlannedProcedureSection" isQuery="true" bodyCondition="_5QgRzEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QgRzEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QgRyUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgRzUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlannedProcedureSection))->asSequence()->first().oclAsType(consol::PlannedProcedureSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QgRykIlEeG5UvLPSY8o7A" type="_3b6E4DVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QgRy0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QgR0EIlEeG5UvLPSY8o7A" name="getProcedureDispositionSection" isQuery="true" bodyCondition="_5QgR00IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QgR00IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QgR0EIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgR1EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureDispositionSection))->asSequence()->first().oclAsType(consol::ProcedureDispositionSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QgR0UIlEeG5UvLPSY8o7A" type="_QhXGYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QgR0kIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QgR10IlEeG5UvLPSY8o7A" name="getProcedureEstimatedBloodLossSection " isQuery="true" bodyCondition="_5QgR2kIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QgR2kIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QgR10IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QgR20IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureEstimatedBloodLossSection ))->asSequence()->first().oclAsType(consol::ProcedureEstimatedBloodLossSection )</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QgR2EIlEeG5UvLPSY8o7A" type="_TvcL8DVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QgR2UIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QpbsEIlEeG5UvLPSY8o7A" name="getProcedureFindingsSection" isQuery="true" bodyCondition="_5Qpbs0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Qpbs0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QpbsEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbtEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureFindingsSection))->asSequence()->first().oclAsType(consol::ProcedureFindingsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QpbsUIlEeG5UvLPSY8o7A" type="_W4UBYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QpbskIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Qpbt0IlEeG5UvLPSY8o7A" name="getProcedureImplantsSection" isQuery="true" bodyCondition="_5QpbukIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QpbukIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Qpbt0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Qpbu0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureImplantsSection))->asSequence()->first().oclAsType(consol::ProcedureImplantsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QpbuEIlEeG5UvLPSY8o7A" type="_Z662wDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QpbuUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QpbvkIlEeG5UvLPSY8o7A" name="getProcedureSpecimensTakenSection" isQuery="true" bodyCondition="_5QpbwUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QpbwUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QpbvkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbwkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProcedureSpecimensTakenSection))->asSequence()->first().oclAsType(consol::ProcedureSpecimensTakenSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Qpbv0IlEeG5UvLPSY8o7A" type="_gSUdsDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QpbwEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QpbxUIlEeG5UvLPSY8o7A" name="getProceduresSectionEntriesOptional" isQuery="true" bodyCondition="_5QpbyEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QpbyEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QpbxUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QpbyUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProceduresSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProceduresSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QpbxkIlEeG5UvLPSY8o7A" type="_s9Ig4BVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Qpbx0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QpbzEIlEeG5UvLPSY8o7A" name="getReasonForVisitSection" isQuery="true" bodyCondition="_5Qpbz0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Qpbz0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QpbzEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Qpb0EIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReasonForVisitSection))->asSequence()->first().oclAsType(consol::ReasonForVisitSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QpbzUIlEeG5UvLPSY8o7A" type="_Nm64UCscEeGHF88-qhhUMA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QpbzkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QzMsEIlEeG5UvLPSY8o7A" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_5QzMs0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QzMs0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QzMsEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QzMtEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->first().oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QzMsUIlEeG5UvLPSY8o7A" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QzMskIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5QzMt0IlEeG5UvLPSY8o7A" name="getSocialHistorySection" isQuery="true" bodyCondition="_5QzMukIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5QzMukIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5QzMt0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QzMu0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SocialHistorySection))->asSequence()->first().oclAsType(consol::SocialHistorySection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5QzMuEIlEeG5UvLPSY8o7A" type="_2JKvgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5QzMuUIlEeG5UvLPSY8o7A" 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="_5QzMvEIlEeG5UvLPSY8o7A" name="ProgressNoteTemplateId" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QzMvUIlEeG5UvLPSY8o7A">
          <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="_5QzMv0IlEeG5UvLPSY8o7A" name="GeneralHeaderConstraintsCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5QzMwEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.codeSystem = '2.16.840.1.113883.6.1' and not value.code.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RGHoEIlEeG5UvLPSY8o7A" name="ProgressNoteDocumentationOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHoUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->one(documentationOf : cda::DocumentationOf | not documentationOf.oclIsUndefined() and documentationOf.oclIsKindOf(cda::DocumentationOf))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RGHokIlEeG5UvLPSY8o7A" name="ProgressNoteComponentOf" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHo0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf->one(componentOf : cda::Component1 | not componentOf.oclIsUndefined() and componentOf.oclIsKindOf(cda::Component1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RGHpkIlEeG5UvLPSY8o7A" name="ProgressNoteAssessmentSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHp0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RGHrUIlEeG5UvLPSY8o7A" name="ProgressNotePlanOfCareSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHrkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RGHtEIlEeG5UvLPSY8o7A" name="ProgressNoteAssessmentAndPlanSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHtUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RP4pUIlEeG5UvLPSY8o7A" name="ProgressNoteAllergiesSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4pkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RP4rEIlEeG5UvLPSY8o7A" name="ProgressNoteChiefComplaintSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4rUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RP4s0IlEeG5UvLPSY8o7A" name="ProgressNoteInterventionsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4tEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RP4ukIlEeG5UvLPSY8o7A" name="ProgressNoteMedicationsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4u0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RP4wUIlEeG5UvLPSY8o7A" name="ProgressNoteObjectiveSection " constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4wkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection ))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RZppUIlEeG5UvLPSY8o7A" name="ProgressNotePhysicalExamSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZppkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RZprEIlEeG5UvLPSY8o7A" name="ProgressNoteProblemSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZprUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RZps0IlEeG5UvLPSY8o7A" name="ProgressNoteResultsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZptEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RZpukIlEeG5UvLPSY8o7A" name="ProgressNoteReviewOfSystemsSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpu0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RZpwUIlEeG5UvLPSY8o7A" name="ProgressNoteSubjectiveSection" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpwkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5RizlUIlEeG5UvLPSY8o7A" name="ProgressNoteVitalSignsSectionEntriesOptional" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizlkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.getAllSections()->one(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5ykIlEeG5UvLPSY8o7A" name="ProgressNoteDocumentationOfServiceEvent2ClassCode" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5y0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll(isDefined('classCode') and classCode=vocab::ActClassRoot::PCPR)</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Wm5zEIlEeG5UvLPSY8o7A" name="ProgressNoteDocumentationOfServiceEvent2EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wm5zUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf.serviceEvent->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqwEIlEeG5UvLPSY8o7A" name="ProgressNoteDocumentationOfServiceEvent2" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WwqwUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.documentationOf->select(not oclIsUndefined())->forAll(serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent)))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqwkIlEeG5UvLPSY8o7A" name="ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wwqw0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter.location.healthCareFacility->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (id->size() = 1))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqxEIlEeG5UvLPSY8o7A" name="ProgressNoteComponentOfEncompassingEncounter6EffectiveTime" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WwqxUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((effectiveTime.oclIsUndefined() or effectiveTime.isNullFlavorUndefined()) implies (not effectiveTime.oclIsUndefined()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqxkIlEeG5UvLPSY8o7A" name="ProgressNoteComponentOfEncompassingEncounter6Id" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Wwqx0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll((id->isEmpty() or id->exists(element | element.isNullFlavorUndefined())) implies (not id->isEmpty()))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5WwqyEIlEeG5UvLPSY8o7A" name="ProgressNoteComponentOfEncompassingEncounter6Location" constrainedElement="_UBzvED_LEeGXieeKs7NJjA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5WwqyUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.componentOf.encompassingEncounter->select(not oclIsUndefined())->forAll(location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location)))</body>
        </specification>
      </ownedRule>
      <generalization xmi:id="_UCQbAD_LEeGXieeKs7NJjA" general="_2DNRcBSVEeGGzu7fmW9pXw"/>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_aemW4D_MEeGXieeKs7NJjA" name="DocumentationOf">
        <ownedComment xmi:id="_RZWooD_XEeGnev0fONNFyw">
          <body>INLINE</body>
        </ownedComment>
        <ownedRule xmi:id="_5RiznEIlEeG5UvLPSY8o7A" name="DocumentationOfServiceEvent2" constrainedElement="_aemW4D_MEeGXieeKs7NJjA">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RiznUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.serviceEvent->one(serviceEvent : cda::ServiceEvent | not serviceEvent.oclIsUndefined() and serviceEvent.oclIsKindOf(cda::ServiceEvent))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="_jl-yID_MEeGXieeKs7NJjA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_1fhigEcEEd6besF9iFIJkQ"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_sfqx0D_bEeGnev0fONNFyw" name="ServiceEvent2">
          <ownedRule xmi:id="_5Q89sUIlEeG5UvLPSY8o7A" name="ServiceEvent2ClassCode" constrainedElement="_sfqx0D_bEeGnev0fONNFyw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Q89skIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>isDefined('classCode') and self.classCode=vocab::ActClassRoot::PCPR</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Q89s0IlEeG5UvLPSY8o7A" name="ServiceEvent2EffectiveTime" constrainedElement="_sfqx0D_bEeGnev0fONNFyw">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Q89tEIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_zJsZ0D_bEeGnev0fONNFyw">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_lriDUEcaEd6besF9iFIJkQ"/>
          </generalization>
        </nestedClassifier>
      </nestedClassifier>
      <nestedClassifier xmi:type="uml:Class" xmi:id="_xFWhUD_MEeGXieeKs7NJjA" name="ComponentOf">
        <ownedComment xmi:id="_SbXfQD_XEeGnev0fONNFyw">
          <body>INLINE</body>
        </ownedComment>
        <generalization xmi:id="_1tcGwD_MEeGXieeKs7NJjA">
          <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_NWHRoEAJEd6wZe6nFLrjsw"/>
        </generalization>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_gtLcMD_QEeGXieeKs7NJjA" name="EncompassingEncounter6">
          <ownedRule xmi:id="_5Q89tUIlEeG5UvLPSY8o7A" name="EncompassingEncounter6EffectiveTime" constrainedElement="_gtLcMD_QEeGXieeKs7NJjA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Q89tkIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>(self.effectiveTime.oclIsUndefined() or self.effectiveTime.isNullFlavorUndefined()) implies (not self.effectiveTime.oclIsUndefined())</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="_5Q89uEIlEeG5UvLPSY8o7A" name="EncompassingEncounter6Id" constrainedElement="_gtLcMD_QEeGXieeKs7NJjA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Q89uUIlEeG5UvLPSY8o7A">
              <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="_5RGHpEIlEeG5UvLPSY8o7A" name="EncompassingEncounter6Location" constrainedElement="_gtLcMD_QEeGXieeKs7NJjA">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHpUIlEeG5UvLPSY8o7A">
              <language>OCL</language>
              <body>self.location->one(location : cda::Location | not location.oclIsUndefined() and location.oclIsKindOf(cda::Location))</body>
            </specification>
          </ownedRule>
          <generalization xmi:id="_nafBsD_QEeGXieeKs7NJjA">
            <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_j5JZsEAJEd6wZe6nFLrjsw"/>
          </generalization>
          <nestedClassifier xmi:type="uml:Class" xmi:id="_xIKA4D_QEeGXieeKs7NJjA" name="Location">
            <generalization xmi:id="_dVoNYD_XEeGnev0fONNFyw">
              <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_il6LoEcZEd6besF9iFIJkQ"/>
            </generalization>
            <nestedClassifier xmi:type="uml:Class" xmi:id="_1UYJsD_QEeGXieeKs7NJjA" name="HealthCareFacility1">
              <ownedRule xmi:id="_5Q89ukIlEeG5UvLPSY8o7A" name="HealthCareFacility1Id" constrainedElement="_1UYJsD_QEeGXieeKs7NJjA">
                <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Q89u0IlEeG5UvLPSY8o7A">
                  <language>OCL</language>
                  <body>(self.id->isEmpty() or self.id->exists(element | element.isNullFlavorUndefined())) implies (self.id->size() = 1)</body>
                </specification>
              </ownedRule>
              <generalization xmi:id="_5sFJwD_QEeGXieeKs7NJjA">
                <general xmi:type="uml:Class" href="../../org.openhealthtools.mdht.uml.cda/model/cda.uml#_qS58QEcIEd6besF9iFIJkQ"/>
              </generalization>
            </nestedClassifier>
          </nestedClassifier>
        </nestedClassifier>
      </nestedClassifier>
      <ownedOperation xmi:id="_5RGHqEIlEeG5UvLPSY8o7A" name="getAssessmentSection" isQuery="true" bodyCondition="_5RGHq0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RGHq0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RGHqEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHrEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentSection))->asSequence()->first().oclAsType(consol::AssessmentSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RGHqUIlEeG5UvLPSY8o7A" type="_W8pI4DszEeGvzMYhXuqAEA" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RGHqkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RGHr0IlEeG5UvLPSY8o7A" name="getPlanOfCareSection" isQuery="true" bodyCondition="_5RGHskIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RGHskIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RGHr0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RGHs0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PlanOfCareSection))->asSequence()->first().oclAsType(consol::PlanOfCareSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RGHsEIlEeG5UvLPSY8o7A" type="_2NP-QxSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RGHsUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RP4oEIlEeG5UvLPSY8o7A" name="getAssessmentAndPlanSection" isQuery="true" bodyCondition="_5RP4o0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RP4o0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RP4oEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4pEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AssessmentAndPlanSection))->asSequence()->first().oclAsType(consol::AssessmentAndPlanSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RP4oUIlEeG5UvLPSY8o7A" type="_2Rwq0BSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RP4okIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RP4p0IlEeG5UvLPSY8o7A" name="getAllergiesSectionEntriesOptional" isQuery="true" bodyCondition="_5RP4qkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RP4qkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RP4p0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4q0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::AllergiesSectionEntriesOptional))->asSequence()->first().oclAsType(consol::AllergiesSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RP4qEIlEeG5UvLPSY8o7A" type="_bGzYgBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RP4qUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RP4rkIlEeG5UvLPSY8o7A" name="getChiefComplaintSection" isQuery="true" bodyCondition="_5RP4sUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RP4sUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RP4rkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4skIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ChiefComplaintSection))->asSequence()->first().oclAsType(consol::ChiefComplaintSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RP4r0IlEeG5UvLPSY8o7A" type="_2PWQCBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RP4sEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RP4tUIlEeG5UvLPSY8o7A" name="getInterventionsSection" isQuery="true" bodyCondition="_5RP4uEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RP4uEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RP4tUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4uUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::InterventionsSection))->asSequence()->first().oclAsType(consol::InterventionsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RP4tkIlEeG5UvLPSY8o7A" type="_hqzJADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RP4t0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RP4vEIlEeG5UvLPSY8o7A" name="getMedicationsSectionEntriesOptional" isQuery="true" bodyCondition="_5RP4v0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RP4v0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RP4vEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RP4wEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::MedicationsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::MedicationsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RP4vUIlEeG5UvLPSY8o7A" type="_iAoXEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RP4vkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RZpoEIlEeG5UvLPSY8o7A" name="getObjectiveSection " isQuery="true" bodyCondition="_5RZpo0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RZpo0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RZpoEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZppEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ObjectiveSection ))->asSequence()->first().oclAsType(consol::ObjectiveSection )</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RZpoUIlEeG5UvLPSY8o7A" type="_rNJpADVyEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RZpokIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RZpp0IlEeG5UvLPSY8o7A" name="getPhysicalExamSection" isQuery="true" bodyCondition="_5RZpqkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RZpqkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RZpp0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpq0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::PhysicalExamSection))->asSequence()->first().oclAsType(consol::PhysicalExamSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RZpqEIlEeG5UvLPSY8o7A" type="_2Pxt0hSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RZpqUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RZprkIlEeG5UvLPSY8o7A" name="getProblemSectionEntriesOptional" isQuery="true" bodyCondition="_5RZpsUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RZpsUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RZprkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpskIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ProblemSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ProblemSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RZpr0IlEeG5UvLPSY8o7A" type="_naxrkBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RZpsEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RZptUIlEeG5UvLPSY8o7A" name="getResultsSectionEntriesOptional" isQuery="true" bodyCondition="_5RZpuEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RZpuEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RZptUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpuUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ResultsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::ResultsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RZptkIlEeG5UvLPSY8o7A" type="_xGqiEBVdEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RZpt0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RZpvEIlEeG5UvLPSY8o7A" name="getReviewOfSystemsSection" isQuery="true" bodyCondition="_5RZpv0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RZpv0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RZpvEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RZpwEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::ReviewOfSystemsSection))->asSequence()->first().oclAsType(consol::ReviewOfSystemsSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RZpvUIlEeG5UvLPSY8o7A" type="_2RqkMBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RZpvkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5RizkEIlEeG5UvLPSY8o7A" name="getSubjectiveSection" isQuery="true" bodyCondition="_5Rizk0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Rizk0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5RizkEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RizlEIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::SubjectiveSection))->asSequence()->first().oclAsType(consol::SubjectiveSection)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RizkUIlEeG5UvLPSY8o7A" type="_iy8nYDVzEeGaW4kr-GbV8Q" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RizkkIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
      <ownedOperation xmi:id="_5Rizl0IlEeG5UvLPSY8o7A" name="getVitalSignsSectionEntriesOptional" isQuery="true" bodyCondition="_5RizmkIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5RizmkIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Rizl0IlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Rizm0IlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getAllSections()->select(section : cda::Section | not section.oclIsUndefined() and section.oclIsKindOf(consol::VitalSignsSectionEntriesOptional))->asSequence()->first().oclAsType(consol::VitalSignsSectionEntriesOptional)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5RizmEIlEeG5UvLPSY8o7A" type="_bRH8sBVeEeGQCvUGzi1kDQ" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RizmUIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0fjXAEEvEeGdmoWy_aLP0Q" name="PostprocedureDiagnosis">
      <ownedRule xmi:id="_5RskmkIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisTemplateId" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Rskm0IlEeG5UvLPSY8o7A">
          <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="_5RsknUIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisClassCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RsknkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Rskn0IlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5RskoEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '59769-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R1ugEIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisMoodCode" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1ugUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R1ugkIlEeG5UvLPSY8o7A" name="PostprocedureDiagnosisProblemObservation" constrainedElement="_0fjXAEEvEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1ug0IlEeG5UvLPSY8o7A">
          <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="_5R1uhEIlEeG5UvLPSY8o7A" name="getProblemObservations" isQuery="true" bodyCondition="_5R1uh0IlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5R1uh0IlEeG5UvLPSY8o7A" name="body" constrainedElement="_5R1uhEIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1uiEIlEeG5UvLPSY8o7A">
            <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="_5R1uhUIlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5R1uhkIlEeG5UvLPSY8o7A" value="*"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_0baBYEEwEeGdmoWy_aLP0Q" name="PreoperativeDiagnosis">
      <ownedRule xmi:id="_5R1ukEIlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisTemplateId" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1ukUIlEeG5UvLPSY8o7A">
          <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="_5R1uk0IlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisClassCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R1ulEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R_fgEIlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R_fgUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '10219-4' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R_fgkIlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisMoodCode" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R_fg0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5R_fhEIlEeG5UvLPSY8o7A" name="PreoperativeDiagnosisProblemObservation" constrainedElement="_0baBYEEwEeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R_fhUIlEeG5UvLPSY8o7A">
          <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::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="_5R_fhkIlEeG5UvLPSY8o7A" name="getProblemObservation" isQuery="true" bodyCondition="_5R_fiUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5R_fiUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5R_fhkIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5R_fikIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation))->asSequence()->first().oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5R_fh0IlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5R_fiEIlEeG5UvLPSY8o7A" value="1"/>
        </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.</body>
      </ownedComment>
      <ownedRule xmi:id="_5SJQjUIlEeG5UvLPSY8o7A" name="InstructionsSectionCode" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQjkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CE) and &#xD;&#xA;let value : datatypes::CE = self.code.oclAsType(datatypes::CE) in (&#xD;&#xA;value.code = '69730-0' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SJQj0IlEeG5UvLPSY8o7A" name="InstructionsSectionText" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQkEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>not self.text.oclIsUndefined()</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SJQkUIlEeG5UvLPSY8o7A" name="InstructionsSectionTitle" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQkkIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.title.oclIsUndefined() or self.title.isNullFlavorUndefined()) implies (not self.title.oclIsUndefined())</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SJQk0IlEeG5UvLPSY8o7A" name="InstructionsSectionInstructions" constrainedElement="_4qKukEE1EeGdmoWy_aLP0Q">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQlEIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entry->one(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="_5SJQlUIlEeG5UvLPSY8o7A" name="getInstructions" isQuery="true" bodyCondition="_5SJQmEIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SJQmEIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SJQlUIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SJQmUIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getActs()->select(act : cda::Act | not act.oclIsUndefined() and act.oclIsKindOf(consol::Instructions))->asSequence()->first().oclAsType(consol::Instructions)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SJQlkIlEeG5UvLPSY8o7A" type="_2G8h9RSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SJQl0IlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="_LNP08EFGEeGorO80f-Cppg" name="AdmissionMedication">
      <ownedRule xmi:id="_5SJQmkIlEeG5UvLPSY8o7A" name="AdmissionMedicationTemplateId" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSacEIlEeG5UvLPSY8o7A">
          <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="_5SSackIlEeG5UvLPSY8o7A" name="AdmissionMedicationClassCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSac0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SSadEIlEeG5UvLPSY8o7A" name="AdmissionMedicationCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSadUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '42346-7' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SSadkIlEeG5UvLPSY8o7A" name="AdmissionMedicationMoodCode" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSad0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5SSaeEIlEeG5UvLPSY8o7A" name="AdmissionMedicationMedicationActivity" constrainedElement="_LNP08EFGEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSaeUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.entryRelationship->one(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="_5SSaekIlEeG5UvLPSY8o7A" name="getMedicationActivity" isQuery="true" bodyCondition="_5SSafUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5SSafUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5SSaekIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5SSafkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getSubstanceAdministrations()->select(substanceAdministration : cda::SubstanceAdministration | not substanceAdministration.oclIsUndefined() and substanceAdministration.oclIsKindOf(consol::MedicationActivity))->asSequence()->first().oclAsType(consol::MedicationActivity)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5SSae0IlEeG5UvLPSY8o7A" type="_2GHbgBSVEeGGzu7fmW9pXw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5SSafEIlEeG5UvLPSY8o7A" value="1"/>
        </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="_5ScLd0IlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisTemplateId" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLeEIlEeG5UvLPSY8o7A">
          <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="_5ScLekIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisClassCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLe0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.classCode=vocab::x_ActClassDocumentEntryAct::ACT</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ScLfEIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLfUIlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>(self.code.oclIsUndefined() or self.code.isNullFlavorUndefined()) implies (not self.code.oclIsUndefined() and self.code.oclIsKindOf(datatypes::CD) and &#xD;&#xA;let value : datatypes::CD = self.code.oclAsType(datatypes::CD) in (&#xD;&#xA;value.code = '46241-6' and value.codeSystem = '2.16.840.1.113883.6.1'))</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5ScLfkIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisMoodCode" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5ScLf0IlEeG5UvLPSY8o7A">
          <language>OCL</language>
          <body>self.moodCode=vocab::x_DocumentActMood::EVN</body>
        </specification>
      </ownedRule>
      <ownedRule xmi:id="_5Sl8cEIlEeG5UvLPSY8o7A" name="HospitalAdmissionDiagnosisProblemObservation" constrainedElement="_5K6mAEFHEeGorO80f-Cppg">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8cUIlEeG5UvLPSY8o7A">
          <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::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="_5Sl8ckIlEeG5UvLPSY8o7A" name="getProblemObservation" isQuery="true" bodyCondition="_5Sl8dUIlEeG5UvLPSY8o7A">
        <ownedRule xmi:id="_5Sl8dUIlEeG5UvLPSY8o7A" name="body" constrainedElement="_5Sl8ckIlEeG5UvLPSY8o7A">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="_5Sl8dkIlEeG5UvLPSY8o7A">
            <language>OCL</language>
            <body>self.getObservations()->select(observation : cda::Observation | not observation.oclIsUndefined() and observation.oclIsKindOf(consol::ProblemObservation))->asSequence()->first().oclAsType(consol::ProblemObservation)</body>
          </specification>
        </ownedRule>
        <ownedParameter xmi:id="_5Sl8c0IlEeG5UvLPSY8o7A" type="_5Ha7ABUyEeGbmN_W114JUw" direction="return">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Sl8dEIlEeG5UvLPSY8o7A" value="1"/>
        </ownedParameter>
      </ownedOperation>
    </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="_4ot5AEIlEeG5UvLPSY8o7A">
      <eAnnotations xmi:id="_4ot5AUIlEeG5UvLPSY8o7A" 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:AssociationValidation xmi:id="_UCT-cBq1EeGo461UQq-B1g" base_Association="_NdMEkRq1EeGo461UQq-B1g"/>
  <CDA:EntryRelationship xmi:id="_hDPtEBrUEeGo461UQq-B1g" severity="INFO" base_Association="_eLHCUhrUEeGo461UQq-B1g" typeCode="REFR"/>
  <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:ConstraintValidation xmi:id="_Lqn54CzAEeGMXrZ0DiQwGg" base_Constraint="_LKdzICzAEeGMXrZ0DiQwGg"/>
  <CDA:ClassValidation xmi:id="_H03o8CzDEeGMXrZ0DiQwGg" base_Class="_NmVGsCzCEeGMXrZ0DiQwGg">
    <ruleId>CONF:8221</ruleId>
  </CDA:ClassValidation>
  <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>
  <uml:Association xmi:id="_2Uz-1hSVEeGGzu7fmW9pXw" memberEnd="_2Uz-1xSVEeGGzu7fmW9pXw">
    <ownedEnd xmi:id="_2Uz-1xSVEeGGzu7fmW9pXw" type="_2UnxkRSVEeGGzu7fmW9pXw" association="_2Uz-1hSVEeGGzu7fmW9pXw"/>
  </uml:Association>
  <CDA:CDATemplate xmi:id="_2UnxxhSVEeGGzu7fmW9pXw" base_Class="_2UnxkRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.1.8"/>
  <CDA:AssociationValidation xmi:id="_2Uz-2BSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2Uz-1hSVEeGGzu7fmW9pXw">
    <ruleId>C48-[CT2-18]</ruleId>
  </CDA:AssociationValidation>
  <uml:Association xmi:id="_2IRXoxSVEeGGzu7fmW9pXw"/>
  <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:AssociationValidation xmi:id="_2IR-sRSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2IRXoxSVEeGGzu7fmW9pXw">
    <ruleId>C32-[CT1-16]</ruleId>
  </CDA:AssociationValidation>
  <CDA:CDATemplate xmi:id="_2UhrABSVEeGGzu7fmW9pXw" base_Class="_2Uhq_hSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.3.88.11.48.1"/>
  <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:CDATemplate xmi:id="_2Uhq_RSVEeGGzu7fmW9pXw" base_Class="_2UJQeBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.19.1"/>
  <CDA:ConstraintValidation xmi:id="_2UPXNRSVEeGGzu7fmW9pXw" base_Constraint="_2UPXMxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UPXORSVEeGGzu7fmW9pXw" base_Constraint="_2UPXNhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UPXPBSVEeGGzu7fmW9pXw" base_Constraint="_2UPXOhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdshSVEeGGzu7fmW9pXw" base_Constraint="_2UVdsBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdthSVEeGGzu7fmW9pXw" base_Constraint="_2UVdsxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVduRSVEeGGzu7fmW9pXw" base_Constraint="_2UVdtxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdvBSVEeGGzu7fmW9pXw" base_Constraint="_2UVduhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdvxSVEeGGzu7fmW9pXw" base_Constraint="_2UVdvRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdwhSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2UVdwBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdxRSVEeGGzu7fmW9pXw" base_Constraint="_2UVdwxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdyBSVEeGGzu7fmW9pXw" base_Constraint="_2UVdxhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdyxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVdzhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVd0RSVEeGGzu7fmW9pXw" base_Constraint="_2UVdzxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UVd1RSVEeGGzu7fmW9pXw" base_Constraint="_2UVd0hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkUhSVEeGGzu7fmW9pXw" base_Constraint="_2UbkUBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkVRSVEeGGzu7fmW9pXw" base_Constraint="_2UbkUxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkWRSVEeGGzu7fmW9pXw" base_Constraint="_2UbkVhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkXBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2UbkWhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkXxSVEeGGzu7fmW9pXw" base_Constraint="_2UbkXRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2UbkYhSVEeGGzu7fmW9pXw" base_Constraint="_2UbkYBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-17</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkZRSVEeGGzu7fmW9pXw" base_Constraint="_2UbkYxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-25</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkaBSVEeGGzu7fmW9pXw" base_Constraint="_2UbkZhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-26</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkaxSVEeGGzu7fmW9pXw" base_Constraint="_2UbkaRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-28</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkbhSVEeGGzu7fmW9pXw" base_Constraint="_2UbkbBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-29</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkcRSVEeGGzu7fmW9pXw" base_Constraint="_2UbkbxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-30</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkdBSVEeGGzu7fmW9pXw" base_Constraint="_2UbkchSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-31</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UbkdxSVEeGGzu7fmW9pXw" base_Constraint="_2UbkdRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-32</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Uhq8hSVEeGGzu7fmW9pXw" base_Constraint="_2Uhq8BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-34</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Uhq9RSVEeGGzu7fmW9pXw" base_Constraint="_2Uhq8xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-35</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Uhq-BSVEeGGzu7fmW9pXw" base_Constraint="_2Uhq9hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-UD-36</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_jCk3QDVREeGIw7CntkyPQw" base_Constraint="_dqXccDVREeGIw7CntkyPQw"/>
  <CDA:ConstraintValidation xmi:id="_nYyCgDVREeGIw7CntkyPQw" severity="WARNING" base_Constraint="_kIBcYDVREeGIw7CntkyPQw"/>
  <CDA:ConstraintValidation xmi:id="_trWscDVUEeGIw7CntkyPQw" severity="WARNING" base_Constraint="_oGeuoDVUEeGIw7CntkyPQw">
    <ruleId>CONF:9996</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_ADa-ADVXEeGIw7CntkyPQw" base_Constraint="_72wJQDVWEeGIw7CntkyPQw">
    <ruleId>CONF:8002</ruleId>
  </CDA:ConstraintValidation>
  <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:ConstraintValidation xmi:id="_zjqpIDsyEeGvzMYhXuqAEA" base_Constraint="_M0h7UDsxEeGvzMYhXuqAEA">
    <ruleId>CONF:8394</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_z5uYsDsyEeGvzMYhXuqAEA" base_Constraint="_ybGekDsyEeGvzMYhXuqAEA">
    <ruleId>CONF:8396</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-JbFwDzFEeGMk58Mp9-wVA" base_Constraint="_8bTXEDzFEeGMk58Mp9-wVA">
    <ruleId>CONF:8473</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_OYyQUDzGEeGMk58Mp9-wVA" base_Constraint="_cALIgTzFEeGMk58Mp9-wVA">
    <ruleId>CONF:8479</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_T2XTUDzGEeGMk58Mp9-wVA" base_Constraint="_dTBQcTzFEeGMk58Mp9-wVA">
    <ruleId>CONF:8478</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_aIQIIDzGEeGMk58Mp9-wVA" base_Constraint="_Ejp-QDzGEeGMk58Mp9-wVA">
    <ruleId>CONF:8475</ruleId>
  </CDA:ConstraintValidation>
  <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="_kBBuYD1mEeG3tde5scYNWA" base_Constraint="__kITgT1lEeG3tde5scYNWA">
    <ruleId>CONF:8348</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iz4l0D1mEeG3tde5scYNWA" base_Constraint="_B9BdgT1mEeG3tde5scYNWA">
    <ruleId>CONF:8343</ruleId>
  </CDA:ConstraintValidation>
  <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:ConstraintValidation xmi:id="_w9TM8D4pEeGtCLm-c2g23Q" base_Constraint="_rb6aQD4kEeGhnL_c4sBHGg">
    <ruleId>CONF:8487</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2rSDcD4pEeGtCLm-c2g23Q" base_Constraint="_-KjqsD4kEeGhnL_c4sBHGg">
    <ruleId>CONF:8488</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_4ugfcD4pEeGtCLm-c2g23Q" base_Constraint="_CPtiMD4lEeGhnL_c4sBHGg">
    <ruleId>CONF:10058</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_8PujcD4pEeGtCLm-c2g23Q" base_Constraint="_LceMsD4lEeGhnL_c4sBHGg">
    <ruleId>CONF:10060</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_dGMJMD-VEeGvOdejHZ7dYg" base_Constraint="_w0p5MD4nEeGtCLm-c2g23Q"/>
  <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:ConstraintValidation xmi:id="_3lrxsD-TEeGvOdejHZ7dYg" base_Constraint="_1M1D8D-TEeGvOdejHZ7dYg">
    <ruleId>CONF:8511</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_BGvRMD-UEeGvOdejHZ7dYg" base_Constraint="_9FRm4D-TEeGvOdejHZ7dYg">
    <ruleId>CONF:8513</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Bk3-sD-UEeGvOdejHZ7dYg" base_Constraint="_-xFBYD-TEeGvOdejHZ7dYg">
    <ruleId>CONF:8514</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_B76lsD-UEeGvOdejHZ7dYg" base_Constraint="_An8cYD-UEeGvOdejHZ7dYg">
    <ruleId>CONF:8515</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_iqQrMD-UEeGvOdejHZ7dYg" base_Constraint="_guPDYD-UEeGvOdejHZ7dYg">
    <ruleId>CONF:8524</ruleId>
  </CDA:ConstraintValidation>
  <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:ConstraintValidation xmi:id="_5HI7EEEMEeGdmoWy_aLP0Q" base_Constraint="_hmeS4EBYEeGXKr6TcG1UOQ"/>
  <CDA:ConstraintValidation xmi:id="_5i3NwEEMEeGdmoWy_aLP0Q" base_Constraint="_q28YsEBYEeGXKr6TcG1UOQ"/>
  <CDA:ConstraintValidation xmi:id="_jU3i4EIPEeGfG6GbxF_VQQ" severity="WARNING" base_Constraint="_f4CPoEIPEeGfG6GbxF_VQQ">
    <ruleId>CONF:10027</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MTLTcEIQEeGfG6GbxF_VQQ" base_Constraint="_DJkDkEIQEeGfG6GbxF_VQQ">
    <ruleId>CONF:8455</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Mrd3oEIQEeGfG6GbxF_VQQ" base_Constraint="_Bt7MAEIQEeGfG6GbxF_VQQ">
    <ruleId>CONF:8454</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:ConstraintValidation xmi:id="_2LQaMxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-261</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LRBQBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-257</ruleId>
  </CDA:ConstraintValidation>
  <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="_2F1usxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-161</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F2VwhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-180</ruleId>
  </CDA:ConstraintValidation>
  <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="_2F8cYBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-153</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F8cYxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-140</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F9DchSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-256</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2F9qghSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-179</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-8BSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.02-1]</ruleId>
  </CDA:ConstraintValidation>
  <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="_2EGpURSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.04-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EHQYBSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.04-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EH3cBSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.04-3]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EIegBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EJFkBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EJFkRSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.06-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2EJsoBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EKTsBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2EK6wBSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-6.08-1]</ruleId>
  </CDA:ConstraintValidation>
  <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="_2FskwhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-280</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FtL0hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-296</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Fty4hSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-297</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FuZ8hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-161</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FvBABSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-180</ruleId>
  </CDA:ConstraintValidation>
  <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="_2FZp0hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-509</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FaQ4BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-517</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FaQ4xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Fa38hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-519</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FUxUBSVEeGGzu7fmW9pXw"/>
  <CDA:TextValue xmi:id="_2FS8IBSVEeGGzu7fmW9pXw"/>
  <CDA:TextValue xmi:id="_iecvoCCOEeGq2sn1dgvG_g"/>
  <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:7331</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_5EW5ECKdEeG9m6LRl9ardQ" base_Constraint="_0eDcUCKdEeG9m6LRl9ardQ">
    <ruleId>CONF:7377</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:7351</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_3ucQMCK3EeG9m6LRl9ardQ" base_Constraint="_0IXhYCK3EeG9m6LRl9ardQ">
    <ruleId>CONF:7378</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="_lqgGkDJCEeG6R8Pb5FT2Ow" severity="INFO" base_Constraint="_eR_n8DJCEeG6R8Pb5FT2Ow">
    <ruleId>CONF:7431</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_x-HNQDJCEeG6R8Pb5FT2Ow" severity="WARNING" base_Constraint="_ZIdiUDJCEeG6R8Pb5FT2Ow">
    <ruleId>CONF:7424</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:ConstraintValidation xmi:id="_2LV5wBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-144</ruleId>
  </CDA:ConstraintValidation>
  <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"/>
  <CDA:ConstraintValidation xmi:id="_2ICuIBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-151</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2ICuJBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-152</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IDVMhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-153</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2ID8QhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-140</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IEjUhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-256</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IFKYhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-179</ruleId>
  </CDA:ConstraintValidation>
  <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="_2H8AcBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-7.05-CDA-3]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2H8AcRSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-7.05-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2H8ngBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-7.05-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2E4FYhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-509</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2E4scxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-517</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2E5TghSVEeGGzu7fmW9pXw">
    <ruleId>CONF-518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2E56kBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-519</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Ezz8BSVEeGGzu7fmW9pXw" 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"/>
  <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"/>
  <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="_x4R70CBLEeG938evaWkvcA" severity="WARNING" base_Constraint="_vaH7gCBEEeG938evaWkvcA">
    <ruleId>CONF:9187</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:9188</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>
  <uml:Association xmi:id="_zQuJgCdeEeGcTOgEa70Vzg">
    <ownedEnd xmi:id="_zQuwkCdeEeGcTOgEa70Vzg" type="_2LSPYBSVEeGGzu7fmW9pXw" association="_zQuJgCdeEeGcTOgEa70Vzg"/>
    <memberEnd href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/.controlled/consol-problems.uml#_zQs7YCdeEeGcTOgEa70Vzg"/>
    <memberEnd href="#_zQuwkCdeEeGcTOgEa70Vzg"/>
  </uml:Association>
  <uml:Association xmi:id="_p1BrICdeEeGcTOgEa70Vzg">
    <ownedEnd xmi:id="_p1BrISdeEeGcTOgEa70Vzg" type="_naxrkBVdEeGQCvUGzi1kDQ" association="_p1BrICdeEeGcTOgEa70Vzg"/>
    <memberEnd href="../../org.openhealthtools.mdht.uml.cda.consol.model/model/.controlled/consol-problems.uml#_p1AdACdeEeGcTOgEa70Vzg"/>
    <memberEnd href="#_p1BrISdeEeGcTOgEa70Vzg"/>
  </uml:Association>
  <CDA:ConstraintValidation xmi:id="_Q1jF0Cp_EeGiFpKeZIy4Pg" severity="WARNING" base_Constraint="_NGUbACp_EeGiFpKeZIy4Pg">
    <ruleId>CONF:7363</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VCsbsCp_EeGiFpKeZIy4Pg" base_Constraint="_S6G-kCp_EeGiFpKeZIy4Pg">
    <ruleId>CONF:7375</ruleId>
  </CDA:ConstraintValidation>
  <uml:Association xmi:id="_2Rwq4hSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2Rwq5RSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2Rwq6BSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2Rwq6xSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_r3b7QBkaEeGs5a462vYX5Q" base_Class="_2Rwq0BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.9" assigningAuthorityName="HL7">
    <ruleId>CONF:10381</ruleId>
  </CDA:CDATemplate>
  <CDA:AssociationValidation xmi:id="_2Rwq5BSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2Rwq4hSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2Rwq5xSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2Rwq5RSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2Rwq6hSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2Rwq6BSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2Rwq7RSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2Rwq6xSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2PWQEBSVEeGGzu7fmW9pXw"/>
  <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:AssociationValidation xmi:id="_2PWQEhSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2PWQEBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_JkL0wBnbEeGs5a462vYX5Q" base_Class="_2FhloBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.64"/>
  <CDA:ConstraintValidation xmi:id="_2FphcBSVEeGGzu7fmW9pXw" base_Constraint="_2Fo6YRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-6.3.4.6.7</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FphcxSVEeGGzu7fmW9pXw" base_Constraint="_2FphcRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-6.3.4.6.10</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FqIghSVEeGGzu7fmW9pXw" base_Constraint="_2FqIgBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-6.3.4.6.11</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2FqvkhSVEeGGzu7fmW9pXw" base_Constraint="_2FqvkBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-6.3.4.6.12</ruleId>
  </CDA:ConstraintValidation>
  <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>
  <uml:Association xmi:id="_2PQJfBSVEeGGzu7fmW9pXw"/>
  <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:AssociationValidation xmi:id="_2PQJfhSVEeGGzu7fmW9pXw" base_Association="_2PQJfBSVEeGGzu7fmW9pXw"/>
  <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"/>
  <CDA:CDATemplate xmi:id="_4MwQEBUSEeG6PvUxSTZnaw" base_Class="_sHrUoBUSEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.19">
    <ruleId>CONF:7482</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>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2SbZMRSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2SVSmRSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-2.01-CDA-5]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2KZenRSVEeGGzu7fmW9pXw" base_Class="_2KZekBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.30" assigningAuthorityName="CCD">
    <ruleId>CONF-20</ruleId>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2KdI8BSVEeGGzu7fmW9pXw" base_Constraint="_2KZekhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-26</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2KdwABSVEeGGzu7fmW9pXw" base_Constraint="_2KZelBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-27</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2KVNLhSVEeGGzu7fmW9pXw" base_Class="_2KVNIBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.13" assigningAuthorityName="CCD"/>
  <uml:Association xmi:id="_2PcWrBSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2PcWoRSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2PcWpBSVEeGGzu7fmW9pXw"/>
  <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:AssociationValidation xmi:id="_2PcWrhSVEeGGzu7fmW9pXw" base_Association="_2PcWrBSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2PcWoxSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2PcWoRSVEeGGzu7fmW9pXw"/>
  <CDA:AssociationValidation xmi:id="_2PcWphSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2PcWpBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Tw18RSVEeGGzu7fmW9pXw" base_Constraint="_2TqvZhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Tw18hSVEeGGzu7fmW9pXw" base_Constraint="_2TqvaBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvUBSVEeGGzu7fmW9pXw" base_Constraint="_2Tko2BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvURSVEeGGzu7fmW9pXw" base_Constraint="_2Tko2hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvUhSVEeGGzu7fmW9pXw" base_Constraint="_2Tko3BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvUxSVEeGGzu7fmW9pXw" base_Constraint="_2Tko3hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvVBSVEeGGzu7fmW9pXw" base_Constraint="_2Tko4RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TqvVRSVEeGGzu7fmW9pXw" base_Constraint="_2Tko5BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TkoxhSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2TkovhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2TkoxxSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2TkowBSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2Lr4BBSVEeGGzu7fmW9pXw"/>
  <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>
  </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:7397</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_-oUiEB-WEeGtfPlBCjHWkw" base_Constraint="_8FmGoB-WEeGtfPlBCjHWkw">
    <ruleId>CONF:7398</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_y16OgB-XEeGtfPlBCjHWkw" severity="INFO" base_Constraint="_MtdoIB7kEeGEaLkc3UAsAg">
    <ruleId>CONF:10088</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: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>
  </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>
  </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>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_lrrAoDV2EeGaW4kr-GbV8Q" base_Class="_iy8nYDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.21.2.2"/>
  <CDA:CDATemplate xmi:id="_aByU4DszEeGvzMYhXuqAEA" base_Class="_W8pI4DszEeGvzMYhXuqAEA" templateId="2.16.840.1.113883.10.20.22.2.8"/>
  <CDA:CDATemplate xmi:id="__hRrIEFHEeGorO80f-Cppg" base_Class="_5K6mAEFHEeGorO80f-Cppg" templateId="2.16.840.1.113883.10.20.22.4.34"/>
  <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="_2NJ3tBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-298</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NJ3vBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-303</ruleId>
  </CDA:ConstraintValidation>
  <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="_2HqToRSVEeGGzu7fmW9pXw">
    <ruleId>CONF-305</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HqTpBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-311</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Hq6shSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-314</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HrhwhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-315</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HsI0xSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-327</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Hsv4xSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-328</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HtW8BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-329</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HtW8xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-354</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2HulEBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2HulFRSVEeGGzu7fmW9pXw">
    <ruleId>6.3.4.16.22</ruleId>
  </CDA:ConstraintValidation>
  <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="_2GZvYBSVEeGGzu7fmW9pXw">
    <ruleId>2.2.2.8.3</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GZvYRSVEeGGzu7fmW9pXw">
    <ruleId>2.2.2.8.4</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GaWcBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8-CDA-3]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Ga9gBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.03-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GbkkBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.04-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GbkkRSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.05-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GcLoBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C154-[DE-8.08-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GcysBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>C154-[DE-8.08-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GcysRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.12-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GdZwBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2GeA0BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C154-[DE-8.20-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Gen4BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.20-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Gen4RSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.20-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GfO8BSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-8.20-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Gf2ABSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.22-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GgdEBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.24-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GgdERSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.24-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GhEIBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.24-CDA-3]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GhrMBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.24-CDA-4]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GhrMRSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.24-CDA-5]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2GiSQBSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.24-CDA-6]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Gi5UBSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-8.24-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_HlZ-cBncEeGs5a462vYX5Q" base_Class="_DpoGkBUUEeG6PvUxSTZnaw" templateId="2.16.840.1.113883.10.20.22.4.18">
    <ruleId>CONF:7454</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>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2UDJ3BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-357</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ3xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-358</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ4hSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-359</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ5hSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-360</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ6hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-361</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ7hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-362</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ8RSVEeGGzu7fmW9pXw">
    <ruleId>CONF-363</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ9BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-364</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UJQchSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-365</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UJQdRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-367</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2T9DWhSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.13-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2T9DWxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C83-[DE-8.13-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2T9DXBSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-8.13-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2T9DXRSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-8.13-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2T9DXhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>C154-[DE-8.13-3]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ0BSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.14-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ0RSVEeGGzu7fmW9pXw">
    <ruleId>C154-[DE-8.14-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ0hSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.15-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2UDJ0xSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-8.14-CDA-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2Poj_xSVEeGGzu7fmW9pXw" base_Class="_2Poj_BSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.3.88.11.83.115" assigningAuthorityName="HITSP C83"/>
  <CDA:CDATemplate xmi:id="_2Gnx3xSVEeGGzu7fmW9pXw" base_Class="_2Gnx1RSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.46" assigningAuthorityName="CCD"/>
  <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="_2GtRZhSVEeGGzu7fmW9pXw" base_Class="_2GtRYxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.47" assigningAuthorityName="CCD"/>
  <CDA:ConstraintValidation xmi:id="_2GzYAxSVEeGGzu7fmW9pXw" base_Constraint="_2GzYARSVEeGGzu7fmW9pXw">
    <ruleId>CONF-518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Gz_EhSVEeGGzu7fmW9pXw" base_Constraint="_2Gz_EBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-519</ruleId>
  </CDA:ConstraintValidation>
  <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: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>
  </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="_xlA8oBrcEeGo461UQq-B1g" severity="WARNING" base_Constraint="_pHR7UBrcEeGo461UQq-B1g">
    <ruleId>CONF:7367</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>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_CGugsB7pEeGEaLkc3UAsAg" severity="WARNING" base_Constraint="_vY4cQBrcEeGo461UQq-B1g">
    <ruleId>CONF:7369</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_NeIIYCUsEeG_gJw2x8CkdQ" base_Constraint="_K5K4UCUsEeG_gJw2x8CkdQ">
    <ruleId>CONF:7412</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ClassValidation xmi:id="_QWCuoDv_EeGtp7JtQeULVw" base_Class="_hLqdIDosEeGSytqLITd2FA">
    <ruleId>CONF:7905</ruleId>
  </CDA:ClassValidation>
  <CDA:ClassValidation xmi:id="_Q5wfsDv_EeGtp7JtQeULVw" base_Class="_Jv3hEDosEeGSytqLITd2FA">
    <ruleId>CONF:7903</ruleId>
  </CDA:ClassValidation>
  <CDA:CDATemplate xmi:id="_RCX1QEFGEeGorO80f-Cppg" base_Class="_LNP08EFGEeGorO80f-Cppg" templateId="2.16.840.1.113883.10.20.22.4.36"/>
  <uml:Association xmi:id="_2SC-zBSVEeGGzu7fmW9pXw"/>
  <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>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2SC-0hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-209</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFUxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-210</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFVxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-211</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFWhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2SJFXRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2SJFYBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-214</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFYxSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SJFZxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2SJFahSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SJFbRSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2SJFcRSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-219</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFdRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-220</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SJFeRSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-221</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SPL8xSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-222</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SPL9xSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-223</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SPL-xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-199</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2SPL_xSVEeGGzu7fmW9pXw"/>
  <CDA:PropertyValidation xmi:id="_2SC-vBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-192</ruleId>
  </CDA:PropertyValidation>
  <CDA:PropertyValidation xmi:id="_2SC-xBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-195</ruleId>
  </CDA:PropertyValidation>
  <CDA:AssociationValidation xmi:id="_2SC-zhSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2SC-zBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-207</ruleId>
  </CDA:AssociationValidation>
  <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="_2Iwf1hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-209</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IxG4xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-210</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Ixt8xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-211</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IyVAhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Iy8EBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Iy8ExSVEeGGzu7fmW9pXw">
    <ruleId>CONF-214</ruleId>
  </CDA:ConstraintValidation>
  <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="_2I1YVBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-219</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I1_YxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-220</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I2mcxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-221</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I3NgxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-222</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I30kxSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-223</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I4boxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-199</ruleId>
  </CDA:ConstraintValidation>
  <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="_2I634BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-205</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I634xSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2I7e8hSVEeGGzu7fmW9pXw">
    <ruleId>CONF-208</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I8GAhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-212</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I8tEhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-213</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I9UIBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2I97MxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-216</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I-iQhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-217</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I_JUhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-218</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2I_wYBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-219</ruleId>
  </CDA:ConstraintValidation>
  <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="_2JDawBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2JDawxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2JEB0hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2JEo4hSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IcWwBSVEeGGzu7fmW9pXw" severity="INFO"/>
  <CDA:ConstraintValidation xmi:id="_2IcWwRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Ic90BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Idk4BSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Idk4RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IeL8BSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IezARSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IfaEBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IgBIBSVEeGGzu7fmW9pXw" severity="WARNING"/>
  <CDA:ConstraintValidation xmi:id="_2IgoMBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IgoMRSVEeGGzu7fmW9pXw"/>
  <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:ConstraintValidation xmi:id="_2IkSkRSVEeGGzu7fmW9pXw"/>
  <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="_2JHsMxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-188</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JITQhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-184</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JI6UhSVEeGGzu7fmW9pXw">
    <ruleId>CONF-189</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2IW3MBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2IXeQBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_lq80cCHZEeGFLIX-2_sWzA" base_Constraint="_kQyjkCHZEeGFLIX-2_sWzA">
    <ruleId>CONF:8610</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VPVEoCHbEeGFLIX-2_sWzA" base_Constraint="_OzXt0CHbEeGFLIX-2_sWzA">
    <ruleId>CONF:8611</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_01YsYCHbEeGFLIX-2_sWzA" severity="WARNING" base_Constraint="_vjf8ACHbEeGFLIX-2_sWzA">
    <ruleId>CONF:8612</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_7saOkCHbEeGFLIX-2_sWzA" severity="WARNING" base_Constraint="_4MXPQCHbEeGFLIX-2_sWzA">
    <ruleId>CONF:8613</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_J7h_sCHcEeGFLIX-2_sWzA" base_Constraint="_Fra1YCHcEeGFLIX-2_sWzA">
    <ruleId>CONF:8614</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_sx6vwCHcEeGFLIX-2_sWzA" severity="WARNING" base_Constraint="_pt_EsCHcEeGFLIX-2_sWzA">
    <ruleId>CONF:8615</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_KIpZMCHdEeGFLIX-2_sWzA" severity="INFO" base_Constraint="_Fi9AcCHdEeGFLIX-2_sWzA">
    <ruleId>CONF:8616</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_YG6Y8CHfEeGFLIX-2_sWzA" severity="INFO" base_Constraint="_WX7uoCHfEeGFLIX-2_sWzA">
    <ruleId>CONF:8617</ruleId>
  </CDA:ConstraintValidation>
  <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>
  </CDA:CDATemplate>
  <CDA:ConstraintValidation xmi:id="_2JoCgxSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-236</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JopkhSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-250</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JpQohSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-251</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2Jp3shSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-252</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JqewhSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-253</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JrF0BSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-254</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JrF0xSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-255</ruleId>
  </CDA:ConstraintValidation>
  <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="_2JffohSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-243</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JgGsBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-244</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JgGtBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-245</ruleId>
  </CDA:ConstraintValidation>
  <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="_2JVHlRSVEeGGzu7fmW9pXw" base_Class="_2JVHkhSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.56" assigningAuthorityName="HL7"/>
  <CDA:ConstraintValidation xmi:id="_2JccUxSVEeGGzu7fmW9pXw" base_Constraint="_2JccURSVEeGGzu7fmW9pXw">
    <ruleId>CONF-518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2JdDYhSVEeGGzu7fmW9pXw" base_Constraint="_2JdDYBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-519</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_aXMCcBncEeGs5a462vYX5Q" base_Class="_2N6soBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.15.3.8"/>
  <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"/>
  <CDA:ConstraintValidation xmi:id="_p6vxUDyWEeGOm9opnDhYAQ" base_Constraint="_O-ANcBttEeGT89b80j3MTg">
    <ruleId>CONF:8895</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:ConstraintValidation xmi:id="_2J2sARSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>C154-[DE-15.03-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J3TEBSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>C154-[DE-15.03-2]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2J36IBSVEeGGzu7fmW9pXw">
    <ruleId>C83-[DE-15.05-CDA-1]</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2OAzbhSVEeGGzu7fmW9pXw" base_Class="_2OAzVhSVEeGGzu7fmW9pXw" templateId="1.3.6.1.4.1.19376.1.5.3.1.4.4"/>
  <CDA:ConstraintValidation xmi:id="_2OG54hSVEeGGzu7fmW9pXw" base_Constraint="_2OAzVxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2OG54xSVEeGGzu7fmW9pXw" base_Constraint="_2OAzWRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2OG55BSVEeGGzu7fmW9pXw" base_Constraint="_2OAzXBSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2OG55RSVEeGGzu7fmW9pXw" base_Constraint="_2OAzXhSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2OG55hSVEeGGzu7fmW9pXw" base_Constraint="_2OAzYRSVEeGGzu7fmW9pXw"/>
  <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">
    <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-7138</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-7139</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="_2LC-0BSVEeGGzu7fmW9pXw" severity="INFO">
    <ruleId>CONF-90</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LC-0xSVEeGGzu7fmW9pXw" severity="WARNING">
    <ruleId>CONF-91</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2LDl4xSVEeGGzu7fmW9pXw">
    <ruleId>CONF-97</ruleId>
  </CDA:ConstraintValidation>
  <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="_2K0VVhSVEeGGzu7fmW9pXw" base_Class="_2K0VUxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.37" assigningAuthorityName="CCD"/>
  <CDA:ConstraintValidation xmi:id="_2K6b8xSVEeGGzu7fmW9pXw" base_Constraint="_2K6b8RSVEeGGzu7fmW9pXw">
    <ruleId>CONF-518</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2K7DAhSVEeGGzu7fmW9pXw" base_Constraint="_2K7DABSVEeGGzu7fmW9pXw">
    <ruleId>CONF-519</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_2KxSBxSVEeGGzu7fmW9pXw" base_Class="_2KxSABSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.58" assigningAuthorityName="CCD">
    <ruleId>CONF-92</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:ConstraintValidation xmi:id="_2Lx-oBSVEeGGzu7fmW9pXw" base_Constraint="_2Lu7UhSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_2LayXhSVEeGGzu7fmW9pXw" base_Class="_2LayQBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.49" assigningAuthorityName="HL7">
    <ruleId>CONF:10494</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:8720</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_nZocACwaEeGKLc4ckmfDag" base_Constraint="_ktatYCwaEeGKLc4ckmfDag">
    <ruleId>CONF:8721</ruleId>
  </CDA:ConstraintValidation>
  <uml:Association xmi:id="_i7iGohU9EeGbmN_W114JUw"/>
  <CDA:CDATemplate xmi:id="_zh-FUBnbEeGs5a462vYX5Q" base_Class="_2MAoIBSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.52"/>
  <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>
  </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>
  </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:EntryRelationship xmi:id="_LhcR8BqnEeGo461UQq-B1g" severity="INFO" base_Association="_i7iGohU9EeGbmN_W114JUw" typeCode="REFR"/>
  <uml:Association xmi:id="_NdMEkRq1EeGo461UQq-B1g"/>
  <uml:Association xmi:id="_eLHCUhrUEeGo461UQq-B1g" memberEnd="_eLHCUxrUEeGo461UQq-B1g">
    <ownedEnd xmi:id="_eLHCUxrUEeGo461UQq-B1g" type="_2MAoIBSVEeGGzu7fmW9pXw" association="_eLHCUhrUEeGo461UQq-B1g"/>
  </uml:Association>
  <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:CDATemplate xmi:id="_2MV_VhSVEeGGzu7fmW9pXw" message="The Payers section contains data on the patient’s payers, whether a ‘third party’ insurance, self-pay, other payer or guarantor, or some combination of payers, and is used to define which entity is the responsible fiduciary for the financial aspects of a patient’s care." 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:ConstraintValidation xmi:id="_2M8cQhSVEeGGzu7fmW9pXw" base_Constraint="_2M8cQBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-56</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2M9DUhSVEeGGzu7fmW9pXw" base_Constraint="_2M9DUBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-58</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2M9qYhSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2M9qYBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-62</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2M-RchSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2M-RcBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-63</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2M-4ghSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2M-4gBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-65</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2M_fkhSVEeGGzu7fmW9pXw" base_Constraint="_2M_fkBSVEeGGzu7fmW9pXw">
    <ruleId>CONF-66</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"/>
  <CDA:ConstraintValidation xmi:id="_2NBUxRSVEeGGzu7fmW9pXw" base_Constraint="_2NBUwxSVEeGGzu7fmW9pXw">
    <ruleId>CONF-47</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2NB70hSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2NB70BSVEeGGzu7fmW9pXw">
    <ruleId>CONF-44</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_2MfJQBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma31RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MfJQRSVEeGGzu7fmW9pXw" base_Constraint="_2Ma31xSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MfwUBSVEeGGzu7fmW9pXw" base_Constraint="_2Ma32RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MgXYBSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2Ma32xSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MgXYRSVEeGGzu7fmW9pXw" severity="INFO" base_Constraint="_2Ma33RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MiMkRSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma35RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MizoBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma35xSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MjasBSVEeGGzu7fmW9pXw" base_Constraint="_2Ma36RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MjasRSVEeGGzu7fmW9pXw" base_Constraint="_2Ma36xSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MkBwBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma37RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MlP4RSVEeGGzu7fmW9pXw" base_Constraint="_2Ma38xSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Ml28BSVEeGGzu7fmW9pXw" base_Constraint="_2Ma39RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MnsIBSVEeGGzu7fmW9pXw" base_Constraint="_2Ma3_RSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MoTMBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma4ARSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Mo6QRSVEeGGzu7fmW9pXw" base_Constraint="_2Ma4BRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MphUBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma4BxSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MqIYBSVEeGGzu7fmW9pXw" base_Constraint="_2Ma4CRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2Mr9kRSVEeGGzu7fmW9pXw" base_Constraint="_2Ma4ExSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MskoBSVEeGGzu7fmW9pXw" base_Constraint="_2Ma4FRSVEeGGzu7fmW9pXw"/>
  <CDA:ConstraintValidation xmi:id="_2MtywBSVEeGGzu7fmW9pXw" severity="WARNING" base_Constraint="_2Ma4GxSVEeGGzu7fmW9pXw"/>
  <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" contextDependent="true">
    <ruleId>CONF:8544.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" contextDependent="true">
    <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.1.25" assigningAuthorityName="" contextDependent="true">
    <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="" contextDependent="true">
    <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>
  <uml:Association xmi:id="_2NoY2xSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_2NoYzxSVEeGGzu7fmW9pXw" base_Class="_2NoYwxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.1.25" contextDependent="true">
    <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" contextDependent="true">
    <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>
  <uml:Association xmi:id="_2OTHRBSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2OZNwhSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2OZNxxSVEeGGzu7fmW9pXw"/>
  <uml:Association xmi:id="_2ONAjBSVEeGGzu7fmW9pXw"/>
  <CDA:CDATemplate xmi:id="_2ONAgBSVEeGGzu7fmW9pXw" base_Class="_2OG58RSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.14" assigningAuthorityName="IHE PCC" contextDependent="true">
    <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" base_Association="_2OTHRBSVEeGGzu7fmW9pXw" typeCode="RSON"/>
  <CDA:EntryRelationship xmi:id="_2OZNxBSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2OZNwhSVEeGGzu7fmW9pXw" typeCode="RSON"/>
  <CDA:EntryRelationship xmi:id="_2OZNyRSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2OZNxxSVEeGGzu7fmW9pXw" typeCode="SUBJ"/>
  <CDA:EntryRelationship xmi:id="_2ONAjhSVEeGGzu7fmW9pXw" severity="INFO" base_Association="_2ONAjBSVEeGGzu7fmW9pXw" typeCode="COMP"/>
  <CDA:ConstraintValidation xmi:id="_-LZhQBrPEeGxIZCGAXKxsQ" severity="WARNING" base_Constraint="_qGzKgBrPEeGxIZCGAXKxsQ">
    <ruleId>CONF:7657</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:7659</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_Xu5UMBrREeGxIZCGAXKxsQ" base_Constraint="_SSUWwBrREeGxIZCGAXKxsQ">
    <ruleId>CONF:7660</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:8294</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_vD-w4BxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_oGW3cBxpEeGXP8PxDYviDg">
    <ruleId>CONF:8295</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_xlcBABxpEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_rX9yIBxpEeGXP8PxDYviDg">
    <ruleId>CONF:8296</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_1T3akBxpEeGXP8PxDYviDg" base_Constraint="_0i4pkBxpEeGXP8PxDYviDg">
    <ruleId>CONF:8297</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:8241</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:8243</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_mGqB0BxvEeGXP8PxDYviDg" base_Constraint="_jzsgsBxvEeGXP8PxDYviDg">
    <ruleId>CONF:8244</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:ConstraintValidation xmi:id="_kQwKwBxcEeGXP8PxDYviDg" base_Constraint="_fu9akBxcEeGXP8PxDYviDg">
    <ruleId>CONF:7720</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_raw6YBxcEeGXP8PxDYviDg" base_Constraint="_ofCJEBxcEeGXP8PxDYviDg">
    <ruleId>CONF:7722</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_MRlXsBxjEeGXP8PxDYviDg" base_Constraint="_IMfKkBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7731</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_PIIuEBxjEeGXP8PxDYviDg" base_Constraint="_NG_8wBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7732</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_VfB-sBxjEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_Ss84oBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7733</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_7UPQUBxjEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_X3E0IBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7734</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_8d4Y8BxjEeGXP8PxDYviDg" severity="INFO" base_Constraint="_bkN0QBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7735</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_9F5bMBxjEeGXP8PxDYviDg" base_Constraint="_cs-MEBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7736</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_9ha5kBxjEeGXP8PxDYviDg" base_Constraint="_eFMjQBxjEeGXP8PxDYviDg">
    <ruleId>CONF:7737</ruleId>
  </CDA:ConstraintValidation>
  <CDA:CDATemplate xmi:id="_6lQbgBxEEeGIELeDlfT77A" base_Class="_JIc0oBxEEeGIELeDlfT77A"/>
  <CDA:ConstraintValidation xmi:id="_uFpBsBxbEeGXP8PxDYviDg" base_Constraint="_qp5TkBxbEeGXP8PxDYviDg">
    <ruleId>CONF:7704</ruleId>
  </CDA:ConstraintValidation>
  <CDA:ConstraintValidation xmi:id="_zgzC0BxbEeGXP8PxDYviDg" severity="WARNING" base_Constraint="_wOrx0BxbEeGXP8PxDYviDg">
    <ruleId>CONF:7716</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>
  </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"/>
  <CDA:CDATemplate xmi:id="_DIe5YDV2EeGaW4kr-GbV8Q" base_Class="_vHfXoDVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.7.12">
    <ruleId>CONF:8030</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>
  </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>
  </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>
  </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>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_Rt5DkDV2EeGaW4kr-GbV8Q" base_Class="_Cu6qMDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.34"/>
  <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>
  </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>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_ZcBM4DV2EeGaW4kr-GbV8Q" base_Class="_TvcL8DVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.18.2.9"/>
  <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>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_f1f3cDV2EeGaW4kr-GbV8Q" base_Class="_cjmJMDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.29"/>
  <CDA:CDATemplate xmi:id="_ifYDwDV2EeGaW4kr-GbV8Q" base_Class="_gSUdsDVzEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.22.2.31"/>
  <CDA:ConstraintValidation xmi:id="_PPoZMEEuEeGdmoWy_aLP0Q" base_Constraint="_MAXA0EEuEeGdmoWy_aLP0Q">
    <ruleId>CONF:8054</ruleId>
  </CDA:ConstraintValidation>
  <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"/>
  <CDA:CDATemplate xmi:id="_ckEjYEExEeGdmoWy_aLP0Q" base_Class="_0fjXAEEvEeGdmoWy_aLP0Q" templateId="2.16.840.1.113883.10.20.22.4.51"/>
  <CDA:CDATemplate xmi:id="_2OfUeBSVEeGGzu7fmW9pXw" base_Class="_2OfUcxSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.2.4.1">
    <ruleId>CONF:7273</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>
  </CDA:CDATemplate>
  <CDA:CDATemplate xmi:id="_shioIBneEeGs5a462vYX5Q" base_Class="_2OrhsRSVEeGGzu7fmW9pXw" templateId="2.16.840.1.113883.10.20.22.4.27">
    <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: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: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="_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"/>
  <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"/>
  <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"/>
  <CDA:CDATemplate xmi:id="_psFXgDV1EeGaW4kr-GbV8Q" base_Class="_ZcC-4DVyEeGaW4kr-GbV8Q" templateId="2.16.840.1.113883.10.20.6.1.2"/>
  <Ecore:EPackage xmi:id="_4qNGwEIlEeG5UvLPSY8o7A" base_Package="_2B30sBSVEeGGzu7fmW9pXw" packageName="consol" nsPrefix="consol" nsURI="http://www.openhealthtools.org/mdht/uml/cda/consol" basePackage="org.openhealthtools.mdht.uml.cda" prefix="Consol"/>
  <Ecore:EClass xmi:id="_4qNGw0IlEeG5UvLPSY8o7A" base_Class="_2DNRcBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.1.1' constraints.validation.error='GeneralHeaderConstraintsTemplateId GeneralHeaderConstraintsRealmCode GeneralHeaderConstraintsTypeId GeneralHeaderConstraintsId GeneralHeaderConstraintsCode GeneralHeaderConstraintsTitle GeneralHeaderConstraintsEffectiveTime GeneralHeaderConstraintsConfidentialityCode GeneralHeaderConstraintsLanguageCode GeneralHeaderConstraintsAuthor GeneralHeaderConstraintsCustodian GeneralHeaderConstraintsRecordTarget GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceManufacturerModelName GeneralHeaderConstraintsAuthorAssignedAuthorAuthoringDeviceSoftwareName GeneralHeaderConstraintsAuthorAssignedAuthorHasAssignedPersonOrAssignedAuthoringDevice GeneralHeaderConstraintsAuthorAssignedAuthorHasNationalProviderIdentifier GeneralHeaderConstraintsAuthorAssignedAuthorAddr GeneralHeaderConstraintsAuthorAssignedAuthorCode GeneralHeaderConstraintsAuthorAssignedAuthorId GeneralHeaderConstraintsAuthorAssignedAuthorTelecom GeneralHeaderConstraintsAuthorAssignedAuthor GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationAddr GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationId GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationName GeneralHeaderConstraintsCustodianAssignedCustodianCustodianOrganizationTelecom GeneralHeaderConstraintsCustodianAssignedCustodianRepresentedCustodianOrganization GeneralHeaderConstraintsCustodianAssignedCustodian GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationHasNationalProviderIdentifier GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationAddr GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationId GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationName GeneralHeaderConstraintsRecordTargetPatientRoleProviderOrganizationTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationLanguageCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationPreferenceInd GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationProficiencyLevelCode GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunicationModeCode GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlaceAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplacePlace GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianAddr GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardianGuardianPerson GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTimePreciseToYear GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTimePreciseToDay GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthTime GeneralHeaderConstraintsRecordTargetPatientRolePatientEthnicGroupCode GeneralHeaderConstraintsRecordTargetPatientRolePatientMaritalStatusCode GeneralHeaderConstraintsRecordTargetPatientRolePatientName GeneralHeaderConstraintsRecordTargetPatientRolePatientRaceCode GeneralHeaderConstraintsRecordTargetPatientRolePatientReligiousAffiliationCode GeneralHeaderConstraintsRecordTargetPatientRolePatientGuardian GeneralHeaderConstraintsRecordTargetPatientRolePatientBirthplace GeneralHeaderConstraintsRecordTargetPatientRolePatientLanguageCommunication GeneralHeaderConstraintsRecordTargetPatientRoleAddr GeneralHeaderConstraintsRecordTargetPatientRoleId GeneralHeaderConstraintsRecordTargetPatientRoleTelecom GeneralHeaderConstraintsRecordTargetPatientRolePatient GeneralHeaderConstraintsRecordTargetPatientRole' constraints.validation.warning='GeneralHeaderConstraintsLegalAuthenticator GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityCode GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityId GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsLegalAuthenticatorAssignedEntityAssignedPerson GeneralHeaderConstraintsLegalAuthenticatorTime GeneralHeaderConstraintsLegalAuthenticatorSignatureCode' confidentialityCode.codeSystemName='ConfidentialityCode' realmCode.code='US' confidentialityCode.codeSystem='2.16.840.1.113883.5.25' constraints.validation.info='GeneralHeaderConstraintsSetId GeneralHeaderConstraintsVersionNumber GeneralHeaderConstraintsDataEnterer GeneralHeaderConstraintsInformationRecipient GeneralHeaderConstraintsAuthenticator GeneralHeaderConstraintsComponentOf GeneralHeaderConstraintsInformant GeneralHeaderConstraintsSupportParticipant GeneralHeaderConstraintsInFulfillmentOf GeneralHeaderConstraintsDataEntererAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsDataEntererAssignedEntityAddr GeneralHeaderConstraintsDataEntererAssignedEntityCode GeneralHeaderConstraintsDataEntererAssignedEntityId GeneralHeaderConstraintsDataEntererAssignedEntityTelecom GeneralHeaderConstraintsDataEntererAssignedEntityAssignedPerson GeneralHeaderConstraintsInformationRecipientIntendedRecipientOrganizationName GeneralHeaderConstraintsInformationRecipientIntendedRecipientInformationRecipient GeneralHeaderConstraintsInformationRecipientIntendedRecipientRecievedOrganization GeneralHeaderConstraintsInformationRecipientIntendedRecipient GeneralHeaderConstraintsAuthenticatorAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsAuthenticatorAssignedEntityAddr GeneralHeaderConstraintsAuthenticatorAssignedEntityCode GeneralHeaderConstraintsAuthenticatorAssignedEntityId GeneralHeaderConstraintsAuthenticatorAssignedEntityTelecom GeneralHeaderConstraintsAuthenticatorTime GeneralHeaderConstraintsAuthenticatorSignatureCode GeneralHeaderConstraintsAuthenticatorAssignedEntity GeneralHeaderConstraintsComponentOfEncompassingEncounterEffectiveTime GeneralHeaderConstraintsComponentOfEncompassingEncounterId GeneralHeaderConstraintsComponentOfEncompassingEncounter GeneralHeaderConstraintsInformantRelatedEntityAddr GeneralHeaderConstraintsInformantRelatedEntityPerson GeneralHeaderConstraintsInformantAssignedEntityHasNationalProviderIdentifier GeneralHeaderConstraintsInformantAssignedEntityAddr GeneralHeaderConstraintsInformantAssignedEntityCode GeneralHeaderConstraintsInformantAssignedEntityId GeneralHeaderConstraintsInformantAssignedEntityPerson GeneralHeaderConstraintsInformantHasAssignedEntityOrRelatedEntity GeneralHeaderConstraintsParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization GeneralHeaderConstraintsParticipantSupportTime GeneralHeaderConstraintsInFulfillmentOfOrderId GeneralHeaderConstraintsInFulfillmentOfOrder'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4qpyskIlEeG5UvLPSY8o7A" base_Class="_qjbOUCylEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PatientRoleAddr PatientRoleId PatientRoleTelecom PatientRolePatient'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4qpyt0IlEeG5UvLPSY8o7A" base_Class="_wfQTkCylEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation raceCode.codeSystem='2.16.840.1.113883.6.238' raceCode.codeSystemName='Race and Ethnicity - CDC' religiousAffiliationCode.codeSystem='2.16.840.1.113883.5.1076' maritalStatusCode.codeSystemName='MaritalStatus' constraints.validation.error='PatientBirthTimePreciseToYear PatientBirthTime PatientMaritalStatusCode PatientName PatientRaceCode PatientReligiousAffiliationCode' constraints.validation.warning='PatientBirthTimePreciseToDay PatientLanguageCommunication' maritalStatusCode.codeSystem='2.16.840.1.113883.5.2' religiousAffiliationCode.codeSystemName='ReligiousAffiliation' constraints.validation.info='PatientEthnicGroupCode PatientGuardian PatientBirthplace'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4q8tpEIlEeG5UvLPSY8o7A" base_Class="_-vjwcCylEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.5.111' constraints.validation.error='GuardianGuardianPerson' code.codeSystemName='RoleCode' constraints.validation.warning='GuardianAddr GuardianCode' constraints.validation.info='GuardianTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rGeokIlEeG5UvLPSY8o7A" base_Class="_hrAmsCymEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation proficiencyLevelCode.codeSystem='2.16.840.1.113883.6.1' constraints.validation.error='LanguageCommunicationLanguageCode LanguageCommunicationProficiencyLevelCode LanguageCommunicationModeCode' modeCode.codeSystem='2.16.840.1.113883.5.60' proficiencyLevelCode.codeSystemName='LOINC' constraints.validation.info='LanguageCommunicationPreferenceInd' modeCode.codeSystemName='LanguageAbilityMode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rQPokIlEeG5UvLPSY8o7A" base_Class="_TGgbcCymEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PlaceAddr'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rQPo0IlEeG5UvLPSY8o7A" base_Class="_6j680CytEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProviderOrganizationAddr ProviderOrganizationId ProviderOrganizationName ProviderOrganizationTelecom' constraints.validation.warning='ProviderOrganizationHasNationalProviderIdentifier'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rQPrkIlEeG5UvLPSY8o7A" base_Class="_TCORACypEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounterEffectiveTime EncompassingEncounterId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rZZkEIlEeG5UvLPSY8o7A" base_Class="_344-ICymEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssignedAuthorHasAssignedPersonOrAssignedAuthoringDevice AssignedAuthorHasNationalProviderIdentifier AssignedAuthorAddr AssignedAuthorId AssignedAuthorTelecom' constraints.validation.warning='AssignedAuthorCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rZZm0IlEeG5UvLPSY8o7A" base_Class="_1_b_0Cy_EeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthoringDeviceManufacturerModelName AuthoringDeviceSoftwareName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rjKkEIlEeG5UvLPSY8o7A" base_Class="_HOG0oCynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.101' constraints.validation.error='AssignedEntityHasNationalProviderIdentifier AssignedEntityAddr AssignedEntityCode AssignedEntityId AssignedEntityTelecom AssignedEntityAssignedPerson' code.codeSystemName='NUCCHealthCareProviderTaxonomy'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rjKmUIlEeG5UvLPSY8o7A" base_Class="_yEoEACynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianOrganizationHasNationalProviderIdentifier CustodianOrganizationAddr CustodianOrganizationId CustodianOrganizationName CustodianOrganizationTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rsUiEIlEeG5UvLPSY8o7A" base_Class="_subVMCzEEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OrganizationName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4rsUi0IlEeG5UvLPSY8o7A" base_Class="_TpC14CyoEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='LegalAuthenticatorTime LegalAuthenticatorSignatureCode' signatureCode.code='s'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4r2FgEIlEeG5UvLPSY8o7A" base_Class="_nlqjwDVYEeGIw7CntkyPQw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.101' constraints.validation.error='AssignedEntityHasNationalProviderIdentifier AssignedEntityAddr AssignedEntityId AssignedEntityTelecom AssignedEntityAssignedPerson' code.codeSystemName='NUCCHealthCareProviderTaxonomy' constraints.validation.warning='AssignedEntityCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4r2Fi0IlEeG5UvLPSY8o7A" base_Class="_cqzKQCyoEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthenticatorTime AuthenticatorSignatureCode AuthenticatorAssignedEntity' signatureCode.code='s'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4r_2gEIlEeG5UvLPSY8o7A" base_Class="_GEiMYCzGEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssignedEntityHasNationalProviderIdentifier AssignedEntityAddr AssignedEntityId AssignedEntityTelecom' constraints.validation.info='AssignedEntityCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4r_2iUIlEeG5UvLPSY8o7A" base_Class="_RS-y4CynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InformantHasAssignedEntityOrRelatedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4r_2ikIlEeG5UvLPSY8o7A" base_Class="_NmVGsCzCEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.101' constraints.validation.error='AssignedEntityHasNationalProviderIdentifier AssignedEntityCode AssignedEntityPerson' code.codeSystemName='NUCCHealthCareProviderTaxonomy' constraints.validation.warning='AssignedEntityAddr AssignedEntityId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4sJAdkIlEeG5UvLPSY8o7A" base_Class="_ou68wDVWEeGIw7CntkyPQw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='RelatedEntityPerson' constraints.validation.warning='RelatedEntityAddr'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4sJAd0IlEeG5UvLPSY8o7A" base_Class="_Zi4mACzHEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ParticipantSupportAssociatedEntityHasAssociatedPersonOrScopingOrganization' constraints.validation.info='ParticipantSupportTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4sJAfEIlEeG5UvLPSY8o7A" base_Class="_24atsCyoEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='OrderId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4scidEIlEeG5UvLPSY8o7A" base_Class="_2EAisBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Allergies, adverse reactions, alerts' templateId.root='2.16.840.1.113883.10.20.22.4.30' constraints.validation.error='AllergyProblemActTemplateId AllergyProblemActEffectiveTimeLow AllergyProblemActEffectiveTimeHigh AllergyProblemActClassCode AllergyProblemActMoodCode AllergyProblemActId AllergyProblemActCode AllergyProblemActStatusCode AllergyProblemActEffectiveTime AllergyProblemActAllergyObservation' code.codeSystemName='LOINC' classCode='ACT' code.code='48765-2' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4slsaEIlEeG5UvLPSY8o7A" base_Class="_2EaLUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.5.4' templateId.root='2.16.840.1.113883.10.20.22.4.7' constraints.validation.error='AllergyObservationTemplateId AllergyObservationAllergyStatusInversionIndicator AllergyObservationReactionInversionIndicator AllergyObservationSeverityInversionIndicator AllergyObservationClassCode AllergyObservationMoodCode AllergyObservationId AllergyObservationCode AllergyObservationStatusCode AllergyObservationEffectiveTime AllergyObservationValue AllergyObservationSeverity' code.codeSystemName='HL7ActCode' classCode='OBS' constraints.validation.warning='AllergyObservationProblemEntryReactionObservationContainer AllergyObservationParticipant' code.code='ASSERTION' moodCode='EVN' constraints.validation.info='AllergyObservationAllergyStatusObservation' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4tCYYkIlEeG5UvLPSY8o7A" base_Class="_2EqqABSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' code.displayName='Age At Onset' templateId.root='2.16.840.1.113883.10.20.22.4.31' constraints.validation.error='AgeObservationTemplateId AgeObservationClassCode AgeObservationMoodCode AgeObservationCode AgeObservationStatusCode AgeObservationValue' code.codeSystemName='SNOMEDCT' classCode='OBS' code.code='445518008' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4tVTQkIlEeG5UvLPSY8o7A" base_Class="_2ExXsBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Health status' templateId.root='2.16.840.1.113883.10.20.22.4.5' constraints.validation.error='HealthStatusObservationTemplateId HealthStatusObservationHasTextReference HealthStatusObservationHasTextReferenceValue HealthStatusObservationClassCode HealthStatusObservationMoodCode HealthStatusObservationCode HealthStatusObservationStatusCode HealthStatusObservationValue' code.codeSystemName='LOINC' constraints.validation.warning='HealthStatusObservationText' classCode='OBS' code.code='11323-3' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4tfESEIlEeG5UvLPSY8o7A" base_Class="_2E_aIRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation value.codeSystemName='SNOMEDCT' statusCode.code='completed' templateId.root='2.16.840.1.113883.10.20.22.4.9' constraints.validation.error='ReactionObservationTemplateId ReactionObservationReferenceValue ReactionObservationSeverityObservationInversionInd ReactionObservationProcedureActivityProcedureInversionInd ReactionObservationMedicationActivityInversionInd ReactionObservationClassCode ReactionObservationMoodCode ReactionObservationId ReactionObservationCode ReactionObservationStatusCode ReactionObservationValue' classCode='OBS' constraints.validation.warning='ReactionObservationTextReference ReactionObservationEffectiveTimeLow ReactionObservationEffectiveTimeHigh ReactionObservationText ReactionObservationEffectiveTime ReactionObservationSeverityObservation' moodCode='EVN' constraints.validation.info='ReactionObservationProcedureActivityProcedure ReactionObservationMedicationActivity' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4t7wNkIlEeG5UvLPSY8o7A" base_Class="_2FGu4hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.5.4' code.displayName='Severity observation' templateId.root='2.16.840.1.113883.10.20.22.4.8' constraints.validation.error='SeverityObservationTemplateId SeverityObservationReferenceValue SeverityObservationClassCode SeverityObservationMoodCode SeverityObservationCode SeverityObservationStatusCode SeverityObservationValue' code.codeSystemName='HL7ActCode' classCode='OBS' constraints.validation.warning='SeverityObservationTextReference SeverityObservationText' code.code='SEV' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4uOrK0IlEeG5UvLPSY8o7A" base_Class="_2FRuAhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.28' code.displayName='Status' constraints.validation.error='AllergyStatusObservationTemplateId AllergyStatusObservationClassCode AllergyStatusObservationMoodCode AllergyStatusObservationCode AllergyStatusObservationStatusCode AllergyStatusObservationValue' code.codeSystemName='LOINC' classCode='OBS' code.code='33999-4' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4uhmFEIlEeG5UvLPSY8o7A" base_Class="_2FhloBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.64' code.displayName='Annotation comment' constraints.validation.error='CommentTemplateId CommentHasTextReference CommentEffectiveTimeWhenAuthorPresent CommentHasAuthorId CommentHasAuthorOrganization CommentClassCode CommentMoodCode CommentCode CommentText CommentStatusCode CommentAuthor' code.codeSystemName='LOINC' classCode='ACT' code.code='48767-8' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4u1IHUIlEeG5UvLPSY8o7A" base_Class="_2GHbgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.16' constraints.validation.error='MedicationActivityTemplateId MedicationActivityClassCode MedicationActivityId MedicationActivityStatusCode MedicationActivityConsumable' constraints.validation.warning='MedicationActivityDoseQuantity MedicationActivityText' classCode='SBADM' moodCode.codeSystem='2.16.840.1.113883.5.1001' constraints.validation.info='MedicationActivityCode MedicationActivityEffectiveTime MedicationActivityRouteCode MedicationActivityApproachSiteCode MedicationActivityRateQuantity MedicationActivityMaxDoseQuantity MedicationActivityAdministrationUnitCode MedicationActivityRepeatNumber MedicationActivityMedicationSupplyOrder MedicationActivityReactionObservation MedicationActivityPerformer MedicationActivityInstructions MedicationActivityIndication MedicationActivityMedicationDispense MedicationActivityPrecondition MedicationActivityDrugVehicle' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4va-AEIlEeG5UvLPSY8o7A" base_Class="_2Gnx1RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.1.46' code.displayName='Dose number' constraints.validation.error='MedicationSeriesNumberObservationTemplateId MedicationSeriesNumberObservationClassCode MedicationSeriesNumberObservationMoodCode MedicationSeriesNumberObservationCode MedicationSeriesNumberObservationStatusCode MedicationSeriesNumberObservationValue' code.codeSystemName='LOINC' classCode='OBS' code.code='30973-2' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4vku-EIlEeG5UvLPSY8o7A" base_Class="_2GtRYxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.1.47' code.displayName='Status' constraints.validation.error='MedicationStatusObservationTemplateId MedicationStatusObservationNoAdditionalParticipants MedicationStatusObservationNoAdditionalRelationships MedicationStatusObservationClassCode MedicationStatusObservationMoodCode MedicationStatusObservationCode MedicationStatusObservationStatusCode' code.codeSystemName='LOINC' classCode='OBS' code.code='33999-4' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4v3p5kIlEeG5UvLPSY8o7A" base_Class="_2G2bUxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.37' constraints.validation.error='ProductInstanceTemplateId ProductInstanceClassCode ProductInstanceId ProductInstanceScopingEntity ProductInstancePlayingDevice ProductInstanceScopingEntityId ProductInstancePlayingDeviceCode' classCode='MANU'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wBa4kIlEeG5UvLPSY8o7A" base_Class="_hLqdIDosEeGSytqLITd2FA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ScopingEntityId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wBa5UIlEeG5UvLPSY8o7A" base_Class="_Jv3hEDosEeGSytqLITd2FA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='PlayingDeviceCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wBa6EIlEeG5UvLPSY8o7A" base_Class="_2G5eoxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InternalReferenceId InternalReferenceCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wBa7UIlEeG5UvLPSY8o7A" base_Class="_2G8h9RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' templateId.root='2.16.840.1.113883.10.20.22.4.20' constraints.validation.error='InstructionsTemplateId InstructionsTextReferenceValue InstructionsClassCode InstructionsMoodCode InstructionsStatusCode' classCode='ACT' constraints.validation.warning='InstructionsTextReference InstructionsText' moodCode='INT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wUV2UIlEeG5UvLPSY8o7A" base_Class="_2HCokhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.96' constraints.validation.error='MedicationTypeCode' code.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wdfwEIlEeG5UvLPSY8o7A" base_Class="_2HIvMBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.50' constraints.validation.error='NonMedicinalSupplyActivityTemplateId NonMedicinalSupplyActivityClassCode NonMedicinalSupplyActivityId NonMedicinalSupplyActivityStatusCode NonMedicinalSupplyActivityProductInstance' constraints.validation.warning='NonMedicinalSupplyActivityEffectiveTime NonMedicinalSupplyActivityQuantity' classCode='SPLY' moodCode.codeSystem='2.16.840.1.113883.5.1001' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wnQyUIlEeG5UvLPSY8o7A" base_Class="_2HWKkBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='1.3.6.1.4.1.19376.1.5.3.2' constraints.validation.error='MedicationFullfillmentInstructionsMoodCode MedicationFullfillmentInstructionsCode MedicationFullfillmentInstructionsText MedicationFullfillmentInstructionsStatusCode' code.codeSystemName='IHEActCode' code.code='FINSTRUCT' moodCode='INT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4wxBxkIlEeG5UvLPSY8o7A" base_Class="_2H6yUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.5.6' templateId.root='2.16.840.1.113883.10.20.22.4.3' code.displayName='Concern' constraints.validation.error='ProblemConcernActTemplateId ProblemConcernActEffectiveTimeLow ProblemConcernActClassCode ProblemConcernActMoodCode ProblemConcernActId ProblemConcernActCode ProblemConcernActEffectiveTime ProblemConcernActProblemObservation' code.codeSystemName='HL7ActClass' classCode='ACT' constraints.validation.warning='ProblemConcernActEffectiveTimeHigh' code.code='CONC' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_4w6LtkIlEeG5UvLPSY8o7A" base_Generalization="_2PQJchSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_4xD8sEIlEeG5UvLPSY8o7A" base_Class="_2IJb0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.2' code.displayName='Summarization of Episode Note' constraints.validation.error='ContinuityOfCareDocumentTemplateId GeneralHeaderConstraintsCode ContinuityOfCareDocumentLanguageCode ContinuityOfCareDocumentDocumentationOf ContinuityOfCareDocumentAuthor ContinuityOfCareDocumentAllergiesSection ContinuityOfCareDocumentMedicationsSection ContinuityOfCareDocumentProblemSection ContinuityOfCareDocumentResultsSection ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityHasNationalProviderIdentifier ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityCode ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntityId ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerTypeCode ContinuityOfCareDocumentDocumentationOfServiceEvent3PerformerAssignedEntity ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTimeLow ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTimeHigh ContinuityOfCareDocumentDocumentationOfServiceEvent3ClassCode ContinuityOfCareDocumentDocumentationOfServiceEvent3EffectiveTime ContinuityOfCareDocumentDocumentationOfServiceEvent3Performer ContinuityOfCareDocumentDocumentationOfServiceEvent ContinuityOfCareDocumentAuthorAssignedAuthor3' code.codeSystemName='LOINC' constraints.validation.warning='ContinuityOfCareDocumentProceduresSection' code.code='34133-9' constraints.validation.info='ContinuityOfCareDocumentAdvanceDirectivesSection ContinuityOfCareDocumentEncountersSection ContinuityOfCareDocumentFamilyHistorySection ContinuityOfCareDocumentFunctionalStatusSection ContinuityOfCareDocumentImmunizationsSectionEntriesOptional ContinuityOfCareDocumentMedicalEquipmentSection ContinuityOfCareDocumentPayersSection ContinuityOfCareDocumentPlanOfCareSection ContinuityOfCareDocumentSocialHistorySection ContinuityOfCareDocumentVitalSignsSectionEntriesOptional'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xD8tUIlEeG5UvLPSY8o7A" base_Class="_tY10IEINEeGfG6GbxF_VQQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ServiceEvent3EffectiveTimeLow ServiceEvent3EffectiveTimeHigh ServiceEvent3ClassCode ServiceEvent3EffectiveTime' constraints.validation.warning='ServiceEvent3Performer' classCode='PCPR'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xNts0IlEeG5UvLPSY8o7A" base_Class="_dIxCcEIOEeGfG6GbxF_VQQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PerformerTypeCode' typeCode='PRF' constraints.validation.info='PerformerAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xNttkIlEeG5UvLPSY8o7A" base_Class="_tXX_EEIOEeGfG6GbxF_VQQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssignedEntityId' constraints.validation.warning='AssignedEntityHasNationalProviderIdentifier' constraints.validation.info='AssignedEntityCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xW3oEIlEeG5UvLPSY8o7A" base_Class="_OgZroCypEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComponentOfEncompassingEncounter'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xW3o0IlEeG5UvLPSY8o7A" base_Class="_2IWQIxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Family History' templateId.root='2.16.840.1.113883.10.20.22.2.15' constraints.validation.error='FamilyHistorySectionTemplateId FamilyHistorySectionCode FamilyHistorySectionTitle FamilyHistorySectionText' code.codeSystemName='LOINC' code.code='10157-6' constraints.validation.info='FamilyHistorySectionFamilyHistory'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xgop0IlEeG5UvLPSY8o7A" base_Class="_2IbIoBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' templateId.root='2.16.840.1.113883.10.20.22.4.45' constraints.validation.error='FamilyHistoryOrganizerTemplateId FamilyHistoryOrganizerClassCode FamilyHistoryOrganizerMoodCode FamilyHistoryOrganizerStatusCode FamilyHistoryOrganizerFamilyHistoryObservation FamilyHistoryOrganizerSubject' classCode='CLUSTER' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4xpykUIlEeG5UvLPSY8o7A" base_Class="_2IpyIxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.46' constraints.validation.error='FamilyHistoryObservationTemplateId FamilyHistoryObservationAgeObservationInversion FamilyHistoryObservationClassCode FamilyHistoryObservationMoodCode FamilyHistoryObservationId FamilyHistoryObservationCode FamilyHistoryObservationStatusCode FamilyHistoryObservationValue' code.codeSystemName='SNOMEDCT' constraints.validation.warning='FamilyHistoryObservationEffectiveTime' classCode='OBS' moodCode='EVN' constraints.validation.info='FamilyHistoryObservationAgeObservation FamilyHistoryObservationFamilyHistoryDeathObservation' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4yQPkkIlEeG5UvLPSY8o7A" base_Class="_2JKvgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.17' code.displayName='Social history' constraints.validation.error='SocialHistorySectionTemplateId SocialHistorySectionCode SocialHistorySectionTitle SocialHistorySectionText' code.codeSystemName='LOINC' code.code='29762-2' constraints.validation.info='SocialHistorySectionSocialHistoryObservation SocialHistorySectionPregnancyObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4yaAj0IlEeG5UvLPSY8o7A" base_Class="_2JOZ4BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.38' constraints.validation.error='SocialHistoryObservationTemplateId SocialHistoryObservationReferenceValue SocialHistoryObservationClassCode SocialHistoryObservationMoodCode SocialHistoryObservationId SocialHistoryObservationStatusCode' code.codeSystemName='SNOMEDCT' constraints.validation.warning='SocialHistoryObservationOriginalText SocialHistoryObservationReference SocialHistoryObservationCode SocialHistoryObservationValue' classCode='OBS' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4ys7dkIlEeG5UvLPSY8o7A" base_Class="_2JVHkhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SocialHistoryStatusCode' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.1.56' code.displayName='Status' constraints.validation.error='SocialHistoryStatusObservationTemplateId SocialHistoryStatusObservationNoAdditionalParticipants SocialHistoryStatusObservationNoAdditionalRelationships SocialHistoryStatusObservationClassCode SocialHistoryStatusObservationMoodCode SocialHistoryStatusObservationCode SocialHistoryStatusObservationStatusCode SocialHistoryStatusObservationValue' code.codeSystemName='LOINC' classCode='OBS' code.code='33999-4' moodCode='EVN' value.codeSystem='2.16.840.1.113883.1.11.20.17'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_4y_2YkIlEeG5UvLPSY8o7A" base_Generalization="_ksO6UBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_4y_2ZUIlEeG5UvLPSY8o7A" base_Class="_2Js7AxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Relevant diagnostic tests and/or laboratory data' templateId.root='2.16.840.1.113883.10.20.22.2.3.1' constraints.validation.error='ResultsSectionTemplateId ResultsSectionEntriesOptionalCode ResultsSectionTitle ResultsSectionText ResultsSectionResultOrganizer' code.codeSystemName='LOINC' code.code='30954-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4zJnZkIlEeG5UvLPSY8o7A" base_Class="_2JxzgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation moodCode.displayName='Event' statusCode.code='completed' templateId.root='2.16.840.1.113883.10.20.22.4.1' constraints.validation.error='ResultOrganizerTemplateId ResultOrganizerId ResultOrganizerStatusCode ResultOrganizerCode ResultOrganizerResultObservation' moodCode.code='EVN' classCode.codeSystem='2.16.840.1.113883.5.6' constraints.validation.warning='ResultOrganizerCodeValue ResultOrganizerClassCodeValue' classCode.codeSystemName='HL7ActClass' moodCode.codeSystem='2.16.840.1.113883.5.1001' classCode.code='' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4zciUkIlEeG5UvLPSY8o7A" base_Class="_2J1d4BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation moodCode.displayName='Event' templateId.root='2.16.840.1.113883.10.20.22.4.2' classCode.displayName='Observation' constraints.validation.error='ResultObservationTemplateId ResultObservationTextReferenceValue ResultObservationNoObservationRangeCode ResultObservationId ResultObservationCode ResultObservationStatusCode ResultObservationEffectiveTime ResultObservationValue' classCode.codeSystem='2.16.840.1.113883.5.6' constraints.validation.info='ResultObservationAuthorMultiplicity ResultObservationMethodCode ResultObservationTargetSiteCode' statusCode.code='completed' moodCode.code='EVN' constraints.validation.warning='ResultObservationTextReference ResultObservationCodeValue ResultObservationText ResultObservationInterpretationCode' classCode.codeSystemName='HL7ActClass' moodCode.codeSystem='2.16.840.1.113883.5.1001' classCode.code='OBS' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4zvdSkIlEeG5UvLPSY8o7A" base_Class="_2KEucBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Medical Equipment' templateId.root='2.16.840.1.113883.10.20.22.2.23' constraints.validation.error='MedicalEquipmentSectionTemplateId MedicalEquipmentSectionCode MedicalEquipmentSectionTitle MedicalEquipmentSectionText' code.codeSystemName='LOINC' constraints.validation.warning='MedicalEquipmentSectionNonMedicinalSupplyActivity' code.code='46264-8'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4z5OT0IlEeG5UvLPSY8o7A" base_Class="_2KKOBhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.14' code.displayName='Functional status assessment' constraints.validation.error='FunctionalStatusSectionTemplateId FunctionalStatusSectionCode FunctionalStatusSectionTitle FunctionalStatusSectionText' code.codeSystemName='LOINC' code.code='47420-5' constraints.validation.info='FunctionalStatusSectionProblemObservation FunctionalStatusSectionResultObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_40CYOEIlEeG5UvLPSY8o7A" base_Class="_2KVNIBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Summary purpose' templateId.root='2.16.840.1.113883.10.20.1.13' constraints.validation.error='PurposeSectionTemplateId PurposeSectionCode PurposeSectionTitle PurposeSectionText' code.codeSystemName='LOINC' constraints.validation.warning='PurposeSectionPurposeActivity' code.code='48764-5'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_40MJP0IlEeG5UvLPSY8o7A" base_Class="_2KZekBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.1.30' code.displayName='Documentation procedure' constraints.validation.error='PurposeActivityTemplateId PurposeActivityHasReason PurposeActivityReasonType PurposeActivityClassCode PurposeActivityMoodCode PurposeActivityCode PurposeActivityStatusCode' code.codeSystemName='SNOMEDCT' classCode='ACT' code.code='23745001' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_40fEIkIlEeG5UvLPSY8o7A" base_Generalization="_8UhPsBVfEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_40fEJUIlEeG5UvLPSY8o7A" base_Class="_2KgzUBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Advance directives' templateId.root='2.16.840.1.113883.10.20.22.2.21.1' constraints.validation.error='AdvanceDirectivesSectionTemplateId AdvanceDirectivesSectionEntriesOptionalCode AdvanceDirectivesSectionTitle AdvanceDirectivesSectionText AdvanceDirectivesSectionAdvanceDirectiveObservation' code.codeSystemName='LOINC' code.code='42348-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_40o1K0IlEeG5UvLPSY8o7A" base_Class="_2KlEwBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.48' constraints.validation.error='AdvanceDirectiveObservationTemplateId AdvanceDirectiveObservationHasStartingTime AdvanceDirectiveObservationHasEndingTime AdvanceDirectiveObservationClassCode AdvanceDirectiveObservationMoodCode AdvanceDirectiveObservationId AdvanceDirectiveObservationCode AdvanceDirectiveObservationStatusCode AdvanceDirectiveObservationEffectiveTime' code.codeSystemName='SNOMEDCT' classCode='OBS' constraints.validation.warning='AdvanceDirectiveObservationVerifier AdvanceDirectiveObservationCustodian AdvanceDirectiveObservationReference AdvanceDirectiveObservationVerifierTime AdvanceDirectiveObservationVerifierTypeCode AdvanceDirectiveObservationVerifierParticipantRole AdvanceDirectiveObservationCustodianCustodianRoleCustodianEntityName AdvanceDirectiveObservationCustodianCustodianRoleAddr AdvanceDirectiveObservationCustodianCustodianRoleClassCode AdvanceDirectiveObservationCustodianCustodianRoleTelecom AdvanceDirectiveObservationCustodianCustodianRolePlayingEntity AdvanceDirectiveObservationCustodianTypeCode AdvanceDirectiveObservationCustodianAdvanceDirectiveObservationCustodianRole AdvanceDirectiveObservationReferenceExternalDocumentId AdvanceDirectiveObservationReferenceExternalDocumentText AdvanceDirectiveObservationReferenceExternalDocument' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_407wEkIlEeG5UvLPSY8o7A" base_Class="_N9j54CsgEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation typeCode.codeSystemName='HL7ActRelationshipType' constraints.validation.error='ReferenceExternalDocument' typeCode.codeSystem='2.16.840.1.113883.5.1002' typeCode.code='REFR'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_407wFUIlEeG5UvLPSY8o7A" base_Class="_TrqsMCsgEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ExternalDocumentId' constraints.validation.info='ExternalDocumentText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_407wGEIlEeG5UvLPSY8o7A" base_Class="_xSLI8CseEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianTypeCode CustodianAdvanceDirectiveObservationCustodianRole' typeCode='CST'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41FhEkIlEeG5UvLPSY8o7A" base_Class="_4vBVACseEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianRoleClassCode CustodianRolePlayingEntity' constraints.validation.warning='CustodianRoleAddr CustodianRoleTelecom' classCode='ROL'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41FhGUIlEeG5UvLPSY8o7A" base_Class="__8j5wCseEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianEntityName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41FhHEIlEeG5UvLPSY8o7A" base_Class="_9HiC0CsdEeGQ5rkpDKAt8A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='VerifierTime VerifierTypeCode VerifierParticipantRole' typeCode='VRF'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41OrAEIlEeG5UvLPSY8o7A" base_Class="_2KxSABSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.1.58' constraints.validation.error='AdvanceDirectiveVerificationTemplateId AdvanceDirectiveVerificationTypeCode' constraints.validation.warning='AdvanceDirectiveVerificationTime' typeCode='VRF'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41OrB0IlEeG5UvLPSY8o7A" base_Class="_2K0VUxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.1.37' code.displayName='Status' constraints.validation.error='AdvanceDirectiveStatusObservationTemplateId AdvanceDirectiveStatusObservationNoAdditionalParticipants AdvanceDirectiveStatusObservationNoAdditionalRelationships AdvanceDirectiveStatusObservationClassCode AdvanceDirectiveStatusObservationMoodCode AdvanceDirectiveStatusObservationCode AdvanceDirectiveStatusObservationStatusCode' code.codeSystemName='LOINC' classCode='OBS' code.code='33999-4' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_41iNAEIlEeG5UvLPSY8o7A" base_Generalization="_EEbhsBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_41iNA0IlEeG5UvLPSY8o7A" base_Class="_2LMIwBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Allergies, adverse reactions, alerts' templateId.root='2.16.840.1.113883.10.20.22.2.6.1' constraints.validation.error='AllergiesSectionTemplateId AllergiesSectionEntriesOptionalCode AllergiesSectionTitle AllergiesSectionText AllergiesSectionAllergyDrugSensitivity' code.codeSystemName='LOINC' code.code='48765-2'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_41rW90IlEeG5UvLPSY8o7A" base_Generalization="_blmF8BVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_41rW-kIlEeG5UvLPSY8o7A" base_Class="_2LSPYBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.2.5.1' constraints.validation.error='ProblemSectionTemplateId ProblemSectionProblemConcern'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_41rW-0IlEeG5UvLPSY8o7A" base_Generalization="_KVkvoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_41rW_kIlEeG5UvLPSY8o7A" base_Class="_2LWg0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.2.22.1' constraints.validation.error='EncountersSectionTemplateId EncountersSectionEncounterActivities'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41rXAUIlEeG5UvLPSY8o7A" base_Class="_2LayQBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.12' templateId.root='2.16.840.1.113883.10.20.22.4.49' constraints.validation.error='EncounterActivitiesTemplateId EncounterActivitiesCodeOriginalTextReferenceValue EncounterActivitiesServiceDeliveryTypeCode EncounterActivitiesClassCode EncounterActivitiesMoodCode EncounterActivitiesId EncounterActivitiesEffectiveTime' code.codeSystemName='CPT-4' constraints.validation.warning='EncounterActivitiesCodeOriginalText EncounterActivitiesCodeOriginalTextReference EncounterActivitiesCode' classCode='ENC' moodCode='EVN' constraints.validation.info='EncounterActivitiesServiceDeliveryLocation EncounterActivitiesIndication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_41-4-0IlEeG5UvLPSY8o7A" base_Class="_2LiHABSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.32' constraints.validation.error='ServiceDeliveryLocationTemplateId ServiceDeliveryLocationHasPlayingEntityClassCode ServiceDeliveryLocationCode' classCode.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='LOINC' constraints.validation.warning='ServiceDeliveryLocationAddr ServiceDeliveryLocationTelecom' classCode.codeSystemName='RoleCode' constraints.validation.info='ServiceDeliveryLocationHasPlayingEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_42IC5kIlEeG5UvLPSY8o7A" base_Class="_2Lu7UBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.12' constraints.validation.error='ConsolEncounterAdmissionSourceValueSet ConsolEncounterClassCode ConsolEncounterId ConsolEncounterText' code.codeSystemName='CPT-4' classCode='ENC' constraints.validation.warning='ConsolEncounterCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_42a90EIlEeG5UvLPSY8o7A" base_Class="_2L7voBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.2.1' constraints.validation.error='ImmunizationsSectionTemplateId ImmunizationsSectionEntriesOptionalCode ImmunizationsSectionTitle ImmunizationsSectionText ImmunizationsSectionImmunization' code.codeSystemName='LOINC' code.code='11369-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_42ku1EIlEeG5UvLPSY8o7A" base_Class="_2MAoIBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.52' constraints.validation.error='ImmunizationActivityTemplateId ImmunizationActivityClassCode ImmunizationActivityId ImmunizationActivityCode ImmunizationActivityStatusCode ImmunizationActivityEffectiveTime ImmunizationActivityNegationInd ImmunizationActivityConsumable' classCode='SBADM' constraints.validation.warning='ImmunizationActivityDoseQuantity ImmunizationActivityText ImmunizationActivityPerformer' moodCode.codeSystem='2.16.840.1.113883.5.1001' constraints.validation.info='ImmunizationActivityRouteCode ImmunizationActivityApproachSiteCode ImmunizationActivityRepeatNumber ImmunizationActivityAdministrationUnitCode ImmunizationActivityDrugVehicle ImmunizationActivityIndication ImmunizationActivityInstructions ImmunizationActivityMedicationDispense ImmunizationActivityReactionObservation ImmunizationActivityPrecondition ImmunizationActivityImmunizationRefusalReason ImmunizationActivityMedicationSupplyOrder' negationInd='false' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_43BawkIlEeG5UvLPSY8o7A" base_Class="_2MV_UBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Payment sources' templateId.root='2.16.840.1.113883.10.20.22.2.18' constraints.validation.error='PayersSectionTemplateId PayersSectionCode PayersSectionTitle PayersSectionText PayersSectionCoverageActivity' code.codeSystemName='LOINC' code.code='48768-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_43LLwEIlEeG5UvLPSY8o7A" base_Class="_2Ma30BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Payment sources' constraints.validation.error='InsuranceProviderInformationSource InsuranceProviderPaymentProviders InsuranceProviderHealthInsuranceType InsuranceProviderInsuranceInformation InsuranceProviderPatientInformation InsuranceProviderMemberId InsuranceProviderRelationshipToSubscriber InsuranceProviderRelationshipToSubscriberCodeSystem InsuranceProviderPatientName InsuranceProviderSubscriberId InsuranceProviderSubscriberAddress InsuranceProviderFinancialResponsibilityPartyType InsuranceProviderFinancialResponsibilityPartyTypeCode InsuranceProviderClassCode InsuranceProviderMoodCode InsuranceProviderId InsuranceProviderCode InsuranceProviderStatusCode InsuranceProviderPayerEntry' code.codeSystemName='LOINC' constraints.validation.warning='InsuranceProviderPayerEntryID InsuranceProviderHealthPlanCoverageStartTime InsuranceProviderHealthPlanCoverageStopTime InsuranceProviderMemberIdRoot InsuranceProviderSubscriberInformation InsuranceProviderSubscriberIdRoot InsuranceProviderFinancialResponsibilityPartyAddress' classCode='ACT' code.code='48768-6' constraints.validation.info='InsuranceProviderSequenceNumber InsuranceProviderInsuranceInfoSourceID InsuranceProviderInsuranceInfoSourceAddr' moodCode='DEF'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_43xBoEIlEeG5UvLPSY8o7A" base_Class="_2MyrQxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' constraints.validation.error='PayerEntryPayerEntityIsRequired PayerEntryCoveredPartyIsRequired PayerEntryEntryRelationshipREFR PayerEntryClassCode PayerEntryMoodCode PayerEntryId PayerEntryStatusCode PayerEntryPayerEntity PayerEntryCoveredParty' classCode='ACT' constraints.validation.info='PayerEntryCoveredPartyTime PayerEntrySubscriberIsAllowed PayerEntrySubscriberTime PayerEntrySubscriber' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_436yrUIlEeG5UvLPSY8o7A" base_Class="_2M4x4xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='CoveredPartyId CoveredPartyCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44D8m0IlEeG5UvLPSY8o7A" base_Class="_2M7OIBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='PolicySubscriberId'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_44D8qkIlEeG5UvLPSY8o7A" base_Generalization="_UeEpoBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_44D8rUIlEeG5UvLPSY8o7A" base_Class="_2NIpgBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation title.mixed='Medications' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.1.1' code.displayName='History of medication use' constraints.validation.error='MedicationsSectionTemplateId MedicationsSectionEntriesOptionalCode MedicationsSectionTitle MedicationsSectionText MedicationsSectionMedication' code.codeSystemName='LOINC' code.code='10160-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44XemUIlEeG5UvLPSY8o7A" base_Class="_2NP-QxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Treatment plan' templateId.root='2.16.840.1.113883.10.20.22.2.10' constraints.validation.error='PlanOfCareSectionTemplateId PlanOfCareSectionCode PlanOfCareSectionText' code.codeSystemName='LOINC' code.code='18776-5' constraints.validation.info='PlanOfCareSectionPlanOfCareActivityAct PlanOfCareSectionPlanOfCareActivityEncounter PlanOfCareSectionPlanOfCareActivityObservation PlanOfCareSectionPlanOfCareActivityProcedure PlanOfCareSectionPlanOfCareActivitySubstanceAdministration PlanOfCareSectionPlanOfCareActivitySupply'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44gogkIlEeG5UvLPSY8o7A" base_Class="_2NWE5xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.22.4.39' classCode.displayName='' constraints.validation.error='PlanOfCareActivityActTemplateId PlanOfCareActivityActId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass' classCode.code=''</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44qZgEIlEeG5UvLPSY8o7A" base_Class="_2NWFBBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.22.4.40' constraints.validation.error='PlanOfCareActivityEncounterTemplateId PlanOfCareActivityEncounterId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass' classCode.code=''</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44qZjEIlEeG5UvLPSY8o7A" base_Class="_2NcLjhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.1.25' classCode.displayName='' constraints.validation.error='PlanOfCareActivityObservationTemplateId PlanOfCareActivityObservationId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass' classCode.code=''</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_44zje0IlEeG5UvLPSY8o7A" base_Class="_2NiSKhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.22.4.41' constraints.validation.error='PlanOfCareActivityProcedureTemplateId PlanOfCareActivityProcedureId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass' classCode.code=''</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_449Ue0IlEeG5UvLPSY8o7A" base_Class="_2NoYwxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.1.25' classCode.displayName='' constraints.validation.error='PlanOfCareActivitySubstanceAdministrationTemplateId PlanOfCareActivitySubstanceAdministrationId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass' classCode.code=''</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_45HFe0IlEeG5UvLPSY8o7A" base_Class="_2NoY5BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.22.4.43' constraints.validation.error='PlanOfCareActivitySupplyTemplateId PlanOfCareActivitySupplyId' classCode.codeSystem='2.16.840.1.113883.5.6' classCode.codeSystemName='HL7ActClass'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_45QPa0IlEeG5UvLPSY8o7A" base_Class="_2N6soBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.5.4' templateId.root='2.16.840.1.113883.10.20.15.3.8' code.displayName='Assertion' constraints.validation.error='PregnancyObservationTemplateId PregnancyObservationClassCode PregnancyObservationMoodCode PregnancyObservationCode PregnancyObservationStatusCode PregnancyObservationValue PregnancyObservationEstimatedDateOfDelivery' code.code='ASSERTION' value.displayName='Pregnant' statusCode.code='completed' value.code='77386006' code.codeSystemName='HL7ActCode' constraints.validation.warning='PregnancyObservationEffectiveTime' classCode='OBS' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_45jxY0IlEeG5UvLPSY8o7A" base_Generalization="_gNO_cBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_45jxZkIlEeG5UvLPSY8o7A" base_Class="_2OAzQRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation title.mixed='Procedures' templateId.root='2.16.840.1.113883.10.20.22.2.7.1' constraints.validation.error='ProceduresSectionTemplateId ProceduresSectionHasProcedureActivity ProceduresSectionTitle'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_45s7UEIlEeG5UvLPSY8o7A" base_Class="_2OAzVhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='1.3.6.1.4.1.19376.1.5.3.1.4.4' constraints.validation.error='ExternalReferenceTemplateId ExternalReferenceHasNoCode ExternalReferenceHasReference ExternalReferenceHasReferenceExternalDocument ExternalReferenceHasReferenceExternalDocumentID ExternalReferenceHasReferenceExternalDocumentText ExternalReferenceClassCode ExternalReferenceMoodCode ExternalReferenceId ExternalReferenceText' classCode='ACT' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_452sVkIlEeG5UvLPSY8o7A" base_Class="_2OG58RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation contextDependent='true' templateId.root='2.16.840.1.113883.10.20.22.4.14' constraints.validation.error='ProcedureActivityProcedureTemplateId ProcedureActivityProcedureReferenceValue ProcedureActivityProcedureEncounterInversion ProcedureActivityProcedureProductInstanceTypeCode ProcedureActivityProcedureServiceDeliveryLocationTypeCode ProcedureActivityProcedureInstructionsInversion ProcedureActivityProcedureClassCode ProcedureActivityProcedureId ProcedureActivityProcedureCode ProcedureActivityProcedureStatusCode' classCode='PROC' constraints.validation.warning='ProcedureActivityProcedureCodeCodeSystems ProcedureActivityProcedureCodeOriginalText ProcedureActivityProcedureOriginalTextReferenceValue ProcedureActivityProcedureEffectiveTime ProcedureActivityProcedureTargetSiteCode ProcedureActivityProcedurePerformer' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' moodCode.codeSystem='2.16.840.1.113883.5.1001' constraints.validation.info='ProcedureActivityProcedurePriorityCode ProcedureActivityProcedureMethodCode ProcedureActivityProcedureIndication ProcedureActivityProcedureSpecimen ProcedureActivityProcedureServiceDeliveryLocation ProcedureActivityProcedureMedicationActivity ProcedureActivityProcedurePatientInstruction ProcedureActivityProcedureProcedureEncounter ProcedureActivityProcedureProductInstance' moodCode.codeSystemName='HL7ActMood' targetSiteCode.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_46ciR0IlEeG5UvLPSY8o7A" base_Generalization="_px07IBVgEeGQCvUGzi1kDQ"/>
  <Ecore:EClass xmi:id="_46mTMEIlEeG5UvLPSY8o7A" base_Class="_2OfUcxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.4.1' constraints.validation.error='VitalSignsSectionTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionText VitalSignsSectionTitle VitalSignsSectionVitalSignsOrganizer' code.codeSystemName='LOINC' code.code='8716-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_46wEMUIlEeG5UvLPSY8o7A" base_Class="_2OlbCRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.26' code.displayName='Vital signs' constraints.validation.error='VitalSignsOrganizerTemplateId VitalSignsOrganizerClassCode VitalSignsOrganizerMoodCode VitalSignsOrganizerId VitalSignsOrganizerCode VitalSignsOrganizerStatusCode VitalSignsOrganizerEffectiveTime VitalSignsOrganizerVitalSignObservation' code.codeSystemName='SNOMEDCT' classCode='CLUSTER' code.code='46680005' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_465OLUIlEeG5UvLPSY8o7A" base_Class="_2OrhsRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.27' constraints.validation.error='VitalSignObservationTemplateId VitalSignObservationClassCode VitalSignObservationMoodCode VitalSignObservationId VitalSignObservationCode VitalSignObservationStatusCode VitalSignObservationEffectiveTime VitalSignObservationValue' code.codeSystemName='LOINC' classCode='OBS' constraints.validation.warning='VitalSignObservationText' constraints.validation.info='VitalSignObservationInterpretationCode VitalSignObservationMethodCode VitalSignObservationTargetSiteCode VitalSignObservationAuthor' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_47V6G0IlEeG5UvLPSY8o7A" base_Class="_2PQJcxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='HISTORY OF PAST ILLNESS' templateId.root='2.16.840.1.113883.10.20.22.2.20' constraints.validation.error='HistoryOfPastIllnessSectionTemplateId HistoryOfPastIllnessSectionCode HistoryOfPastIllnessSectionTitle HistoryOfPastIllnessSectionText' code.codeSystemName='LOINC' code.code='11348-0' constraints.validation.info='HistoryOfPastIllnessSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_47frFkIlEeG5UvLPSY8o7A" base_Class="_2PWQCBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1' code.displayName='CHIEF COMPLAINT' constraints.validation.error='ChiefComplaintSectionTemplateId ChiefComplaintSectionCode ChiefComplaintSectionText ChiefComplaintSectionTitle' code.codeSystemName='LOINC' code.code='10154-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_47o1BkIlEeG5UvLPSY8o7A" base_Class="_2PWQFxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.1' code.displayName='REASON FOR REFERRAL' constraints.validation.error='ReasonForReferralSectionTemplateId ReasonForReferralSectionCode ReasonForReferralSectionTitle ReasonForReferralSectionText' code.codeSystemName='LOINC' code.code='42349-1'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_47ymBEIlEeG5UvLPSY8o7A" base_Class="_2PcWsRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.4' code.displayName='HISTORY OF PRESENT ILLNESS' constraints.validation.error='HistoryOfPresentIllnessSectionTemplateId HistoryOfPresentIllnessSectionCode HistoryOfPresentIllnessSectionTitle HistoryOfPresentIllnessSectionText' code.codeSystemName='LOINC' code.code='10164-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_478XBEIlEeG5UvLPSY8o7A" base_Class="_2PidQhSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.43' code.displayName='HOSPITAL ADMISSION DX' constraints.validation.error='HospitalAdmissionDiagnosisSectionTemplateId HospitalAdmissionDiagnosisSectionCode' code.codeSystemName='LOINC' code.code='46241-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_478XCUIlEeG5UvLPSY8o7A" base_Class="_2Poj5BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='MEDICATIONS ON ADMISSION' templateId.root='2.16.840.1.113883.10.20.22.2.44' constraints.validation.error='HospitalAdmissionMedicationsSectionEntriesOptionalTemplateId HospitalAdmissionMedicationsSectionEntriesOptionalCode HospitalAdmissionMedicationsSectionEntriesOptionalText HospitalAdmissionMedicationsSectionEntriesOptionalTitle' code.codeSystemName='LOINC' constraints.validation.warning='HospitalAdmissionMedicationsSectionEntriesOptionalAdmissionMedication' code.code='42346-7'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48Fg-EIlEeG5UvLPSY8o7A" base_Class="_2Poj_BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.3.88.11.83.115' code.displayName='MEDICATION ADMINISTERED' constraints.validation.error='MedicationsAdministeredSectionTemplateId MedicationsAdministeredSectionCode' code.codeSystemName='LOINC' code.code='18610-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48PR8kIlEeG5UvLPSY8o7A" base_Class="_2Pxt0hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.2.10' code.displayName='PHYSICAL EXAMINATION' constraints.validation.error='PhysicalExamSectionTemplateId PhysicalExamSectionCode PhysicalExamSectionTitle PhysicalExamSectionText' code.codeSystemName='LOINC' code.code='29545-1'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48Yb4kIlEeG5UvLPSY8o7A" base_Class="_2Pxt6xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.2.5' code.displayName='GENERAL STATUS' constraints.validation.error='GeneralStatusSectionTemplateId GeneralStatusSectionCode GeneralStatusSectionTitle GeneralStatusSectionText' code.codeSystemName='LOINC' code.code='10210-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48Yb60IlEeG5UvLPSY8o7A" base_Class="_2RqkMBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.18' code.displayName='REVIEW OF SYSTEMS' constraints.validation.error='ReviewOfSystemsSectionTemplateId ReviewOfSystemsSectionCode ReviewOfSystemsSectionTitle ReviewOfSystemsSectionText' code.codeSystemName='LOINC' code.code='10187-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48iM6EIlEeG5UvLPSY8o7A" base_Class="_2Rwq0BSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.9' code.displayName='ASSESSMENT AND PLAN' constraints.validation.error='AssessmentAndPlanSectionTemplateId AssessmentAndPlanSectionCode AssessmentAndPlanSectionText' code.codeSystemName='LOINC' code.code='51847-2' constraints.validation.info='AssessmentAndPlanSectionPlanOfCareActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48r95kIlEeG5UvLPSY8o7A" base_Class="_2SC-sBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.5.4' templateId.root='2.16.840.1.113883.10.20.22.4.47' code.displayName='Assertion' constraints.validation.error='FamilyHistoryDeathObservationTemplateId FamilyHistoryDeathObservationClassCode FamilyHistoryDeathObservationMoodCode FamilyHistoryDeathObservationCode FamilyHistoryDeathObservationStatusCode FamilyHistoryDeathObservationValue' code.code='ASSERTION' value.displayName='Dead' statusCode.code='completed' value.code='419099009' code.codeSystemName='HL7ActCode' classCode='OBS' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_48-40EIlEeG5UvLPSY8o7A" base_Class="_2SVSlBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='LanguageSpokenLanguageCode LanguageSpokenModeCode' constraints.validation.warning='LanguageSpokenNoProficiencyLevelCode' modeCode.codeSystem='2.16.840.1.113883.5.60' modeCode.codeSystemName='LanguageAbilityMode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49Ip0EIlEeG5UvLPSY8o7A" base_Class="_2TYbcBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.5.111' code.codeSystemName='RoleCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49Ip00IlEeG5UvLPSY8o7A" base_Class="_luQh8DVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.7.13' code.displayName='Surgical Drains' constraints.validation.error='SurgicalDrainsSectionTemplateId SurgicalDrainsSectionCode SurgicalDrainsSectionText SurgicalDrainsSectionTitle' code.codeSystemName='LOINC' code.code='11537-8'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49RzxkIlEeG5UvLPSY8o7A" base_Class="_2TeiIRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.21.1.10' constraints.validation.error='UnstructuredDocumentTemplateId UnstructuredDocumentRecordTarget UnstructuredDocumentAuthor UnstructuredDocumentComponent UnstructuredDocumentCustodian UnstructuredDocumentRecordTargetPatientRole2Id UnstructuredDocumentAuthorAssignedAuthor2Addr UnstructuredDocumentAuthorAssignedAuthor2Telecom UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationAddr UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationId UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationName UnstructuredDocumentCustodianAssignedCustodian3CustodianOrganizationTelecom UnstructuredDocumentCustodianAssignedCustodian2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49RzyUIlEeG5UvLPSY8o7A" base_Class="_JoL_sEBWEeGXKr6TcG1UOQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PatientRole2Id'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49bkwEIlEeG5UvLPSY8o7A" base_Class="_umfegEBWEeGXKr6TcG1UOQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssignedAuthor2Addr AssignedAuthor2Telecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49bkxUIlEeG5UvLPSY8o7A" base_Class="_wSDq0ECKEeGELr7uj3LK_Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianOrganizationAddr CustodianOrganizationId CustodianOrganizationName CustodianOrganizationTelecom'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49bkzEIlEeG5UvLPSY8o7A" base_Class="_VQ3BEEBYEeGXKr6TcG1UOQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='NonXMLBodyHasReferenceOrRepresentation NonXMLBodyMediaTypeFileFormats NonXMLBodyText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49kusEIlEeG5UvLPSY8o7A" base_Class="_2TkovBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='ScanOriginalAuthorHasAssignedAuthorId ScanOriginalAuthorHasAssignedAuthorRepresentedOrganizationId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49kusUIlEeG5UvLPSY8o7A" base_Class="_2Tko1hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ScanningDeviceTimeEqualsDocumentEffectiveTime ScanningDeviceHasAssignedAuthorId ScanningDeviceHasAssignedAuthoringDeviceCode ScanningDeviceHasDeviceManufacturerModelName ScanningDeviceHasDeviceSoftwareName ScanningDeviceHasAssignedAuthorRepresentedOrganizationId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49kuskIlEeG5UvLPSY8o7A" base_Class="_2TqvZBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ScanDataEntererTimeEqualsDocumentEffectiveTime ScanDataEntererHasAssignedEntityId ScanDataEntererTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_49uftEIlEeG5UvLPSY8o7A" base_Class="_2T9DQBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.23' constraints.validation.error='MedicationInformationTemplateId MedicationInformationClassCode MedicationInformationManufacturedMaterial' classCode='MANU' constraints.validation.info='MedicationInformationId MedicationInformationManufacturerOrganization '</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_49ufuUIlEeG5UvLPSY8o7A" base_Generalization="_2Uhq_BSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_49ufvEIlEeG5UvLPSY8o7A" base_Class="_2UJQeBSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.19.1' constraints.validation.error='UnstructuredOrScannedDocumentTemplateId UnstructuredOrScannedDocumentTypeIdFixed UnstructuredOrScannedDocumentHasOneRecordTarget UnstructuredOrScannedDocumentHasAssignedAuthor UnstructuredOrScannedDocumentPatientRoleId UnstructuredOrScannedDocumentHasPatientRoleAddress UnstructuredOrScannedDocumentHasPatientName UnstructuredOrScannedDocumentHasPatientGenderCode UnstructuredOrScannedDocumentHasPatientBirthYear UnstructuredOrScannedDocumentHasScanningDevice UnstructuredOrScannedDocumentHasScanDataEnterer UnstructuredOrScannedDocumentLegalAuthenticatorAssignedEntityId UnstructuredOrScannedDocumentHasNonXMLBody UnstructuredOrScannedDocumentHasNonXMLBodyBinaryText UnstructuredOrScannedDocumentHasNonXMLBodyTextMediaType UnstructuredOrScannedDocumentHasNonXMLBodyTextRepresentation UnstructuredOrScannedDocumentOnePatientPerDocument UnstructuredOrScannedDocumentPatientRoleHasId UnstructuredOrScannedDocumentAssignedAuthorHasAddr UnstructuredOrScannedDocumentAssignedAuthorHasTelecom UnstructuredOrScannedDocumentHasRepresentedCustodianOrganization UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationId UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationName UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationTelecom UnstructuredOrScannedDocumentHasRepresentedCustodianOrganizationAddr UnstructuredOrScannedDocumentHasNonXMLBodyText UnstructuredOrScannedDocumentHasTextReferenceOrRepresentation UnstructuredOrScannedDocumentHasTextMediaTypeValueSet UnstructuredOrScannedDocumentCode UnstructuredOrScannedDocumentEffectiveTime UnstructuredOrScannedDocumentId UnstructuredOrScannedDocumentLanguageCode UnstructuredOrScannedDocumentTypeId UnstructuredOrScannedDocumentScanningDevice UnstructuredOrScannedDocumentScanDataEnterer UnstructuredOrScannedDocumentCustodian' constraints.validation.warning='UnstructuredOrScannedDocumentHasOriginalAuthor UnstructuredOrScannedDocumentNoStructuredData UnstructuredOrScannedDocumentTitle UnstructuredOrScannedDocumentScanOriginalAuthor' constraints.validation.info='UnstructuredOrScannedDocumentLegalAuthenticator UnstructuredOrScannedDocumentDocumentationOf'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_4-xBiEIlEeG5UvLPSY8o7A" base_Generalization="_2UnxkBSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_4-xBi0IlEeG5UvLPSY8o7A" base_Class="_2Uhq_hSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.3.88.11.48.1' constraints.validation.error='ReferralSummaryTemplateId GeneralHeaderConstraintsCode' code.codeSystemName='LOINC'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_4-6ygkIlEeG5UvLPSY8o7A" base_Generalization="_2U6FfBSVEeGGzu7fmW9pXw"/>
  <Ecore:EClass xmi:id="_4-6yhUIlEeG5UvLPSY8o7A" base_Class="_2UnxkRSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.8' constraints.validation.error='DischargeSummaryTemplateId GeneralHeaderConstraintsCode DischargeSummaryHospitalAdmissionDiagnosisSection DischargeSummaryAllergiesSection DischargeSummaryHospitalDischargeDiagnosisSection DischargeSummaryHospitalDischargeMedicationsSectionEntriesOptional DischargeSummaryHospitalCourseSection DischargeSummaryPlanOfCareSection DischargeSummaryComponentOf DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3ResponsiblePartyAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntityHasPersonOrOrganization DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipantAssignedEntity DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow DischargeSummaryComponentOfEncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh DischargeSummaryComponentOfEncompassingEncounter3EffectiveTime DischargeSummaryComponentOfEncompassingEncounter3ResponsibleParty DischargeSummaryComponentOfEncompassingEncounter3EncounterParticipant DischargeSummaryComponentOfEncompassingEncounter' code.codeSystemName='LOINC' constraints.validation.info='DischargeSummaryHospitalAdmissionMedicationsSectionEntriesOptional DischargeSummaryAdvanceDirectivesSection DischargeSummaryDischargeDietSection DischargeSummaryFunctionalStatusSection DischargeSummaryHistoryOfPresentIllnessSection DischargeSummaryMedicalEquipmentSection DischargeSummaryPhysicalExamSection DischargeSummaryHistoryOfPastIllnessSection DischargeSummaryVitalSignsSection DischargeSummaryChiefComplaintAndReasonForVisitSection DischargeSummaryChiefComplaintSection DischargeSummaryFamilyHistorySection DischargeSummaryHospitalConsultationsSection DischargeSummaryHospitalDischargeInstructionsSection DischargeSummaryHospitalDischargePhysicalSection DischargeSummaryHospitalDischargeStudiesSummarySection DischargeSummaryImmunizationsSectionEntriesOptional DischargeSummaryProblemSectionEntriesOptional DischargeSummaryProceduresSectionEntriesOptional DischargeSummaryReasonForVisitSection DischargeSummaryReviewOfSystemsSection DischargeSummarySocialHistorySection'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4_EjgEIlEeG5UvLPSY8o7A" base_Class="_TeTqkDzEEeGMk58Mp9-wVA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounter3EncompassingEncounterHasEffectiveTimeLow EncompassingEncounter3EncompassingEncounterHasEffectiveTimeHigh EncompassingEncounter3EffectiveTime' constraints.validation.info='EncompassingEncounter3ResponsibleParty EncompassingEncounter3EncounterParticipant'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4_Ejg0IlEeG5UvLPSY8o7A" base_Class="_cALIgDzFEeGMk58Mp9-wVA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResponsiblePartyAssignedEntityHasPersonOrOrganization ResponsiblePartyAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4_EjhEIlEeG5UvLPSY8o7A" base_Class="_dTBQcDzFEeGMk58Mp9-wVA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterParticipantAssignedEntityHasPersonOrOrganization EncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4_hPkkIlEeG5UvLPSY8o7A" base_Class="_sHrUoBUSEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.19' constraints.validation.error='IndicationTemplateId IndicationClassCode IndicationMoodCode IndicationId IndicationStatusCode' code.codeSystemName='SNOMEDCT' classCode='OBS' constraints.validation.warning='IndicationCode IndicationEffectiveTime IndicationValue' constraints.validation.info='IndicationCodeNullFlavor' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_4_9UWUIlEeG5UvLPSY8o7A" base_Class="_VBXq8BUTEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.24' constraints.validation.error='DrugVehicleTemplateId DrugVehiclePlayingEntityCode DrugVehicleClassCode DrugVehicleCode DrugVehiclePlayingEntity' code.codeSystemName='SNOMEDCT' classCode='MANU' code.code='412307009'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5AHFUkIlEeG5UvLPSY8o7A" base_Class="_DpoGkBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.18' constraints.validation.error='MedicationDispenseTemplateId MedicationDispenseClassCode MedicationDispenseId MedicationDispenseMoodCode MedicationDispenseStatusCode MedicationDispenseAssignedEntity' constraints.validation.warning='MedicationDispenseEffectiveTime MedicationDispenseRepeatNumber' classCode='SPLY' constraints.validation.info='MedicationDispensePerformer2 MedicationDispenseMedicationSupplyOrder' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5AQ2XUIlEeG5UvLPSY8o7A" base_Class="_chEhQBUUEeG6PvUxSTZnaw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.25' constraints.validation.error='PreconditionForSubstanceAdministrationTemplateId PreconditionForSubstanceAdministrationCriterion' constraints.validation.warning='PreconditionForSubstanceAdministrationCriterionCode PreconditionForSubstanceAdministrationCriterionValue' constraints.validation.info='PreconditionForSubstanceAdministrationCriterionText'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5AaATUIlEeG5UvLPSY8o7A" base_Class="_PZBdMBUlEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.61' constraints.validation.error='PolicyActivityTemplateId PolicyActivityClassCode PolicyActivityId PolicyActivityMoodCode PolicyActivityAuthorizationActivity PolicyActivityPerformer' classCode='ACT' constraints.validation.warning='PolicyActivityCode' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5AjxSkIlEeG5UvLPSY8o7A" base_Class="_Cg3pkBUmEeGvPruliC3crg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.60' code.displayName='Payment Sources' constraints.validation.error='CoverageActivityTemplateId CoverageActivityClassCode CoverageActivityCode CoverageActivityId CoverageActivityMoodCode CoverageActivityStatusCode CoverageActivityPolicyActivity' code.codeSystemName='LOINC' classCode='ACT' code.code='48768-6' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5BAdMEIlEeG5UvLPSY8o7A" base_Class="_5Ha7ABUyEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation value.codeSystemName='SNOMEDCT' statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.96' templateId.root='2.16.840.1.113883.10.20.22.4.4' constraints.validation.error='ProblemObservationTemplateId ProblemObservationHasTextReferenceValue ProblemObservationAgeObservationInversion ProblemObservationClassCode ProblemObservationMoodCode ProblemObservationId ProblemObservationCode ProblemObservationStatusCode ProblemObservationValue' code.codeSystemName='SNOMEDCT' constraints.validation.warning='ProblemObservationHasTextReference ProblemObservationText ProblemObservationEffectiveTime' constraints.validation.info='ProblemObservationNegationInd ProblemObservationAgeObservation ProblemObservationHealthStatusObservation ProblemObservationProblemStatus' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5BdJMEIlEeG5UvLPSY8o7A" base_Class="_SjN_8BUzEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' value.codeSystemName='SNOMEDCT' code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Status' templateId.root='2.16.840.1.113883.10.20.22.4.6' constraints.validation.error='ProblemStatusTemplateId ProblemStatusTextReferenceValue ProblemStatusClassCode ProblemStatusMoodCode ProblemStatusCode ProblemStatusStatusCode ProblemStatusValue' code.codeSystemName='LOINC' classCode='OBS' constraints.validation.warning='ProblemStatusTextReference ProblemStatusText' code.code='33999-4' moodCode='EVN' value.codeSystem='2.16.840.1.113883.6.96'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5CMwAEIlEeG5UvLPSY8o7A" base_Class="__qYdcBVNEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.5.8' templateId.root='2.16.840.1.113883.10.20.22.4.53' constraints.validation.error='ImmunizationRefusalReasonTemplateId ImmunizationRefusalReasonClassCode ImmunizationRefusalReasonCode ImmunizationRefusalReasonId ImmunizationRefusalReasonMoodCode ImmunizationRefusalReasonStatusCode' code.codeSystemName='ActReason' classCode='OBS' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5CV5-0IlEeG5UvLPSY8o7A" base_Class="_daTqABVOEeGbmN_W114JUw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.54' constraints.validation.error='ImmunizationMedicationInformationTemplateId ImmunizationMedicationInformationClassCode' constraints.validation.warning='ImmunizationMedicationInformationOrganization' classCode='MANU' constraints.validation.info='ImmunizationMedicationInformationId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Cfq_UIlEeG5UvLPSY8o7A" base_Class="_bGzYgBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Allergies, adverse reactions, alerts' templateId.root='2.16.840.1.113883.10.20.22.2.6' constraints.validation.error='AllergiesSectionEntriesOptionalTemplateId AllergiesSectionEntriesOptionalCode AllergiesSectionEntriesOptionalTitle AllergiesSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='AllergiesSectionEntriesOptionalAllergyProblemAct' code.code='48765-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Cpb9kIlEeG5UvLPSY8o7A" base_Class="_iAoXEBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation title.mixed='Medications' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.1' code.displayName='History of medication use' constraints.validation.error='MedicationsSectionEntriesOptionalTemplateId MedicationsSectionEntriesOptionalCode MedicationsSectionEntriesOptionalTitle MedicationsSectionEntriesOptionalText MedicationsSectionEntriesOptionalMedicationActivity' code.codeSystemName='LOINC' code.code='10160-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Cyl5kIlEeG5UvLPSY8o7A" base_Class="_naxrkBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Problem List' templateId.root='2.16.840.1.113883.10.20.22.2.5' constraints.validation.error='ProblemSectionEntriesOptionalTemplateId ProblemSectionEntriesOptionalCode ProblemSectionEntriesOptionalTitle ProblemSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='ProblemSectionEntriesOptionalProblemConcern' code.code='11450-4'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5C8W5EIlEeG5UvLPSY8o7A" base_Class="_s9Ig4BVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.7' code.displayName='History of procedures' constraints.validation.error='ProceduresSectionEntriesOptionalTemplateId ProceduresSectionEntriesOptionalCode ProceduresSectionEntriesOptionalText' code.codeSystemName='LOINC' code.code='47519-4' constraints.validation.info='ProceduresSectionEntriesOptionalProcedureActivityProcedure ProceduresSectionEntriesOptionalProcedureAcivityObservation ProceduresSectionEntriesOptionalProcedureActivityAct'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5DGH4EIlEeG5UvLPSY8o7A" base_Class="_xGqiEBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Relevant diagnostic tests and/or laboratory data' templateId.root='2.16.840.1.113883.10.20.22.2.3' constraints.validation.error='ResultsSectionEntriesOptionalTemplateId ResultsSectionEntriesOptionalCode ResultsSectionEntriesOptionalTitle ResultsSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='ResultsSectionEntriesOptionalResultOrganizer' code.code='30954-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5DGH6UIlEeG5UvLPSY8o7A" base_Class="_1RZdIBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Advance Directives' templateId.root='2.16.840.1.113883.10.20.22.2.21' constraints.validation.error='AdvanceDirectivesSectionEntriesOptionalTemplateId AdvanceDirectivesSectionEntriesOptionalCode AdvanceDirectivesSectionEntriesOptionalTitle AdvanceDirectivesSectionEntriesOptionalText' code.codeSystemName='LOINC' code.code='42348-3' constraints.validation.info='AdvanceDirectivesSectionEntriesOptionalAdvanceDirectiveObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5DPR2EIlEeG5UvLPSY8o7A" base_Class="_4yj2wBVdEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Encounters' templateId.root='2.16.840.1.113883.10.20.22.2.22' constraints.validation.error='EncountersSectionEntriesOptionalTemplateId EncountersSectionEntriesOptionalCode EncountersSectionEntriesOptionalTitle EncountersSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='EncountersSectionEntriesOptionalEncounterActivities' code.code='46240-8'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5DZC1kIlEeG5UvLPSY8o7A" base_Class="_EuPloBVeEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.2' constraints.validation.error='ImmunizationsSectionEntriesOptionalTemplateId ImmunizationsSectionEntriesOptionalCode ImmunizationsSectionEntriesOptionalTitle ImmunizationsSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='ImmunizationsSectionEntriesOptionalImmunizationActivity' code.code='11369-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5DiMxEIlEeG5UvLPSY8o7A" base_Class="_bRH8sBVeEeGQCvUGzi1kDQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.4' constraints.validation.error='VitalSignsSectionEntriesOptionalTemplateId VitalSignsSectionEntriesOptionalCode VitalSignsSectionEntriesOptionalText VitalSignsSectionEntriesOptionalTitle' code.codeSystemName='LOINC' constraints.validation.warning='VitalSignsSectionEntriesOptionalVitalSignsOrganizer' code.code='8716-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Dr9wkIlEeG5UvLPSY8o7A" base_Class="_Aj7JkBg4EeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.13' constraints.validation.error='ProcedureActivityObservationTemplateId ProcedureActivityObservationReferenceValue ProcedureActivityObservationEncounterInversion ProcedureActivityObservationServiceDeliveryLocationTypeCode ProcedureActivityObservationInstructionsInversion ProcedureActivityObservationClassCode ProcedureActivityObservationId ProcedureActivityObservationCode ProcedureActivityObservationStatusCode ProcedureActivityObservationValue' constraints.validation.warning='ProcedureActivityObservationCodeCodeSystems ProcedureActivityObservationCodeOriginalText ProcedureActivityObservationOriginalTextReferenceValue ProcedureActivityObservationEffectiveTime ProcedureActivityObservationTargetSiteCode ProcedureActivityObservationPerformer' classCode='OBS' targetSiteCode.codeSystem='2.16.840.1.113883.6.96' moodCode.codeSystem='2.16.840.1.113883.5.1001' constraints.validation.info='ProcedureActivityObservationPriorityCode ProcedureActivityObservationMethodCode ProcedureActivityObservationServiceDeliveryLocation ProcedureActivityObservationProcedureEncounter ProcedureActivityObservationInstructions ProcedureActivityObservationIndication ProcedureActivityObservationMedicationActivity' moodCode.codeSystemName='HL7ActMood' targetSiteCode.codeSystemName='SNOMEDCT'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5EIpskIlEeG5UvLPSY8o7A" base_Class="_awdH4Bg4EeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.12' constraints.validation.error='ProcedureActivityActTemplateId ProcedureActivityActReferenceValue ProcedureActivityActEncounterInversion ProcedureActivityActServiceDeliveryLocationTypeCode ProcedureActivityActInstructionsInversion ProcedureActivityActClassCode ProcedureActivityActId ProcedureActivityActCode ProcedureActivityActStatusCode' constraints.validation.warning='ProcedureActivityActCodeCodeSystems ProcedureActivityActCodeOriginalText ProcedureActivityActOriginalTextReferenceValue ProcedureActivityActEffectiveTime ProcedureActivityActPerformer' classCode='ACT' moodCode.codeSystem='2.16.840.1.113883.5.1001' constraints.validation.info='ProcedureActivityActPriorityCode ProcedureActivityActServiceDeliveryLocation ProcedureActivityActProcedureEncounter ProcedureActivityActInstructions ProcedureActivityActIndication ProcedureActivityActMedicationActivity' moodCode.codeSystemName='HL7ActMood'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5EbkpEIlEeG5UvLPSY8o7A" base_Class="_XUoXwBnZEeGs5a462vYX5Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.1.19' constraints.validation.error='AuthorizationActivityTemplateId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5ElVpEIlEeG5UvLPSY8o7A" base_Class="_j3aTQBrTEeGo461UQq-B1g">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.4.17' constraints.validation.error='MedicationSupplyOrderTemplateId MedicationSupplyOrderClassCode MedicationSupplyOrderMoodCode MedicationSupplyOrderStatusCode MedicationSupplyOrderId' constraints.validation.warning='MedicationSupplyOrderEffectiveTime MedicationSupplyOrderQuantity MedicationSupplyOrderRepeatNumber' classCode='SPLY' moodCode='INT' constraints.validation.info='MedicationSupplyOrderAuthor MedicationSupplyOrderInstructions'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5FU8h0IlEeG5UvLPSY8o7A" base_Class="_JIc0oBxEEeGIELeDlfT77A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='null' constraints.validation.error='ProcedureSpecimenTemplateId ProcedureSpecimenSpecimenRole' constraints.validation.warning='ProcedureSpecimenSpecimentRoleId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5FU8iEIlEeG5UvLPSY8o7A" base_Class="_nbpGUBxEEeGIELeDlfT77A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedurePerformerAssignedEntity ProcedurePerformerAssignedEntityId ProcedurePerformerAssignedEntityAddr ProcedurePerformerAssignedEntityTelecom ProcedurePerformerAssignedEntityRepOrgAddr ProcedurePerformerAssignedEntityRepOrgTelecom' constraints.validation.warning='ProcedurePerformerAssignedEntityRepOrg ProcedurePerformerAssignedEntityRepOrgId' constraints.validation.info='ProcedurePerformerAssignedEntityRepOrgName'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5FetgEIlEeG5UvLPSY8o7A" base_Class="_qeLqQBxEEeGIELeDlfT77A">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ProcedureEncounterClassCode ProcedureEncounterMoodCode ProcedureEncounterId' classCode='ENC' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5F6yfEIlEeG5UvLPSY8o7A" base_Class="_vBswQBtpEeGT89b80j3MTg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation statusCode.code='completed' code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.15.3.1' constraints.validation.error='EstimatedDateOfDeliveryTemplateId EstimatedDateOfDeliveryClassCode EstimatedDateOfDeliveryCode EstimatedDateOfDeliveryMoodCode EstimatedDateOfDeliveryStatusCode EstimatedDateOfDeliveryValue' code.codeSystemName='LOINC' classCode='OBS' code.code='11778-8' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5GXeVEIlEeG5UvLPSY8o7A" base_Class="__WUM4CAMEeGKirKJsFylGA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.88' constraints.validation.error='MedicationInformationManufacturedMaterialCode' code.codeSystemName='RxNorm'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5GhPVUIlEeG5UvLPSY8o7A" base_Class="_JNgjcCHZEeGFLIX-2_sWzA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='FamilyHistorySubjectRelatedSubjectClassCode FamilyHistorySubjectRelatedSubjectCode FamilyHistorySubjectRelatedSubjectSubjectAdmGenderCode' constraints.validation.warning='FamilyHistorySubjectRelatedSubjectCodeValueSet FamilyHistorySubjectRelatedSubjectSubject FamilyHistorySubjectRelatedSubjectSubjectBirthTime' constraints.validation.info='FamilyHistorySubjectRelatedSubjectSubjectDeceasedInd FamilyHistorySubjectRelatedSubjectSubjectDeceasedTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5GrAXkIlEeG5UvLPSY8o7A" base_Class="_hD-z0CUPEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.35' code.displayName='Discharge Medication' constraints.validation.error='DischargeMedicationMedicationActivity DischargeMedicationTemplateId DischargeMedicationClassCode DischargeMedicationMoodCode DischargeMedicationCode' code.codeSystemName='LOINC' classCode='ACT' code.code='10183-2' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5GrAZkIlEeG5UvLPSY8o7A" base_Class="_KtwVgCULEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.33' code.displayName='Hospital Discharge Diagnosis' constraints.validation.error='HospitalDischargeDiagnosisProblemObservation HospitalDischargeDiagnosisTemplateId HospitalDischargeDiagnosisClassCode HospitalDischargeDiagnosisMoodCode HospitalDischargeDiagnosisCode' code.codeSystemName='LOINC' classCode='ACT' code.code='11535-2' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5GrAbkIlEeG5UvLPSY8o7A" base_Class="_2PidURSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Hospital Discharge Diagnosis' templateId.root='2.16.840.1.113883.10.20.22.2.24' constraints.validation.error='HospitalDischargeDiagnosisSectionTemplateId HospitalDischargeDiagnosisSectionCode HospitalDischargeDiagnosisSectionTitle HospitalDischargeDiagnosisSectionText' code.codeSystemName='LOINC' constraints.validation.warning='HospitalDischargeDiagnosisSectionHospitalDischargeDiagnosis' code.code='11535-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5G0KSEIlEeG5UvLPSY8o7A" base_Class="_2Poj7RSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='HOSPITAL DISCHARGE MEDICATIONS' templateId.root='2.16.840.1.113883.10.20.22.2.11' constraints.validation.error='HospitalDischargeMedicationsSectionEntriesOptionalTemplateId HospitalDischargeMedicationsSectionEntriesOptionalCode HospitalDischargeMedicationsSectionEntriesOptionalTitle HospitalDischargeMedicationsSectionEntriesOptionalText' code.codeSystemName='LOINC' constraints.validation.warning='HospitalDischargeMedicationsSectionEntriesOptionalDischargeMedication' code.code='10183-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5G97RkIlEeG5UvLPSY8o7A" base_Class="_2RqkOxSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.5' code.displayName='Hospital Course' constraints.validation.error='HospitalCourseSectionTemplateId HospitalCourseSectionCode HospitalCourseSectionTitle HospitalCourseSectionText' code.codeSystemName='LOINC' code.code='8648-8'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5HHFNEIlEeG5UvLPSY8o7A" base_Class="_2Uz-4xSVEeGGzu7fmW9pXw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.33' code.displayName='Discharge Diet' constraints.validation.error='DischargeDietSectionTemplateId DischargeDietSectionCode DischargeDietSectionTitle DischargeDietSectionText' code.codeSystemName='LOINC' code.code='42344-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5HQ2MkIlEeG5UvLPSY8o7A" base_Class="_38AXoCUTEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.16' code.displayName='Hospital Discharge Studies Summary' constraints.validation.error='HospitalDischargeStudiesSummarySectionTemplateId HospitalDischargeStudiesSummarySectionCode HospitalDischargeStudiesSummarySectionTitle HospitalDischargeStudiesSummarySectionText' code.codeSystemName='LOINC' code.code='11493-4'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5HjxKEIlEeG5UvLPSY8o7A" base_Class="_lBergCUMEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.41' code.displayName='Hospital Discharge Instructions' constraints.validation.error='HospitalDischargeInstructionsSectionTemplateId HospitalDischargeInstructionsSectionCode HospitalDischargeInstructionsSectionTitle HospitalDischargeInstructionsSectionText' code.codeSystemName='LOINC' code.code='8653-8'</annotation>
  </Ecore:EClass>
  <CDA:ConformsTo xmi:id="_5HtiJEIlEeG5UvLPSY8o7A" base_Generalization="_TytVkSUQEeGiOPpZVnfEJA"/>
  <Ecore:EClass xmi:id="_5HtiJ0IlEeG5UvLPSY8o7A" base_Class="_TytVkCUQEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.2.11.1' constraints.validation.error='HospitalDischargeMedicationsSectionTemplateId HospitalDischargeMedicationsSectionDischargeMedication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5H3TLkIlEeG5UvLPSY8o7A" base_Class="_WikGsCUTEeGiOPpZVnfEJA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='1.3.6.1.4.1.19376.1.5.3.1.3.26' code.displayName='Hospital Discharge Physical' constraints.validation.error='HospitalDischargePhysicalSectionTemplateId HospitalDischargePhysicalSectionCode HospitalDischargePhysicalSectionTitle HospitalDischargePhysicalSectionText' code.codeSystemName='LOINC' code.code='10184-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IKOGUIlEeG5UvLPSY8o7A" base_Class="_oI7CQCsaEeGHF88-qhhUMA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.13' code.displayName='Chief Complaint and Reason for Visit' constraints.validation.error='ChiefComplaintAndReasonForVisitSectionTemplateId ChiefComplaintAndReasonForVisitSectionCode ChiefComplaintAndReasonForVisitSectionText ChiefComplaintAndReasonForVisitSectionTitle' code.codeSystemName='LOINC' code.code='46239-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5ITYAkIlEeG5UvLPSY8o7A" base_Class="_Nm64UCscEeGHF88-qhhUMA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.12' code.displayName='Reason for Visit' constraints.validation.error='ReasonForVisitSectionTemplateId ReasonForVisitSectionCode ReasonForVisitSectionText ReasonForVisitSectionTitle' code.codeSystemName='LOINC' code.code='29299-5'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IdJAEIlEeG5UvLPSY8o7A" base_Class="_jPhi4CylEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='RecordTargetPatientRole'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IdJC0IlEeG5UvLPSY8o7A" base_Class="_NOxMACymEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='BirthplacePlace'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IdJEEIlEeG5UvLPSY8o7A" base_Class="_xw9WkCymEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthorAssignedAuthor'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Im6BkIlEeG5UvLPSY8o7A" base_Class="_pjq7UCzCEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='RelatedInformantAddr' constraints.validation.info='RelatedInformantCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Im6DUIlEeG5UvLPSY8o7A" base_Class="_lU63MCynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianAssignedCustodian'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Im6EEIlEeG5UvLPSY8o7A" base_Class="_rk3yUCynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssignedCustodianRepresentedCustodianOrganization'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IwD8EIlEeG5UvLPSY8o7A" base_Class="_7nao4CynEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InformationRecipientIntendedRecipient'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IwD80IlEeG5UvLPSY8o7A" base_Class="_BAltACyoEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.info='IntendedRecipientInformationRecipient IntendedRecipientRecievedOrganization'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IwD_EIlEeG5UvLPSY8o7A" base_Class="_yamekCyoEeGMXrZ0DiQwGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='InFulfillmentOfOrder'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5IwD_0IlEeG5UvLPSY8o7A" base_Class="_I1LikCwXEeGKLc4ckmfDag">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.info='EncounterPerformerAssignedEntityCode'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5I51CkIlEeG5UvLPSY8o7A" base_Class="_0HgNkDJAEeG6R8Pb5FT2Ow">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation typeCode.displayName='Consumable' typeCode.codeSystemName='HL7ParticipationType' constraints.validation.error='AllergyObservationParticipantParticipantRole' typeCode.codeSystem='2.16.840.1.113883.5.90' typeCode.code='CSM'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5I51C0IlEeG5UvLPSY8o7A" base_Class="_4Lj44DJAEeG6R8Pb5FT2Ow">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation classCode.displayName='Manufactured Product' constraints.validation.error='AllergyObservationParticipantRolePlayingEntity' classCode.codeSystem='2.16.840.1.113883.5.110' classCode.codeSystemName='HL7RoleClass' classCode.code='MANU'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JDl8EIlEeG5UvLPSY8o7A" base_Class="_E1B60DJBEeG6R8Pb5FT2Ow">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AllergyObservationPlayingEntityClassCode AllergyObservationPlayingEntityCode' classCode='MMAT' constraints.validation.warning='AllergyObservationPlayingEntityCodeOriginalText' constraints.validation.info='AllergyObservationPlayingEntityCodeTranslation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JMv6EIlEeG5UvLPSY8o7A" base_Class="_OA_Q0DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.25' constraints.validation.error='AnesthesiaSectionTemplateId AnesthesiaSectionCode AnesthesiaSectionText AnesthesiaSectionTitle AnesthesiaSectionProcedureActivityProcedure' code.codeSystemName='LOINC' code.code='59774-0' constraints.validation.info='AnesthesiaSectionMedicationActivity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JWg5UIlEeG5UvLPSY8o7A" base_Class="_R1OXcDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.2.37' constraints.validation.error='ComplicationsSectionTemplateId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JWg6EIlEeG5UvLPSY8o7A" base_Class="_WPTWEDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.6.1.1' constraints.validation.error='DICOMObjectCatalogSectionTemplateId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JWg60IlEeG5UvLPSY8o7A" base_Class="_ZcC-4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.6.1.2' constraints.validation.error='FindingsSection TemplateId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JWg7kIlEeG5UvLPSY8o7A" base_Class="_eKFbUDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.42' constraints.validation.error='HospitalConsultationsSection TemplateId HospitalConsultationsSection Code HospitalConsultationsSection Text HospitalConsultationsSection Title' code.codeSystemName='LOINC' code.code='18841-7'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Jfq2EIlEeG5UvLPSY8o7A" base_Class="_hqzJADVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.21.2.3' constraints.validation.error='InterventionsSectionTemplateId InterventionsSectionCode InterventionsSectionText InterventionsSectionTitle' code.codeSystemName='LOINC' code.code='62387-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Jpb2EIlEeG5UvLPSY8o7A" base_Class="_mEIgwDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.39' constraints.validation.error='MedicalHistorySectionTemplateId MedicalHistorySectionCode MedicalHistorySectionText MedicalHistorySectionTitle' code.codeSystemName='LOINC' code.code='11329-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5JzM1kIlEeG5UvLPSY8o7A" base_Class="_rNJpADVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.21.2.1' constraints.validation.error='ObjectiveSection TemplateId ObjectiveSection Code ObjectiveSection Text ObjectiveSection Title' code.codeSystemName='LOINC' code.code='61149-1'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5J8WxkIlEeG5UvLPSY8o7A" base_Class="_vHfXoDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.7.12' code.displayName='Operative Note Fluids' constraints.validation.error='OperativeNoteFluidSectionTemplateId OperativeNoteFluidSectionCode OperativeNoteFluidSectionText OperativeNoteFluidSectionTitle' code.codeSystemName='LOINC' code.code='10216-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5KGHwkIlEeG5UvLPSY8o7A" base_Class="_zel6wDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.7.14' code.displayName='Operative Note Surgical' constraints.validation.error='OperativeNoteSurgicalProcedureSectionTemplateId OperativeNoteSurgicalProcedureSectionCode OperativeNoteSurgicalProcedureSectionText OperativeNoteSurgicalProcedureSectionTitle' code.codeSystemName='LOINC' code.code='10223-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5KP4wkIlEeG5UvLPSY8o7A" base_Class="_3b6E4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Planned Procedure' templateId.root='2.16.840.1.113883.10.20.22.2.30' constraints.validation.error='PlannedProcedureSectionTemplateId PlannedProcedureSectionCode PlannedProcedureSectionText PlannedProcedureSectionTitle' code.codeSystemName='LOINC' code.code='59772-4' constraints.validation.info='PlannedProcedureSectionPlanOfCareActivityProcedure'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5KZCsEIlEeG5UvLPSY8o7A" base_Class="_7UA-4DVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.35' constraints.validation.error='PostoperativeDiagnosisSectionTemplateId PostoperativeDiagnosisSectionCode PostoperativeDiagnosisSectionText PostoperativeDiagnosisSectionTitle' code.codeSystemName='LOINC' code.code='10218-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5KZCuUIlEeG5UvLPSY8o7A" base_Class="_-jlSMDVyEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Postprocedure Diagnosis' templateId.root='2.16.840.1.113883.10.20.22.2.36' constraints.validation.error='PostprocedureDiagnosisSectionTemplateId PostprocedureDiagnosisSectionCode PostprocedureDiagnosisSectionText PostprocedureDiagnosisSectionTitle' code.codeSystemName='LOINC' constraints.validation.warning='PostprocedureDiagnosisSectionPostprocedureDiagnosis' code.code='59769-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5KizuEIlEeG5UvLPSY8o7A" base_Class="_Cu6qMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation templateId.root='2.16.840.1.113883.10.20.22.2.34' constraints.validation.error='PreoperativeDiagnosisSection TemplateId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Kr9oEIlEeG5UvLPSY8o7A" base_Class="_HNUIIDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.27' constraints.validation.error='ProcedureDescriptionSectionTemplateId ProcedureDescriptionSectionCode ProcedureDescriptionSectionText ProcedureDescriptionSectionTitle' code.codeSystemName='LOINC' code.code='29554-3'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5K1uqEIlEeG5UvLPSY8o7A" base_Class="_QhXGYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.18.2.12' constraints.validation.error='ProcedureDispositionSectionTemplateId ProcedureDispositionSectionCode ProcedureDispositionSectionText ProcedureDispositionSectionTitle' code.codeSystemName='LOINC' code.code='59775-7'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5K_fpkIlEeG5UvLPSY8o7A" base_Class="_TvcL8DVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.18.2.9' constraints.validation.error='ProcedureEstimatedBloodLossSection TemplateId ProcedureEstimatedBloodLossSection Code ProcedureEstimatedBloodLossSection Text ProcedureEstimatedBloodLossSection Title' code.codeSystemName='LOINC' code.code='59770-8'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5LIplkIlEeG5UvLPSY8o7A" base_Class="_W4UBYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Procedure Findings' templateId.root='2.16.840.1.113883.10.20.22.2.28' constraints.validation.error='ProcedureFindingsSectionTemplateId ProcedureFindingsSectionCode ProcedureFindingsSectionText ProcedureFindingsSectionTitle' code.codeSystemName='LOINC' code.code='59776-5' constraints.validation.info='ProcedureFindingsSectionProblemObservation'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5LSalEIlEeG5UvLPSY8o7A" base_Class="_Z662wDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.40' code.displayName='Procedure Implants' constraints.validation.error='ProcedureImplantsSectionTemplateId ProcedureImplantsSectionCode ProcedureImplantsSectionText ProcedureImplantsSectionTitle' code.codeSystemName='LOINC' code.code='59771-6'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5LcLkkIlEeG5UvLPSY8o7A" base_Class="_cjmJMDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Procedure Indications' templateId.root='2.16.840.1.113883.10.20.22.2.29' constraints.validation.error='ProcedureIndicationsSectionTemplateId ProcedureIndicationsSectionCode ProcedureIndicationsSectionText ProcedureIndicationsSectionTitle' code.codeSystemName='LOINC' code.code='59768-2' constraints.validation.info='ProcedureIndicationsSectionIndication'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5LcLm0IlEeG5UvLPSY8o7A" base_Class="_gSUdsDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.2.31' code.displayName='Procedure Specimens Taken' constraints.validation.error='ProcedureSpecimensTakenSectionTemplateId ProcedureSpecimensTakenSectionCode ProcedureSpecimensTakenSectionText ProcedureSpecimensTakenSectionTitle' code.codeSystemName='LOINC' code.code='59773-2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5LlViEIlEeG5UvLPSY8o7A" base_Class="_iy8nYDVzEeGaW4kr-GbV8Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.21.2.2' code.displayName='Subjective' constraints.validation.error='SubjectiveSectionTemplateId SubjectiveSectionCode SubjectiveSectionText SubjectiveSectionTitle' code.codeSystemName='LOINC' code.code='61150-9'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5L4QcEIlEeG5UvLPSY8o7A" base_Class="_R-vIoDssEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.4' constraints.validation.error='ConsultationNote TemplateId GeneralHeaderConstraintsCode ConsultationNote InFulfillmentOf ConsultationNote ComponentOf ConsultationNote InFulfillmentOfOrderId ConsultationNote InFulfillmentOfOrder ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipantAssignedEntity ConsultationNote ComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ConsultationNote ComponentOfEncompassingEncounter2ResponsiblePartyAssignedEntity ConsultationNote ComponentOfEncompassingEncounter2EffectiveTime ConsultationNote ComponentOfEncompassingEncounter2Id ConsultationNote ComponentOfEncompassingEncounter2ResponsibleParty ConsultationNote ComponentOfEncompassingEncounter2EncounterParticipant ConsultationNote ComponentOfEncompassingEncounter' code.codeSystemName='LOINC' constraints.validation.info='ConsultationNote AssessmentSection ConsultationNote AssessmentAndPlanSection ConsultationNote PlanOfCareSection ConsultationNote HistoryOfPresentIllness ConsultationNote PhysicalExamSection ConsultationNote ReasonForReferralSection ConsultationNote ReasonForVisitSection ConsultationNote AllergiesSection ConsultationNote ChiefComplaintSection ConsultationNote ChiefComplaintAndReasonForVisitSection ConsultationNote FamilyHistorySection ConsultationNote GeneralStatusSection ConsultationNote HistoryOfPastIllnessSection ConsultationNote ImmunizationsSection ConsultationNote MedicationsSectionEntriesOptional ConsultationNote ProblemSectionEntriesOptional ConsultationNote ProceduresSectionEntriesOptional ConsultationNote ResultsSectionEntriesOptional ConsultationNote ReviewOfSystemsSection ConsultationNote SocialHistorySection ConsultationNote VitalSignsSectionEntriesOptional'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5L4QdUIlEeG5UvLPSY8o7A" base_Class="_xf2epzsvEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounter2EffectiveTime EncompassingEncounter2Id' constraints.validation.info='EncompassingEncounter2ResponsibleParty EncompassingEncounter2EncounterParticipant'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5MCBcEIlEeG5UvLPSY8o7A" base_Class="_tUQLcDswEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResponsiblePartyAssignedEntityHasPersonOrganizationOrBoth ResponsiblePartyAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5MCBcUIlEeG5UvLPSY8o7A" base_Class="_Or7FUDsyEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterParticipantAssignedEntityHasPersonOrganizationOrBoth EncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5MCBeEIlEeG5UvLPSY8o7A" base_Class="_xf2eoDsvEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComponentOfEncompassingEncounter'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5MLyfkIlEeG5UvLPSY8o7A" base_Class="_W8pI4DszEeGvzMYhXuqAEA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='2.  Assessments' templateId.root='2.16.840.1.113883.10.20.22.2.8' constraints.validation.error='AssessmentSectionTemplateId AssessmentSectionCode AssessmentSectionText' code.codeSystemName='LOINC' code.code='2. 51848-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5M7ZVEIlEeG5UvLPSY8o7A" base_Class="_7G6B4DzDEeGMk58Mp9-wVA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComponentOfEncompassingEncounter'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5NYFVEIlEeG5UvLPSY8o7A" base_Class="_-Qa60D1jEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.3' constraints.validation.error='HistoryAndPhysicalNoteTemplateId HistoryAndPhysicalNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections HistoryAndPhysicalNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent GeneralHeaderConstraintsCode HistoryAndPhysicalNoteComponentOf HistoryAndPhysicalNoteAllergiesSectionEntriesOptional HistoryAndPhysicalNoteFamilyHistorySection HistoryAndPhysicalNoteGeneralStatusSection HistoryAndPhysicalNoteHistoryOfPastIllnessSection HistoryAndPhysicalNoteMedicationsSectionEntriesOptional HistoryAndPhysicalNotePhysicalExamSection HistoryAndPhysicalNoteReasonForVisitSection HistoryAndPhysicalNoteResultsSectionEntriesOptional HistoryAndPhysicalNoteReviewOfSystemsSection HistoryAndPhysicalNoteSocialHistorySection HistoryAndPhysicalNoteVitalSignsSectionEntriesOptional HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsiblePartyAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntityHasPersonOrOrganization HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipantAssignedEntity HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EffectiveTime HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Id HistoryAndPhysicalNoteComponentOfEncompassingEncounter4Location HistoryAndPhysicalNoteComponentOfEncompassingEncounter4ResponsibleParty HistoryAndPhysicalNoteComponentOfEncompassingEncounter4EncounterParticipant HistoryAndPhysicalNoteComponentOfEncompassingEncounter' code.codeSystemName='LOINC' constraints.validation.warning='HistoryAndPhysicalNoteHistoryOfPresentIllnessSection' constraints.validation.info='HistoryAndPhysicalNoteInFulfillmentOf HistoryAndPhysicalNoteAssessmentSection HistoryAndPhysicalNotePlanOfCareSection HistoryAndPhysicalNoteAssessmentAndPlanSection HistoryAndPhysicalNoteChiefComplaintSection HistoryAndPhysicalNoteChiefComplaintAndReasonForVisitSection HistoryAndPhysicalNoteImmunizationsSectionEntriesOptional HistoryAndPhysicalNoteProblemSectionEntriesOptional HistoryAndPhysicalNoteProceduresSectionEntriesOptional'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5NhPNEIlEeG5UvLPSY8o7A" base_Class="_PThaAD1lEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounter4EffectiveTime EncompassingEncounter4Id' constraints.validation.info='EncompassingEncounter4Location EncompassingEncounter4ResponsibleParty EncompassingEncounter4EncounterParticipant'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5NrAMEIlEeG5UvLPSY8o7A" base_Class="__kITgD1lEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ResponsiblePartyAssignedEntityHasPersonOrOrganization ResponsiblePartyAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5NrAMUIlEeG5UvLPSY8o7A" base_Class="_B9BdgD1mEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterParticipantAssignedEntityHasPersonOrOrganization EncounterParticipantAssignedEntity'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5NrANkIlEeG5UvLPSY8o7A" base_Class="_A4JVkD1lEeG3tde5scYNWA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ComponentOfEncompassingEncounter'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5OkYE0IlEeG5UvLPSY8o7A" base_Class="_xe9MsD4iEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.7' constraints.validation.error='OperativeNoteTemplateId GeneralHeaderConstraintsCode OperativeNoteDocumentationOf OperativeNoteAnesthesiaSection OperativeNoteComplicationsSection OperativeNotePostoperativeDiagnosisSection OperativeNotePreoperativeDiagnosisSection OperativeNoteProcedureEstimatedBloodLossSection OperativeNoteProcedureFindingsSection OperativeNoteProcedureSpecimensTakenSection OperativeNoteProcedureDescriptionSection OperativeNoteDocumentationOfServiceEventPrimaryPerformerFunctionCode OperativeNoteDocumentationOfServiceEventPrimaryPerformerTypeCode OperativeNoteDocumentationOfServiceEventProcedureCodes OperativeNoteDocumentationOfServiceEventEffectiveTimeHasLow OperativeNoteDocumentationOfServiceEventEffectiveTimeHasHighWhenNoWidth OperativeNoteDocumentationOfServiceEventEffectiveTimeNoHighIfWidth OperativeNoteDocumentationOfServiceEventAnyAssistantsAsSecondary OperativeNoteDocumentationOfServiceEventCode OperativeNoteDocumentationOfServiceEventEffectiveTime OperativeNoteDocumentationOfServiceEvent' code.codeSystemName='LOINC' constraints.validation.info='OperativeNoteProcedureImplantsSection OperativeNoteOperativeNoteFluidSection OperativeNoteOperativeNoteSurgicalProcedureSection OperativeNotePlanOfCareSection OperativeNotePlannedProcedureSection OperativeNoteProcedureDispositionSection OperativeNoteProcedureIndicationsSection OperativeNoteSurgicalDrainsSection'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5OkYFkIlEeG5UvLPSY8o7A" base_Class="_1mJ2ID4jEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ServiceEventProcedureCodes ServiceEventEffectiveTimeHasLow ServiceEventEffectiveTimeHasHighWhenNoWidth ServiceEventEffectiveTimeNoHighIfWidth ServiceEventAnyAssistantsAsSecondary ServiceEventCode ServiceEventEffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5OtiBEIlEeG5UvLPSY8o7A" base_Class="_CNfxID4kEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation functionCode.codeSystem='2.16.840.1.113883.6.101' constraints.validation.error='PrimaryPerformerFunctionCode PrimaryPerformerTypeCode' functionCode.codeSystemName='NUCCHealthCareProviderTaxonomy'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5OtiC0IlEeG5UvLPSY8o7A" base_Class="_uKeuwD4jEeGhnL_c4sBHGg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DocumentationOfServiceEvent'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5PT_CUIlEeG5UvLPSY8o7A" base_Class="_LuYEsD7YEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.6' constraints.validation.error='ProcedureNoteTemplateId ProcedureNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProcedureNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent GeneralHeaderConstraintsCode ProcedureNotePrimaryCarePhysician ProcedureNoteProvider ProcedureNoteComplicationsSection ProcedureNotePostprocedureDiagnosisSection ProcedureNoteProcedureDescriptionSection ProcedureNoteProcedureIndicationsSection ProcedureNoteProviderAssociatedEntityAssociatedPerson' code.codeSystemName='LOINC' constraints.validation.warning='ProcedureNoteComponentOf ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacilityId ProcedureNoteComponentOfEncompassingEncounter5LocationHealthCareFacility ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipantTypeCode ProcedureNoteComponentOfEncompassingEncounter5Code ProcedureNoteComponentOfEncompassingEncounter5Location ProcedureNoteComponentOfEncompassingEncounter5EncounterParticipant ProcedureNoteComponentOfEncompassingEncounter5' constraints.validation.info='ProcedureNoteIndividual ProcedureNoteAssessmentSection ProcedureNotePlanOfCareSection ProcedureNoteAssessmentAndPlanSection ProcedureNoteAllergiesSectionEntriesOptional ProcedureNoteAnesthesiaSection ProcedureNoteChiefComplaintSection ProcedureNoteChiefComplaintAndReasonForVisitSection ProcedureNoteFamilyHistorySection ProcedureNoteHistoryOfPastIllnessSection ProcedureNoteHistoryOfPresentIllnessSection ProcedureNoteMedicalHistorySection ProcedureNoteMedicationsSectionEntriesOptional ProcedureNoteMedicationsAdministeredSection ProcedureNotePhysicalExamSection ProcedureNotePlannedProcedureSection ProcedureNoteProcedureDispositionSection ProcedureNoteProcedureEstimatedBloodLossSection ProcedureNoteProcedureFindingsSection ProcedureNoteProcedureImplantsSection ProcedureNoteProcedureSpecimensTakenSection ProcedureNoteProceduresSectionEntriesOptional ProcedureNoteReasonForVisitSection ProcedureNoteReviewOfSystemsSection ProcedureNoteSocialHistorySection ProcedureNoteIndividualTypeId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5PdI5EIlEeG5UvLPSY8o7A" base_Class="_6-yFcD7YEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounter5Code EncompassingEncounter5Location' constraints.validation.info='EncompassingEncounter5EncounterParticipant'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pm54EIlEeG5UvLPSY8o7A" base_Class="_MHwg4D-PEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthCareFacilityId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pm54UIlEeG5UvLPSY8o7A" base_Class="_VK6jcD-PEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncounterParticipantTypeCode' typeCode='REF'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pm55kIlEeG5UvLPSY8o7A" base_Class="_dlv5cD7ZEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='IndividualTypeId'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pm550IlEeG5UvLPSY8o7A" base_Class="_ifn98D-TEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ServiceEvent1ProcedureCodes ServiceEvent1EffectiveTimeHasLow ServiceEvent1EffectiveTimeHasHighWhenNoWidth ServiceEvent1EffectiveTimeNoHighIfWidth ServiceEvent1AnyAssistantsAsSecondary ServiceEvent1Code ServiceEvent1EffectiveTime'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pwq4EIlEeG5UvLPSY8o7A" base_Class="_TtkpcD-UEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='PrimaryPerformerFunctionCode' functionCode.codeSystem='2.16.840.1.113883.6.101' functionCode.codeSystemName='NUCCHealthCareProviderTaxonomy'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Pwq6UIlEeG5UvLPSY8o7A" base_Class="_TBq0cD-OEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AssociatedEntityAssociatedPerson'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5P500EIlEeG5UvLPSY8o7A" base_Class="_5JnTkD7YEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.warning='ComponentOfEncompassingEncounter5'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5P501UIlEeG5UvLPSY8o7A" base_Class="_IVODYD-PEeGvOdejHZ7dYg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='LocationHealthCareFacility'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5QzMvkIlEeG5UvLPSY8o7A" base_Class="_UBzvED_LEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.1.9' constraints.validation.error='ProgressNoteTemplateId ProgressNoteHasAnAssementAndPlanSectionOrIndividualAssementAndPlanSections ProgressNoteDoesNotHaveIndividualAssementAndPlanSectionsWhenAssementAndPlanSectionPresent GeneralHeaderConstraintsCode ProgressNoteComponentOf ProgressNoteComponentOfEncompassingEncounter6LocationHealthCareFacility1Id ProgressNoteComponentOfEncompassingEncounter6EffectiveTime ProgressNoteComponentOfEncompassingEncounter6Id ProgressNoteComponentOfEncompassingEncounter6Location' code.codeSystemName='LOINC' constraints.validation.warning='ProgressNoteDocumentationOf ProgressNoteDocumentationOfServiceEvent2ClassCode ProgressNoteDocumentationOfServiceEvent2EffectiveTime ProgressNoteDocumentationOfServiceEvent2' constraints.validation.info='ProgressNoteAssessmentSection ProgressNotePlanOfCareSection ProgressNoteAssessmentAndPlanSection ProgressNoteAllergiesSectionEntriesOptional ProgressNoteChiefComplaintSection ProgressNoteInterventionsSection ProgressNoteMedicationsSectionEntriesOptional ProgressNoteObjectiveSection ProgressNotePhysicalExamSection ProgressNoteProblemSectionEntriesOptional ProgressNoteResultsSectionEntriesOptional ProgressNoteReviewOfSystemsSection ProgressNoteSubjectiveSection ProgressNoteVitalSignsSectionEntriesOptional'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Q89sEIlEeG5UvLPSY8o7A" base_Class="_sfqx0D_bEeGnev0fONNFyw">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='ServiceEvent2ClassCode' constraints.validation.warning='ServiceEvent2EffectiveTime' classCode='PCPR'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Q89t0IlEeG5UvLPSY8o7A" base_Class="_gtLcMD_QEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='EncompassingEncounter6EffectiveTime EncompassingEncounter6Id EncompassingEncounter6Location'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Q89vEIlEeG5UvLPSY8o7A" base_Class="_1UYJsD_QEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='HealthCareFacility1Id'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5RiznkIlEeG5UvLPSY8o7A" base_Class="_aemW4D_MEeGXieeKs7NJjA">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DocumentationOfServiceEvent2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5RskkEIlEeG5UvLPSY8o7A" base_Class="_Nb_zEEBXEeGXKr6TcG1UOQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='CustodianAssignedCustodian2'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5RsknEIlEeG5UvLPSY8o7A" base_Class="_0fjXAEEvEeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Postprocedure Diagnosis' templateId.root='2.16.840.1.113883.10.20.22.4.51' constraints.validation.error='PostprocedureDiagnosisTemplateId PostprocedureDiagnosisClassCode PostprocedureDiagnosisCode PostprocedureDiagnosisMoodCode PostprocedureDiagnosisProblemObservation' code.codeSystemName='LOINC' classCode='ACT' code.code='59769-0' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5R1ukkIlEeG5UvLPSY8o7A" base_Class="_0baBYEEwEeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.65' constraints.validation.error='PreoperativeDiagnosisTemplateId PreoperativeDiagnosisClassCode PreoperativeDiagnosisCode PreoperativeDiagnosisMoodCode PreoperativeDiagnosisProblemObservation' code.codeSystemName='LOINC' classCode='ACT' code.code='10219-4' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5SJQjEIlEeG5UvLPSY8o7A" base_Class="_4qKukEE1EeGdmoWy_aLP0Q">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Instructions' constraints.validation.error='InstructionsSectionCode InstructionsSectionText InstructionsSectionTitle' code.codeSystemName='LOINC' constraints.validation.warning='InstructionsSectionInstructions' code.code='69730-0'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5SSacUIlEeG5UvLPSY8o7A" base_Class="_LNP08EFGEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' templateId.root='2.16.840.1.113883.10.20.22.4.36' constraints.validation.error='AdmissionMedicationTemplateId AdmissionMedicationClassCode AdmissionMedicationCode AdmissionMedicationMoodCode AdmissionMedicationMedicationActivity' code.codeSystemName='LOINC' classCode='ACT' code.code='42346-7' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5ScLeUIlEeG5UvLPSY8o7A" base_Class="_5K6mAEFHEeGorO80f-Cppg">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation code.codeSystem='2.16.840.1.113883.6.1' code.displayName='Admission diagnosis' templateId.root='2.16.840.1.113883.10.20.22.4.34' constraints.validation.error='HospitalAdmissionDiagnosisTemplateId HospitalAdmissionDiagnosisClassCode HospitalAdmissionDiagnosisCode HospitalAdmissionDiagnosisMoodCode HospitalAdmissionDiagnosisProblemObservation' code.codeSystemName='LOINC' classCode='ACT' code.code='46241-6' moodCode='EVN'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Sl8f0IlEeG5UvLPSY8o7A" base_Class="_ou9e8EINEeGfG6GbxF_VQQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='DocumentationOfServiceEvent'</annotation>
  </Ecore:EClass>
  <Ecore:EClass xmi:id="_5Sl8hEIlEeG5UvLPSY8o7A" base_Class="_NH9J4EIREeGfG6GbxF_VQQ">
    <annotation>http://www.openhealthtools.org/mdht/uml/cda/annotation constraints.validation.error='AuthorAssignedAuthor3'</annotation>
  </Ecore:EClass>
</xmi:XMI>
