You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3065 lines
196 KiB

<?xml version="1.0" encoding="utf-8"?>
<!--
Conversion of CCR to Level 3 CCD
Orginal Author: Ken Miller
Solventus LLC
ken.miller@solventus.coms
Contributors:
Richard Braman, EHR Doctors, Inc rbraman@ehrdoctors.com
George Lilly (WorldVistA glilly@glilly.net)
xxxx - Oroville Hospital
Date: 2010-05-5
Version: 0.1
License :
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses.
-->
<xsl:stylesheet version="1.0" xmlns="urn:hl7-org:v3" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:astm-org:CCR" xmlns:date="http://exslt.org/dates-and-times"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="a date">
<xsl:import href="./templates/cdavocablookup.xsl"/>
<xsl:import href="./templates/hl7oidlookup.xsl"/>
<xsl:import href="./templates/code.xsl"/>
<xsl:import href="./templates/actor.xsl"/>
<xsl:import href="./templates/datetime.xsl"/>
<xsl:import href="./templates/problemDescription.xsl"/>
<xsl:output method="xml" encoding="utf-8" version="1.0" indent="yes"/>
<xsl:template match="/">
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:sdtc="urn:hl7-org:sdtc" xsi:schemaLocation="urn:hl7-org:v3 http://xreg2.nist.gov:8080/hitspValidation/schema/cdar2c32/infrastructure/cda/C32_CDA.xsd" classCode="DOCCLIN" moodCode="EVN">
<realmCode code="US"/>
<typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
<templateId root="2.16.840.1.113883.10.20.1"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.1"/>
<templateId root="2.16.840.1.113883.10.20.3"/>
<templateId root="2.16.840.1.113883.3.88.11.32.1"/>
<id>
<xsl:attribute name="root">
<xsl:value-of select="/a:ContinuityOfCareRecord/a:CCRDocumentObjectID"></xsl:value-of>
</xsl:attribute>
</id>
<code code="34133-9" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Summarization of episode note"/>
<xsl:variable name="fromID" select="/a:ContinuityOfCareRecord/a:From/a:ActorLink[1]/a:ActorID"/>
<xsl:variable name="ccrFromActorObjectID" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$fromID]/a:InternalCCRLink[a:LinkRelationship='representedOrganization']/a:LinkID"/>
<title>Continuity of Care Document from <xsl:value-of select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrFromActorObjectID]/a:Organization/a:Name"/></title>
<effectiveTime>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="/a:ContinuityOfCareRecord/a:DateTime/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMddhhmmss+0000</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</effectiveTime>
<confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/>
<languageCode code="en-US"/>
<recordTarget typeCode="RCT" contextControlCode="OP">
<patientRole>
<xsl:call-template name="ccdPatientRole">
<xsl:with-param name="ccrActorObjectID" select="/a:ContinuityOfCareRecord/a:Patient[1]/a:ActorID"/>
</xsl:call-template>
</patientRole>
</recordTarget>
<author>
<time>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="/a:ContinuityOfCareRecord/a:DateTime/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMddhhmmss</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</time>
<xsl:call-template name="ccdAssignedAuthor">
<xsl:with-param name="ccrActorObjectID" select="$fromID"/>
</xsl:call-template>
</author>
<xsl:if test="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$fromID]/a:InternalCCRLink[a:LinkRelationship='representedOrganization']">
<custodian>
<assignedCustodian>
<xsl:call-template name="ccdOrganization">
<xsl:with-param name="ccrActorObjectID" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$fromID]/a:InternalCCRLink[a:LinkRelationship='representedOrganization']/a:LinkID"/>
<xsl:with-param name="organizationNodeName" select="'representedCustodianOrganization'"/>
</xsl:call-template>
</assignedCustodian>
</custodian>
</xsl:if>
<documentationOf>
<serviceEvent classCode="PCPR">
<effectiveTime>
<low>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time">
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body//a:DateTime//a:ExactDateTime">
<xsl:sort order="ascending"/>
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:with-param>
<xsl:with-param name="pattern">yyyyMMdd</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</low>
<high>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time">
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body//a:DateTime//a:ExactDateTime">
<xsl:sort order="descending"/>
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:with-param>
<xsl:with-param name="pattern">yyyyMMdd</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</high>
</effectiveTime>
</serviceEvent>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:HealthCareProviders/a:Provider">
<xsl:call-template name="ccdAssignedEntity">
<xsl:with-param name="ccrActorObjectID" select="a:ActorID"/>
</xsl:call-template>
</xsl:for-each>
</documentationOf>
<component>
<structuredBody>
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.13"/>
<code code="48764-5" codeSystem="2.16.840.1.113883.6.1" />
<title>Purpose</title>
<text>
<xsl:value-of select="/a:ContinuityOfCareRecord/a:Purpose/a:Description/a:Text"></xsl:value-of>
</text>
</section>
</component>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Alerts">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.2" />
<!--C83 Allergies and Other Adverse Reactions Section Conformance Identifier-->
<templateId root="2.16.840.1.113883.3.88.11.83.102" />
<!--IHE Allergies and Other Adverse Reactions Section Conformance Identifier-->
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.13" />
<code code="48765-2" displayName="Allergies, adverse reactions, alerts" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" />
<title>Alerts</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Reaction</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Alerts/a:Alert">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:apply-templates select="a:Description/a:Code"/>
</td>
<td>
<xsl:attribute name="ID">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Reaction/a:Description/a:Text"/>
<xsl:if test="a:Reaction/a:Severity/a:Text">
-<xsl:value-of select="a:Reaction/a:Severity/a:Text"/>
</xsl:if>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Alerts/a:Alert">
<entry typeCode="DRIV">
<act classCode="ACT" moodCode="EVN">
<!--CCD Problem Act Identifier-->
<templateId root="2.16.840.1.113883.10.20.1.27"></templateId>
<!--C83 Allergy Entry-->
<templateId root="2.16.840.1.113883.3.88.11.83.6" />
<!--IHE Concern Entry Conformance Identifier-->
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.1"></templateId>
<!--IHE Allergy and Intolerance Concerns Entry-->
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.3"></templateId>
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code nullFlavor="NA"/>
<entryRelationship typeCode="SUBJ">
<observation classCode="OBS" moodCode="EVN">
<!--CCD Alert Observation-->
<templateId root="2.16.840.1.113883.10.20.1.18"></templateId>
<!--CCD Problem Observation-->
<templateId root="2.16.840.1.113883.10.20.1.28" />
<!--IHE Problem Entry-->
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5" />
<!--IHE Allergies and Intolerances Entry-->
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.6" />
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
<xsl:with-param name="suffix"></xsl:with-param>
</xsl:call-template>
<code code="416098002" codeSystem="2.16.840.1.113883.6.96" displayName="drug allergy" codeSystemName="SNOMED CT"/>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code="completed"/>
<value xsi:type="CD" />
<participant typeCode="CSM">
<xsl:choose>
<xsl:when test="a:Agent/a:Products/a:Product/a:Product">
<xsl:call-template name="ccdParticipantRoleCodedDescription">
<xsl:with-param name="ccrCodedDescription" select="a:Product/a:Description"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</participant>
<xsl:if test="a:Reaction">
<entryRelationship typeCode="MFST" inversionInd="true">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.54"/>
<!--Reaction observation template -->
<code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"/>
<statusCode code="completed"/>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Reaction/a:Description"/>
</xsl:call-template>
</observation>
</entryRelationship>
</xsl:if>
<xsl:call-template name="ccdStatus">
<xsl:with-param name="ccrStatus" select="a:Status"/>
</xsl:call-template>
</observation>
</entryRelationship>
</act>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:AdvanceDirectives">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.1" assigningAuthorityName="HL7 CCD"/>
<templateId root="2.16.840.1.113883.3.88.11.83.116" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.35" assigningAuthorityName="IHE PCC"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.34" assigningAuthorityName="IHE PCC"/>
<!--Advance Directives section template-->
<code code="42348-3" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Advance directives"/>
<title>Advance Directives</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Description</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:AdvanceDirectives/a:AdvanceDirective">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
<xsl:text>:Narrative</xsl:text>
</xsl:attribute>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:AdvanceDirectives/a:AdvanceDirective">
<entry typeCode="DRIV">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.12" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.17" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.13" assigningAuthorityName="IHE PCC"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.13.7" assigningAuthorityName="IHE PCC"/>
<!-- Advance directive observation template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code="completed"/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="originalTextReference">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
<xsl:text>:Narrative</xsl:text>
</xsl:with-param>
</xsl:call-template>
<participant typeCode="VRF">
<templateId root="2.16.840.1.113883.10.20.1.58"/>
<!--Verification of an advance directive observation template -->
<time nullFlavor="UNK"/>
<xsl:call-template name="ccdParticipantRoleActor">
<xsl:with-param name="ccrActorObjectID" select="a:Source[1]/a:ActorID"/>
</xsl:call-template>
</participant>
<xsl:if test="a:ReferenceID">
<reference typeCode="REFR">
<externalDocument>
<templateId root="2.16.840.1.113883.10.20.1.36"/>
<!-- Advance directive reference template -->
<xsl:variable name="referenceID" select="a:ReferenceID"/>
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="$referenceID"/>
</xsl:call-template>
<code code="371538006" codeSystem="2.16.840.1.113883.6.96" displayName="Advance directive"/>
<xsl:variable name="reference" select="/a:ContinuityOfCareRecord/a:References/a:Reference[a:ReferenceObjectID=$referenceID]"/>
<text>
<xsl:attribute name="mediaType">
<xsl:value-of select="$reference/a:Type/a:Text"/>
</xsl:attribute>
<reference>
<xsl:value-of select="$reference/a:Location[1]/a:Description/a:Text"/>
</reference>
</text>
</externalDocument>
</reference>
</xsl:if>
</observation>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:FunctionalStatus">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.5"/>
<code code="47420-5" codeSystem="2.16.840.1.113883.6.1"/>
<title>Functional Status</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Status</th>
<th>Source</th>
</tr>
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:apply-templates select="a:Description/a:Code"/>
</td>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</tbody>
</table>
</text>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Problems">
<component>
<section>
<templateId root="2.16.840.1.113883.3.88.11.83.103" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.6" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.11" assigningAuthorityName="HL7 CCD"/>
<code code="11450-4" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Problem list"/>
<title>Problems</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Problems/a:Problem">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<table>
<tbody>
<xsl:apply-templates select="a:DateTime"/>
</tbody>
</table>
</td>
<td>
<xsl:apply-templates select="a:Description/a:Code"/>
</td>
<td>
<xsl:attribute name="ID">
<xsl:value-of select="a:CCRDataObjectID"></xsl:value-of>
</xsl:attribute>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Problems/a:Problem">
<entry typeCode="DRIV">
<act classCode="ACT" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.27"/>
<!-- Problem act template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code nullFlavor="NA"/>
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:Source/a:Actor"/>
</xsl:call-template>
<entryRelationship typeCode="SUBJ">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.28" assigningAuthorityName="CCD"/>
<!--Problem observation template-->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
<xsl:with-param name="suffix"></xsl:with-param>
</xsl:call-template>
<code code="55607006" displayName="Problem" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED-CT"/>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code="completed"/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
</xsl:call-template>
<xsl:call-template name="ccdStatus">
<xsl:with-param name="ccrStatus" select="a:Status"/>
</xsl:call-template>
</observation>
</entryRelationship>
</act>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Procedures">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.12"/>
<code code="47519-4" codeSystem="2.16.840.1.113883.6.1"/>
<title>Procedures</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Location</th>
<th>Substance</th>
<th>Method</th>
<th>Position</th>
<th>Site</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Procedures/a:Procedure">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<table>
<tbody>
<xsl:apply-templates select="a:DateTime"/>
</tbody>
</table>
</td>
<td>
<xsl:apply-templates select="a:Description/a:Code"/>
</td>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:for-each select="a:Locations/a:Location">
<xsl:value-of select="a:Description/a:Text"/>
<xsl:if test="a:Actor">
(<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Actor/a:ActorID"/>
</xsl:call-template>
<xsl:if test="a:Actor/a:ActorRole/a:Text">
<xsl:text xml:space="preserve"> - </xsl:text><xsl:value-of select="a:ActorRole/a:Text"/>)
</xsl:if>
</xsl:if>)
<xsl:if test="position() != last()">
<br/>
</xsl:if>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Substance">
<xsl:value-of select="a:Text"/>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:Method/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Position/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Site/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Procedures/a:Procedure">
<entry typeCode="DRIV">
<procedure classCode="PROC" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.17" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.29" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.19" assigningAuthorityName="IHE PCC"/>
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<!-- <code> -->
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<xsl:call-template name="ccdStatusProcedure">
<xsl:with-param name="status" select="a:Status"/>
</xsl:call-template>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<xsl:if test="a:Method">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Method"/>
<xsl:with-param name="nodeName" select="'approachSiteCode'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="a:Site">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Site"/>
<xsl:with-param name="nodeName" select="'targetSiteCode'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="a:Practitioners/a:Practitioner">
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:Practitioners/a:Practitioner[1]"/>
</xsl:call-template>
</xsl:if>
</procedure>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Medications">
<component>
<section>
<templateId root="2.16.840.1.113883.3.88.11.83.112" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.19" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.8" assigningAuthorityName="HL7 CCD"/>
<!--Medications section template-->
<code code="10160-0" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="History of medication use"/>
<title>Medications</title>
<text>
<table>
<tbody>
<tr>
<th>Medication</th>
<th>Date</th>
<th>Status</th>
<th>Form</th>
<th>Strength</th>
<th>Quantity</th>
<th>SIG</th>
<th>Indications</th>
<th>Instruction</th>
<th>Refills</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Medications/a:Medication">
<tr>
<td>
<xsl:value-of select="a:Product/a:ProductName/a:Text"/>
<xsl:if test="a:Product/a:BrandName">
<xsl:text xml:space="preserve"> </xsl:text>(<xsl:value-of select="a:Product/a:BrandName/a:Text"/>)
</xsl:if>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Product/a:Form/a:Text"/>
</td>
<td>
<xsl:for-each select="a:Product/a:Strength">
<xsl:if test="position() > 1">
<xsl:text>/</xsl:text>
</xsl:if>
<xsl:value-of select="a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Units/a:Unit"/>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:Quantity/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Quantity/a:Units/a:Unit"/>
</td>
<td>
<xsl:for-each select="a:Directions/a:Direction">
<xsl:choose>
<xsl:when test="a:Description/a:Text">
<xsl:value-of select="a:Description/a:Text"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="a:Dose/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Dose/a:Units/a:Unit"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Route/a:Text"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Frequency/a:Value"/>
<xsl:if test="a:Duration">
<xsl:text xml:space="preserve">( </xsl:text>for <xsl:value-of select="a:Duration/a:Value"/><xsl:text xml:space="preserve"> </xsl:text><xsl:value-of select="a:Duration/a:Units/a:Unit"/><xsl:text xml:space="preserve"> )</xsl:text>
</xsl:if>
<xsl:if test="a:MultipleDirectionModifier/a:ObjectAttribute">
<xsl:for-each select="a:MultipleDirectionModifier/a:ObjectAttribute">
<xsl:value-of select="a:Attribute"/>
<br/>
<xsl:value-of select="a:AttributeValue/a:Value"/>
</xsl:for-each>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Directions/a:Direction[1]/a:Indication">
<xsl:call-template name="problemDescription">
<xsl:with-param name="objID" select="a:InternalCCRLink/a:LinkID"/>
</xsl:call-template>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:PatientInstructions/a:Instruction">
<xsl:value-of select="a:Text"/>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Refills/a:Refill">
<xsl:value-of select="a:Number"/>
<xsl:text xml:space="preserve"> </xsl:text>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Medications/a:Medication">
<entry typeCode="DRIV">
<substanceAdministration classCode="SBADM" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.24" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.1" assigningAuthorityName="IHE PCC"/>
<!--Medication activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<statusCode code='completed'/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
<xsl:with-param name="type" select="'IVL_TS'"/>
</xsl:call-template>
<xsl:call-template name="ccdMedicationFrequency">
<xsl:with-param name="frequency" select="a:Directions/a:Direction/a:Frequency"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Route"/>
<xsl:with-param name="nodeName" select="'routeCode'"/>
<xsl:with-param name="domain" select="'RouteOfAdministration'"/>
</xsl:call-template>
<xsl:if test="a:Directions/a:Direction/a:Dose">
<doseQuantity>
<low>
<xsl:attribute name="value">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Value"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Unit"></xsl:value-of>
</xsl:attribute>
</low>
<high>
<xsl:attribute name="value">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Value"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Unit"></xsl:value-of>
</xsl:attribute>
</high>
</doseQuantity>
</xsl:if>
<consumable>
<manufacturedProduct>
<templateId root="2.16.840.1.113883.3.88.11.83.8.2" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.53" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2" assigningAuthorityName="IHE PCC"/>
<!-- Product template -->
<manufacturedMaterial>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Product/a:ProductName"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<name>
<xsl:value-of select="a:Product/a:BrandName/a:Text"/>
</name>
</manufacturedMaterial>
</manufacturedProduct>
</consumable>
</substanceAdministration>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Immunizations">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.6"/>
<code code="11369-6" codeSystem="2.16.840.1.113883.6.1"/>
<title>Immunizations</title>
<text>
<table>
<tbody>
<tr>
<th>Code</th>
<th>Vaccine</th>
<th>Date</th>
<th>Route</th>
<th>Site</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Immunizations/a:Immunization">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:apply-templates select="a:Product/a:ProductName/a:Code"/>
</td>
<td>
<xsl:value-of select="a:Product/a:ProductName/a:Text"/>
<xsl:if test="a:Product/a:Form">
<xsl:text xml:space="preserve"> </xsl:text>(<xsl:value-of select="a:Product/a:Form/a:Text"/>)
</xsl:if>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:value-of select="a:Directions/a:Direction/a:Route/a:Text"/>
</td>
<td>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
<xsl:text>:Site</xsl:text>
</xsl:attribute>
<xsl:value-of select="a:Directions/a:Direction/a:Site/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Immunizations/a:Immunization">
<entry typeCode="DRIV">
<substanceAdministration classCode="SBADM" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.24" assigningAuthorityName="CCD"/>
<templateId root="2.16.840.1.113883.3.88.11.83.13" assigningAuthorityName="HITSP C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.12" assigningAuthorityName="IHE PCC"/>
<!-- Medication activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code code="IMMUNIZ" codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code='completed'/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
<xsl:with-param name="type" select="'IVL_TS'"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Route"/>
<xsl:with-param name="nodeName" select="'routeCode'"/>
<xsl:with-param name="domain" select="'RouteOfAdministration'"/>
</xsl:call-template>
<xsl:if test="a:Directions/a:Direction/a:Site">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Site"/>
<xsl:with-param name="nodeName" select="'approachSiteCode'"/>
<xsl:with-param name="originalTextReference">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
<xsl:text>:Site</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<consumable>
<manufacturedProduct>
<templateId root="2.16.840.1.113883.3.88.11.83.8.2" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.53" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2" assigningAuthorityName="IHE PCC"/>
<!-- Product template -->
<manufacturedMaterial>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Product/a:ProductName"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<name>
<xsl:value-of select="a:Product/a:BrandName/a:Text"/>
</name>
</manufacturedMaterial>
</manufacturedProduct>
</consumable>
</substanceAdministration>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:VitalSigns">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.16"/>
<code code="8716-3" codeSystem="2.16.840.1.113883.6.1"/>
<title>Vital Signs</title>
<text>
<table>
<tbody>
<tr>
<th>Vital Sign</th>
<th>Date</th>
<th>Result</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:VitalSigns/a:Result">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:for-each select="a:Test">
<xsl:value-of select="a:Description/a:Text"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:TestResult/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:TestResult/a:Units/a:Unit"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Flag/a:Text"/>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:VitalSigns/a:Result">
<entry typeCode="DRIV">
<organizer classCode="CLUSTER" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.32" assigningAuthorityName="CCD"/>
<templateId root="2.16.840.1.113883.10.20.1.35" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.13.1" assigningAuthorityName="IHE PCC"/>
<!-- Vital signs organizer template -->
<xsl:variable name="testDate" select="a:DateTime"/>
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code code="46680005" codeSystem="2.16.840.1.113883.6.96" displayName="Vital signs" codeSystemName="SNOMED CT"/>
<statusCode code="completed"/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="$testDate"/>
</xsl:call-template>
<xsl:call-template name="ccdObservation">
<xsl:with-param name="ccrTestNode" select="a:Test[1]"/>
<xsl:with-param name="testDate" select="$testDate"/>
</xsl:call-template>
</organizer>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Encounters">
<component>
<section>
<templateId root="2.16.840.1.113883.3.88.11.83.127" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.5.3.3" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.3" assigningAuthorityName="HL7 CCD"/>
<!--Encounters section template-->
<code code="46240-8" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="History of encounters"/>
<title>Encounters</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Location</th>
<th>Status</th>
<th>Practitioner</th>
<th>Description</th>
<th>Indications</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Encounters/a:Encounter">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:for-each select="a:Locations/a:Location">
<xsl:value-of select="a:Description/a:Text"/>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Actor/a:ActorID"/>
</xsl:call-template>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:for-each select="a:Practitioners/a:Practitioner">
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:ActorID"/>
</xsl:call-template>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:for-each select="a:Indications/a:Indication">
<xsl:call-template name="problemDescription">
<xsl:with-param name="objID" select="a:InternalCCRLink/a:LinkID"/>
</xsl:call-template>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Encounters/a:Encounter">
<entry typeCode="DRIV">
<encounter classCode="ENC" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.16" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.21" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.14" assigningAuthorityName="IHE PCC"/>
<!-- Encounter activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<xsl:if test="a:Practitioners[1]/a:Practitioner">
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:Practitioners/a:Practitioner[1]"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="a:Locations[1]/a:Location">
<participant typeCode="LOC">
<templateId root="2.16.840.1.113883.10.20.1.45"/>
<!-- Location participation template -->
<xsl:choose>
<xsl:when test="a:Locations[1]/a:Location/a:ActorID">
<xsl:call-template name="ccdParticipantRoleActor">
<xsl:with-param name="ccrActorObjectID" select="a:Locations[1]/a:Location/a:ActorID"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ccdParticipantRoleCodedDescription">
<xsl:with-param name="ccrCodedDescription" select="a:Locations[1]/a:Location/a:Description"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</participant>
</xsl:if>
</encounter>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:SocialHistory">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.15"/>
<code code="29762-2" codeSystem="2.16.840.1.113883.6.1"/>
<title>Social History</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:apply-templates select="a:Description/a:Code"/>
</td>
<td>
<xsl:value-of select="a:Description/a:Text" disable-output-escaping="yes"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement">
<entry typeCode="DRIV">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.19" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.33" assigningAuthorityName="CCD"/>
<!-- Social history observation template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<statusCode code="completed"/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<entryRelationship typeCode="SUBJ" inversionInd="true">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.41"/>
<!-- Episode observation template -->
<statusCode code="completed"/>
<entryRelationship typeCode="SAS">
<observation classCode="OBS" moodCode="EVN">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
</observation>
</entryRelationship>
</observation>
</entryRelationship>
</observation>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:FamilyHistory">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.4"/>
<code code="10157-6" codeSystem="2.16.840.1.113883.6.1"/>
<title>Family History</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Code</th>
<th>Description</th>
<th>Relationship(s)</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:FamilyHistory/a:FamilyProblemHistory">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:apply-templates select="a:Problem/a:Description/a:Code"/>
</td>
<td>
<xsl:for-each select="a:Problem">
<xsl:value-of select="a:Description/a:Text"/>
<br/>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:FamilyMember/a:ActorRole/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Results/a:Result">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.14"/>
<code code="30954-2" codeSystem="2.16.840.1.113883.6.1"/>
<title>Results</title>
<text>
<table>
<tbody>
<tr>
<th>Test</th>
<th>Date</th>
<th>Result</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Results/a:Result">
<tr>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:for-each select="a:Test[a:TestResult/a:Value!='']">
<div>
<xsl:attribute name="id">
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
<xsl:value-of select="a:Description/a:Text"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:TestResult/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:TestResult/a:Units/a:Unit"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:Flag/a:Text"/>
<br/>
</div>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Results/a:Result">
<entry typeCode="DRIV">
<xsl:variable name="testDate" select="a:DateTime"/>
<xsl:choose>
<xsl:when test="count(a:Test)>1">
<organizer classCode="BATTERY" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.32"/>
<!--Result organizer template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<!-- <code> -->
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<statusCode code="completed"/>
<!-- <effectiveTime> -->
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="$testDate"/>
</xsl:call-template>
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:Source/a:Actor"/>
</xsl:call-template>
<xsl:for-each select="a:Test">
<xsl:call-template name="ccdObservation">
<xsl:with-param name="ccrTestNode" select="."/>
<xsl:with-param name="testDate" select="$testDate"/>
</xsl:call-template>
</xsl:for-each>
</organizer>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ccdObservation">
<xsl:with-param name="ccrTestNode" select="a:Test[1]"/>
<xsl:with-param name="testDate" select="$testDate"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Payers">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.9"/>
<code code="48768-6" codeSystem="2.16.840.1.113883.6.1"/>
<title>Insurance</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Identification Numbers</th>
<th>Payment Provider</th>
<th>Subscriber</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Payers/a:Payer">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:for-each select="a:IDs">
<xsl:value-of select="a:Type/a:Text"/>:<xsl:text xml:space="preserve"> </xsl:text><xsl:value-of select="a:ID"/><br/>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:PaymentProvider/a:ActorID"/>
</xsl:call-template>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Subscriber/a:ActorID"/>
</xsl:call-template>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Payers/a:Payer">
<entry typeCode="DRIV">
<act classCode="ACT" moodCode="DEF">
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.17" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.20" assigningAuthorityName="CCD"/>
<!-- Coverage entry template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code code="48768-6" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Payment sources"/>
<statusCode code="completed"/>
<entryRelationship typeCode="COMP">
<act classCode="ACT" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.5" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.26" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.18" assigningAuthorityName="IHE PCC"/>
<!--Insurance provider template -->
<id>
<xsl:attribute name="root">
<xsl:value-of select="a:IDs[1]/a:ID"/>
</xsl:attribute>
<xsl:attribute name="extension">
<xsl:value-of select="a:IDs[1]/a:Type/a:Text"/>
</xsl:attribute>
</id>
<!-- <code> -->
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<statusCode code="completed"/>
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:PaymentProvider"/>
</xsl:call-template>
<participant typeCode="HLD">
<xsl:call-template name="ccdParticipantRoleActor">
<xsl:with-param name="ccrActorReference" select="a:Subscriber"/>
</xsl:call-template>
</participant>
</act>
</entryRelationship>
</act>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare">
<component>
<section>
<templateId root="2.16.840.1.113883.10.20.1.10"/>
<code code="18776-5" codeSystem="2.16.840.1.113883.6.1"/>
<title>Plan Of Care</title>
<text>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Treatment Recommendation']">
<xsl:text>Plan Of Care Recommendations</xsl:text>
<br/>
<table>
<tbody>
<tr>
<th>Description</th>
<th>Recommendation</th>
<th>Goal</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Treatment Recommendation']">
<tr>
<td>
<xsl:value-of select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Description/a:Text" disable-output-escaping="yes"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Goals/a:Goal/a:Description/a:Text" disable-output-escaping="yes"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Order']">
<xsl:text>Plan Of Care Orders</xsl:text>
<br/>
<table>
<tbody>
<tr>
<th>Descripion</th>
<th>Plan Status</th>
<th>Type</th>
<th>Date</th>
<th>Procedure</th>
<th>Schedule</th>
<th>Location</th>
<th>Substance</th>
<th>Method</th>
<th>Position</th>
<th>Site</th>
<th>Status</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Order']">
<tr>
<td>
<xsl:apply-templates select="a:Description/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Status/a:Text"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:OrderRequest/a:Procedures/a:Procedure/a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<xsl:apply-templates select="a:OrderRequest/a:Procedures/a:Procedure/a:Description/a:Text"/>
</td>
<td>
<xsl:text xml:space="preserve">Every </xsl:text>
<xsl:apply-templates select="a:OrderRequest/a:Procedures/a:Procedure/a:Interval/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Interval/a:Units/a:Unit"/>
<xsl:text xml:space="preserve"> for </xsl:text>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Duration/a:Value"/>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Duration/a:Units/a:Unit"/>
</td>
<td>
<xsl:for-each select="a:OrderRequest/a:Procedures/a:Procedure/a:Locations">
<xsl:value-of select="a:Location/a:Description/a:Text"/>
<xsl:if test="position() != last()">
<br/>
</xsl:if>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Substance/a:Text"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Method/a:Text"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Position/a:Text"/>
</td>
<td>
<xsl:value-of select="a:OrderRequest/a:Procedures/a:Procedure/a:Site/a:Text"/>
</td>
<td/>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:if>
</text>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan/a:OrderRequest/a:Procedures/a:Procedure">
<entry typeCode="DRIV">
<observation classCode="OBS" moodCode="RQO">
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.20.3.1"/>
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<!-- <code> -->
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<statusCode code="new"/>
<effectiveTime>
<xsl:choose>
<xsl:when test="a:DateTime">
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="a:Interval">
<xsl:attribute name="xsi:type">PIVL_TS</xsl:attribute>
<xsl:attribute name="operator">A</xsl:attribute>
<xsl:attribute name="institutionSpecified">true</xsl:attribute>
<period>
<xsl:attribute name="value">
<xsl:value-of select="a:Interval/a:Value"/>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="a:Interval/a:Units/a:Unit"/>
</xsl:attribute>
</period>
</xsl:when>
</xsl:choose>
</effectiveTime>
</observation>
</entry>
</xsl:for-each>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan/a:OrderRequest/a:Medications/a:Medication">
<entry typeCode="DRIV">
<substanceAdministration classCode="SBADM" moodCode="INT">
<templateId root="2.16.840.1.113883.10.20.1.24" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.1" assigningAuthorityName="IHE PCC"/>
<!--Medication activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<statusCode code='completed'/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
<xsl:with-param name="type" select="'IVL_TS'"/>
</xsl:call-template>
<xsl:call-template name="ccdMedicationFrequency">
<xsl:with-param name="frequency" select="a:Directions/a:Direction/a:Frequency"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Route"/>
<xsl:with-param name="nodeName" select="'routeCode'"/>
<xsl:with-param name="domain" select="'RouteOfAdministration'"/>
</xsl:call-template>
<xsl:if test="a:Directions/a:Direction/a:Dose">
<doseQuantity>
<low>
<xsl:attribute name="value">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Value"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Unit"></xsl:value-of>
</xsl:attribute>
</low>
<high>
<xsl:attribute name="value">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Value"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="a:Directions/a:Direction/a:Dose/a:Unit"></xsl:value-of>
</xsl:attribute>
</high>
</doseQuantity>
</xsl:if>
<consumable>
<manufacturedProduct>
<templateId root="2.16.840.1.113883.3.88.11.83.8.2" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.53" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2" assigningAuthorityName="IHE PCC"/>
<!-- Product template -->
<manufacturedMaterial>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Product/a:ProductName"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<name>
<xsl:value-of select="a:Product/a:BrandName/a:Text"/>
</name>
</manufacturedMaterial>
</manufacturedProduct>
</consumable>
</substanceAdministration>
</entry>
</xsl:for-each>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan/a:OrderRequest/a:Immunizations/a:Immunization">
<entry typeCode="DRIV">
<substanceAdministration classCode="SBADM" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.24" assigningAuthorityName="CCD"/>
<templateId root="2.16.840.1.113883.3.88.11.83.13" assigningAuthorityName="HITSP C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.12" assigningAuthorityName="IHE PCC"/>
<!-- Medication activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<code code="IMMUNIZ" codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code='completed'/>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
<xsl:with-param name="type" select="'IVL_TS'"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Route"/>
<xsl:with-param name="nodeName" select="'routeCode'"/>
<xsl:with-param name="domain" select="'RouteOfAdministration'"/>
</xsl:call-template>
<xsl:if test="a:Directions/a:Direction/a:Site">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Directions/a:Direction/a:Site"/>
<xsl:with-param name="nodeName" select="'approachSiteCode'"/>
<xsl:with-param name="originalTextReference">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
<xsl:text>:Site</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<consumable>
<manufacturedProduct>
<templateId root="2.16.840.1.113883.3.88.11.83.8.2" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.53" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2" assigningAuthorityName="IHE PCC"/>
<!-- Product template -->
<manufacturedMaterial>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Product/a:ProductName"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<name>
<xsl:value-of select="a:Product/a:BrandName/a:Text"/>
</name>
</manufacturedMaterial>
</manufacturedProduct>
</consumable>
</substanceAdministration>
</entry>
</xsl:for-each>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan/a:OrderRequest/a:Encounters/a:Encounter">
<entry typeCode="DRIV">
<encounter classCode="ENC" moodCode="INT">
<templateId root="2.16.840.1.113883.3.88.11.83.16" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.21" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.14" assigningAuthorityName="IHE PCC"/>
<!-- Encounter activity template -->
<!-- <id> -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="a:CCRDataObjectID"/>
</xsl:call-template>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="a:DateTime"/>
</xsl:call-template>
<xsl:if test="a:Practitioners[1]/a:Practitioner">
<xsl:call-template name="ccdPerformer">
<xsl:with-param name="ccrActorReference" select="a:Practitioners/a:Practitioner[1]"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="a:Locations[1]/a:Location">
<participant typeCode="LOC">
<templateId root="2.16.840.1.113883.10.20.1.45"/>
<!-- Location participation template -->
<xsl:choose>
<xsl:when test="a:Locations[1]/a:Location/a:ActorID">
<xsl:call-template name="ccdParticipantRoleActor">
<xsl:with-param name="ccrActorObjectID" select="a:Locations[1]/a:Location/a:ActorID"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ccdParticipantRoleCodedDescription">
<xsl:with-param name="ccrCodedDescription" select="a:Locations[1]/a:Location/a:Description"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</participant>
</xsl:if>
</encounter>
</entry>
</xsl:for-each>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:HealthCareProviders">
<component>
<section>
<title>Health Care Providers</title>
<text>
<table>
<tbody>
<tr>
<th>Role</th>
<th>Name</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:HealthCareProviders/a:Provider">
<tr>
<td>
<xsl:value-of select="a:ActorRole/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
</section>
</component>
</xsl:if>
<!--
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:SupportProviders">
<component>
<section>
<title>Support Providers</title>
<text>
<table>
<tbody>
<tr>
<th>Role</th>
<th>Name</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Support/a:SupportProvider">
<tr>
<td>
<xsl:value-of select="a:ActorRole/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
</section>
</component>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:References">
<component>
<section>
<title>References</title>
<text>
<table>
<tbody>
<tr>
<th>Type</th>
<th>Date</th>
<th>Description</th>
<th>Location</th>
<th>Source</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:References/a:Reference">
<tr>
<td>
<xsl:value-of select="a:Type/a:Text"/>
</td>
<td>
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="a:DateTime/a:ExactDateTime"/>
</xsl:call-template>
</td>
<td>
<strong class="clinical">
<xsl:value-of select="a:Description/a:Text"/>
</strong>
</td>
<td>
<xsl:value-of select="a:Locations/a:Location/a:Description/a:Text"/>
</td>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</text>
</section>
</component>
</xsl:if>
-->
<!-- -->
<component>
<section>
<title>Additional Information About People &amp; Organizations</title>
<text>
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:Person]">
<table>
<tbody>
<tr>
<th>Name</th>
<th>Specialty</th>
<th>Relation</th>
<th>Identification Numbers</th>
<th>Phone</th>
<th>Address/ E-mail</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Actors/a:Actor">
<xsl:sort select="a:Person/a:Name/a:DisplayName|a:Person/a:Name/a:CurrentName/a:Family" data-type="text" order="ascending"/>
<xsl:if test="a:Person">
<tr>
<td>
<xsl:call-template name="actorName">
<xsl:with-param name="objID" select="a:ActorObjectID"/>
</xsl:call-template>
</td>
<td>
<xsl:value-of select="a:Specialty/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Relation/a:Text"/>
</td>
<td>
<xsl:for-each select="a:IDs">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:ID"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Telephone">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Address">
<xsl:if test="a:Type">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>:</xsl:text>
<br/>
</xsl:if>
<xsl:if test="a:Line1">
<xsl:value-of select="a:Line1"/>
<br/>
</xsl:if>
<xsl:if test="a:Line2">
<xsl:value-of select="a:Line2"/>
<br/>
</xsl:if>
<xsl:if test="a:City">
<xsl:value-of select="a:City"/>
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="a:State"/>
<xsl:value-of select="a:PostalCode"/>
<br/>
</xsl:for-each>
<xsl:for-each select="a:EMail">
<br/>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</tbody>
</table>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:Organization]">
<table>
<tbody>
<tr>
<th>Name</th>
<th>Specialty</th>
<th>Relation</th>
<th>Identification Numbers</th>
<th>Phone</th>
<th>Address/ E-mail</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Actors/a:Actor">
<xsl:sort select="a:Organization/a:Name" data-type="text" order="ascending"/>
<xsl:if test="a:Organization">
<tr>
<td>
<xsl:value-of select="a:Organization/a:Name"/>
</td>
<td>
<xsl:value-of select="a:Specialty/a:Text"/>
</td>
<td>
<xsl:value-of select="a:Relation/a:Text"/>
</td>
<td>
<xsl:for-each select="a:IDs">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:ID"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Telephone">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Address">
<xsl:if test="a:Type">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>:</xsl:text>
<br/>
</xsl:if>
<xsl:if test="a:Line1">
<xsl:value-of select="a:Line1"/>
<br/>
</xsl:if>
<xsl:if test="a:Line2">
<xsl:value-of select="a:Line2"/>
<br/>
</xsl:if>
<xsl:if test="a:City">
<xsl:value-of select="a:City"/>
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="a:State"/>
<xsl:value-of select="a:PostalCode"/>
<br/>
</xsl:for-each>
<xsl:for-each select="a:EMail">
<br/>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</tbody>
</table>
</xsl:if>
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:InformationSystem]">
<table>
<tbody>
<tr>
<th>Name</th>
<th>Type</th>
<th>Version</th>
<th>Identification Numbers</th>
<th>Phone</th>
<th>Address/ E-mail</th>
</tr>
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Actors/a:Actor">
<xsl:sort select="a:InformationSystem/a:Name" data-type="text" order="ascending"/>
<xsl:if test="a:InformationSystem">
<tr>
<td>
<xsl:value-of select="a:InformationSystem/a:Name"/>
</td>
<td>
<xsl:value-of select="a:InformationSystem/a:Type"/>
</td>
<td>
<xsl:value-of select="a:InformationSystem/a:Version"/>
</td>
<td>
<xsl:for-each select="a:IDs">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:ID"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Telephone">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="a:Address">
<xsl:if test="Type">
<xsl:value-of select="a:Type/a:Text"/>
<xsl:text>:</xsl:text>
<br/>
</xsl:if>
<xsl:if test="a:Line1">
<xsl:value-of select="a:Line1"/>
<br/>
</xsl:if>
<xsl:if test="a:Line2">
<xsl:value-of select="a:Line2"/>
<br/>
</xsl:if>
<xsl:if test="a:City">
<xsl:value-of select="a:City"/>
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="a:State"/>
<xsl:value-of select="a:PostalCode"/>
<br/>
</xsl:for-each>
<xsl:for-each select="a:EMail">
<br/>
<xsl:value-of select="a:Value"/>
</xsl:for-each>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</tbody>
</table>
</xsl:if>
</text>
</section>
</component>
<!-- -->
</structuredBody>
</component>
</ClinicalDocument>
</xsl:template>
<xsl:template name="ccdAssignedEntity">
<xsl:param name="ccrActorObjectID"/>
<xsl:variable name="CCRActor" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
<assignedEntity>
<xsl:call-template name="ccdEntityID">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdAddress">
<xsl:with-param name="CCRActorAddress" select="$CCRActor/a:Address"/>
</xsl:call-template>
<xsl:call-template name="ccdTelecom">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:if test="$CCRActor/a:Person">
<xsl:call-template name="ccdPerson">
<xsl:with-param name="CCRActorPerson" select="$CCRActor/a:Person"/>
<xsl:with-param name="personNodeName" select="'assignedPerson'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$CCRActor/a:InternalCCRLink[a:LinkRelationship='Organization']">
<xsl:call-template name="ccdOrganization">
<xsl:with-param name="ccrActorObjectID" select="$CCRActor/a:InternalCCRLink[a:LinkRelationship='Organization']/a:LinkID"/>
<xsl:with-param name="organizationNodeName" select="'representedOrganization'"/>
</xsl:call-template>
</xsl:if>
</assignedEntity>
</xsl:template>
<xsl:template name="ccdPatient">
<xsl:param name="CCRActorPerson"/>
<patient>
<xsl:call-template name="ccdPersonName">
<xsl:with-param name="CCRActorName" select="$CCRActorPerson/a:Name"/>
</xsl:call-template>
<xsl:if test="$CCRActorPerson/a:Gender">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$CCRActorPerson/a:Gender"/>
<xsl:with-param name="domain" select="'AdministrativeGender'"/>
<xsl:with-param name="nodeName" select="'administrativeGenderCode'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$CCRActorPerson/a:DateOfBirth">
<birthTime>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="$CCRActorPerson/a:DateOfBirth/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMddhhmmss</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</birthTime>
</xsl:if>
<xsl:if test="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Marital Status']">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Marital Status']/a:Description"/>
<xsl:with-param name="domain" select="'MaritalStatus'"/>
<xsl:with-param name="nodeName" select="'maritalStatusCode'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Language']">
<languageCommunication>
<templateId root="2.16.840.1.113883.3.88.11.83.2" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.2.1" assigningAuthorityName="IHE/PCC"/>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Language']/a:Description"></xsl:with-param>
<xsl:with-param name="domain" select="'HumanLanguage'"/>
<xsl:with-param name="nodeName" select="'languageCode'"/>
</xsl:call-template>
</languageCommunication>
</xsl:if>
</patient>
</xsl:template>
<xsl:template name="ccdPerformer">
<xsl:param name="ccrActorReference"/>
<performer typeCode="PRF">
<xsl:if test="$ccrActorReference/a:ActorRole">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$ccrActorReference/a:ActorRole"/>
<xsl:with-param name="nodeName" select="'functionCode'"/>
</xsl:call-template>
</xsl:if>
<xsl:call-template name="ccdAssignedEntity">
<xsl:with-param name="ccrActorObjectID" select="$ccrActorReference/a:ActorID"/>
</xsl:call-template>
</performer>
</xsl:template>
<xsl:template name="ccdPerson">
<xsl:param name="CCRActorPerson"/>
<xsl:param name="personNodeName">assignedPerson</xsl:param>
<xsl:element name="{$personNodeName}">
<xsl:call-template name="ccdPersonName">
<xsl:with-param name="CCRActorName" select="$CCRActorPerson/a:Name"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="ccdPersonName">
<xsl:param name="CCRActorName"/>
<name>
<xsl:if test="$CCRActorName/a:CurrentName/a:Title">
<prefix>
<xsl:value-of select="$CCRActorName/a:CurrentName/a:Title"/>
</prefix>
</xsl:if>
<xsl:if test="$CCRActorName/a:CurrentName/a:Given">
<given>
<xsl:value-of select="$CCRActorName/a:CurrentName/a:Given"/>
</given>
</xsl:if>
<xsl:if test="$CCRActorName/a:CurrentName/a:Middle">
<given>
<xsl:value-of select="$CCRActorName/a:CurrentName/a:Middle"/>
</given>
</xsl:if>
<xsl:if test="$CCRActorName/a:CurrentName/a:Family">
<family>
<xsl:value-of select="$CCRActorName/a:CurrentName/a:Family"/>
</family>
</xsl:if>
<xsl:if test="$CCRActorName/a:CurrentName/a:Suffix">
<suffix>
<xsl:value-of select="$CCRActorName/a:CurrentName/a:Suffix"/>
</suffix>
</xsl:if>
</name>
</xsl:template>
<xsl:template name="ccdOrganization">
<xsl:param name="ccrActorObjectID"/>
<xsl:param name="organizationNodeName"/>
<xsl:variable name="CCRActor" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
<xsl:element name="{$organizationNodeName}">
<xsl:call-template name="ccdEntityID">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdTelecom">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdAddress">
<xsl:with-param name="CCRActorAddress" select="$CCRActor/a:Address[1]"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="ccdPatientRole">
<xsl:param name="ccrActorObjectID"/>
<xsl:variable name="CCRActor" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
<xsl:call-template name="ccdEntityID">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdAddress">
<xsl:with-param name="CCRActorAddress" select="$CCRActor/a:Address[1]"/>
</xsl:call-template>
<xsl:call-template name="ccdTelecom">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdPatient">
<xsl:with-param name="CCRActorPerson" select="$CCRActor/a:Person"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="ccdAssignedAuthor">
<xsl:param name="ccrActorObjectID"/>
<assignedAuthor>
<xsl:variable name="CCRActor" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
<xsl:call-template name="ccdEntityID">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdAddress">
<xsl:with-param name="CCRActorAddress" select="$CCRActor/a:Address[1]"/>
</xsl:call-template>
<xsl:call-template name="ccdTelecom">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdPerson">
<xsl:with-param name="CCRActorPerson" select="$CCRActor/a:Person"/>
</xsl:call-template>
<xsl:if test="$CCRActor/a:InternalCCRLink[a:LinkRelationship='Organization']">
<representedOrganization>
<xsl:call-template name="ccdOrganization">
<xsl:with-param name="ccrActorObjectID" select="$CCRActor/a:InternalCCRLink[a:LinkRelationship='Organization']/a:LinkID"/>
</xsl:call-template>
</representedOrganization>
</xsl:if>
</assignedAuthor>
</xsl:template>
<xsl:template name="ccdParticipantRoleActor">
<xsl:param name="ccrActorObjectID"/>
<xsl:variable name="CCRActor" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
<xsl:call-template name="ccdEntityID">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:call-template name="ccdAddress">
<xsl:with-param name="CCRActorAddress" select="$CCRActor/a:Address[1]"/>
</xsl:call-template>
<xsl:call-template name="ccdTelecom">
<xsl:with-param name="CCRActor" select="$CCRActor"/>
</xsl:call-template>
<xsl:if test="$CCRActor/a:Organization/a:Name">
<playingEntity classCode="PLC">
<name>
<xsl:value-of select="$CCRActor/a:Organization/a:Name"/>
</name>
</playingEntity>
</xsl:if>
</xsl:template>
<xsl:template name="ccdParticipantRoleCodedDescription">
<xsl:param name="ccrCodedDescription"/>
<participantRole classCode="MANU">
<!--Product Detail-->
<playingEntity classCode="MMAT">
<xsl:if test="$ccrCodedDescription/a:Code">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$ccrCodedDescription"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
</xsl:if>
<name>
<xsl:value-of select="$ccrCodedDescription/a:Text"/>
</name>
</playingEntity>
</participantRole>
</xsl:template>
<xsl:template name="ccdEntityID">
<xsl:param name="CCRActor"/>
<id>
<xsl:choose>
<xsl:when test="$CCRActor/a:IDs">
<xsl:attribute name="extension">
<xsl:value-of select="$CCRActor/a:IDs[1]/a:ID"/>
</xsl:attribute>
<xsl:attribute name="root">
<xsl:value-of select="$CCRActor/a:IDs[1]/a:Type/a:Text"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="extension">
<xsl:value-of select="$CCRActor/a:ActorObjectID"/>
</xsl:attribute>
<xsl:attribute name="root">
<xsl:text>CCRActorID</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</id>
<xsl:if test="$CCRActor/a:Organization">
<name><xsl:value-of select="$CCRActor/a:Organization/a:Name"></xsl:value-of></name>
</xsl:if>
</xsl:template>
<xsl:template name="ccdAddress">
<xsl:param name="CCRActorAddress"/>
<addr>
<xsl:choose>
<xsl:when test="$CCRActorAddress">
<xsl:attribute name="use">
<xsl:call-template name="CDAVocabularyLookup">
<xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
<xsl:with-param name="ccrtext" select="$CCRActorAddress/a:Type/a:Text"/>
</xsl:call-template>
</xsl:attribute>
<streetAddressLine>
<xsl:value-of select="$CCRActorAddress/a:Line1"/>
</streetAddressLine>
<city>
<xsl:value-of select="$CCRActorAddress/a:City"/>
</city>
<state>
<xsl:value-of select="$CCRActorAddress/a:State"/>
</state>
<postalCode>
<xsl:value-of select="$CCRActorAddress/a:PostalCode"/>
</postalCode>
</xsl:when>
<xsl:otherwise>
<streetAddressLine/>
</xsl:otherwise>
</xsl:choose>
</addr>
</xsl:template>
<xsl:template name="ccdTelecom">
<xsl:param name="CCRActor"/>
<telecom>
<xsl:if test="$CCRActor/a:Telephone">
<xsl:attribute name="use">
<xsl:call-template name="CDAVocabularyLookup">
<xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
<xsl:with-param name="ccrtext" select="$CCRActor/a:Telephone/a:Type/a:Text"/>
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:text>tel:+1-</xsl:text>
<xsl:value-of select="$CCRActor/a:Telephone[1]/a:Value"/>
</xsl:attribute>
</xsl:if>
</telecom>
<xsl:if test="$CCRActor/a:Email">
<telecom>
<xsl:choose>
<xsl:when test="$CCRActor/a:Telephone">
<xsl:attribute name="use">
<xsl:call-template name="CDAVocabularyLookup">
<xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
<xsl:with-param name="ccrtext" select="$CCRActor/a:Telephone/a:Type/a:Text"/>
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:text>mailto:</xsl:text>
<xsl:value-of select="$CCRActor/a:Email[1]/a:Value"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="value">
<xsl:text>Unknown</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</telecom>
</xsl:if>
</xsl:template>
<xsl:template name="ccdID">
<xsl:param name="ccrObjectID"/>
<xsl:param name="suffix"/>
<id>
<xsl:attribute name="root">
<xsl:value-of select="$ccrObjectID"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="extension">CCRObjectID</xsl:attribute>
</id>
</xsl:template>
<xsl:template name="ccdCodedValue">
<xsl:param name="ccrCodedDescription"/>
<xsl:param name="type"/>
<xsl:param name="domain"/>
<xsl:param name="nodeName">value</xsl:param>
<xsl:param name="originalTextReference"/>
<xsl:element name="{$nodeName}">
<xsl:if test="$type">
<xsl:attribute name="xsi:type">
<xsl:value-of select="$type"/>
</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$ccrCodedDescription/a:Code">
<xsl:attribute name="displayName">
<xsl:value-of select="$ccrCodedDescription/a:Text"/>
</xsl:attribute>
<xsl:attribute name="code">
<xsl:value-of select="$ccrCodedDescription/a:Code/a:Value"/>
</xsl:attribute>
<xsl:attribute name="codeSystemName">
<xsl:value-of select="$ccrCodedDescription/a:Code/a:CodingSystem"/>
</xsl:attribute>
<xsl:attribute name="codeSystem">
<xsl:call-template name="HL7OIDLookup">
<xsl:with-param name="name" select="$ccrCodedDescription/a:Code/a:CodingSystem"/>
</xsl:call-template>
</xsl:attribute>
</xsl:when>
<xsl:when test="$domain">
<xsl:variable name="cdaCode">
<xsl:call-template name="CDAVocabularyLookup">
<xsl:with-param name="domain" select="$domain"/>
<xsl:with-param name="ccrtext" select="$ccrCodedDescription/a:Text"/>
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="displayName">
<xsl:call-template name="CDADisplayNameLookup">
<xsl:with-param name="domain" select="$domain"/>
<xsl:with-param name="cdacode" select="$cdaCode"/>
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="code">
<xsl:value-of select="$cdaCode"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="codeSystemName">
<xsl:call-template name="CDAVocabularyCodeSystemNameLookup">
<xsl:with-param name="domain" select="$domain"/>
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="codeSystemName">
<xsl:call-template name="CDAVocabularyCodeSystemLookup">
<xsl:with-param name="domain" select="$domain"/>
</xsl:call-template>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<originalText>
<xsl:value-of select="$ccrCodedDescription/a:Text"/>
<xsl:if test="$originalTextReference">
<reference>
<xsl:attribute name="value">
<xsl:value-of select="$originalTextReference"/>
</xsl:attribute>
</reference>
</xsl:if>
</originalText>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template name="ccdDateTime">
<xsl:param name="dt"/>
<xsl:param name="type"/>
<xsl:if test="$dt">
<xsl:if test="$dt[1]/a:ExactDateTime">
<effectiveTime>
<xsl:if test="$type">
<xsl:attribute name="xsi:type">
<xsl:value-of select="$type"></xsl:value-of>
</xsl:attribute>
</xsl:if>
<low>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="$dt[1]/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMdd</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</low>
<high nullFlavor="UNK"/>
</effectiveTime>
</xsl:if>
<xsl:if test="$dt[1]/a:DateTimeRange">
<effectiveTime>
<low>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="$dt[1]/a:DateTimeRange/a:BeginRange/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMdd</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</low>
<high>
<xsl:attribute name="value">
<xsl:call-template name="date:format-date">
<xsl:with-param name="date-time" select="$dt[1]/a:DateTimeRange/a:EndRange/a:ExactDateTime"/>
<xsl:with-param name="pattern">yyyyMMdd</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</high>
</effectiveTime>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template name="ccdMedicationFrequency">
<xsl:param name="frequency"/>
<xsl:if test="$frequency">
<xsl:choose>
<xsl:when test="$frequency/a:Value='qd'">
<effectiveTime xsi:type="PIVL_TS" operator="A">
<xsl:attribute name="institutionSpecified">true</xsl:attribute>
<period>
<xsl:attribute name="value">24</xsl:attribute>
<xsl:attribute name="unit">h</xsl:attribute>
</period>
</effectiveTime>
</xsl:when>
<xsl:when test="$frequency/a:Value='bid'">
<effectiveTime xsi:type="PIVL_TS" operator="A">
<xsl:attribute name="institutionSpecified">true</xsl:attribute>
<period>
<xsl:attribute name="value">12</xsl:attribute>
<xsl:attribute name="unit">h</xsl:attribute>
</period>
</effectiveTime>
</xsl:when>
<xsl:when test="$frequency/a:Value='tid'">
<effectiveTime xsi:type="PIVL_TS" operator="A">
<xsl:attribute name="institutionSpecified">true</xsl:attribute>
<period>
<xsl:attribute name="value">8</xsl:attribute>
<xsl:attribute name="unit">h</xsl:attribute>
</period>
</effectiveTime>
</xsl:when>
<xsl:when test="$frequency/a:Value='qid'">
<effectiveTime xsi:type="PIVL_TS" operator="A">
<xsl:attribute name="institutionSpecified">true</xsl:attribute>
<period>
<xsl:attribute name="value">6</xsl:attribute>
<xsl:attribute name="unit">h</xsl:attribute>
</period>
</effectiveTime>
</xsl:when>
<xsl:when test="$frequency/a:Value='qam'">
<effectiveTime xsi:type='EIVL' operator='A'>
<event code='ACM'/>
</effectiveTime>
</xsl:when>
<xsl:when test="$frequency/a:Value='qpm'">
<effectiveTime xsi:type='EIVL' operator='A'>
<event code='PCV'/>
</effectiveTime>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template name="ccdStatus">
<xsl:param name="ccrStatus"/>
<entryRelationship typeCode="REFR">
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.1.50"/>
<!-- Problem status observation template -->
<code code="33999-4" codeSystem="2.16.840.1.113883.6.1" displayName="Status"/>
<statusCode code="completed"/>
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$ccrStatus"/>
</xsl:call-template>
</observation>
</entryRelationship>
</xsl:template>
<xsl:template name="ccdStatusObservation">
<xsl:param name="status"/>
<xsl:variable name="statusText" select="$status/a:Text"></xsl:variable>
<xsl:choose>
<xsl:when test="$statusText='Active'">
<xsl:call-template name="ccdStatusElement">
<xsl:with-param name="statusCode" select="'55561003'"/>
<xsl:with-param name="statusDisplayName" select="$statusText"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$statusText='Inactive'">
<xsl:call-template name="ccdStatusElement">
<xsl:with-param name="statusCode" select="'73425007'"/>
<xsl:with-param name="statusDisplayName" select="$statusText"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$statusText='Chronic'">
<xsl:call-template name="ccdStatusElement">
<xsl:with-param name="statusCode" select="'90734009'"/>
<xsl:with-param name="statusDisplayName" select="$statusText"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="ccdStatusProcedure">
<xsl:param name="status"/>
<xsl:variable name="statusText" select="$status/a:Text"></xsl:variable>
<xsl:choose>
<xsl:when test="$statusText='Completed'">
<statusCode code="completed"/>
</xsl:when>
<xsl:when test="$statusText='Active'">
<statusCode code="active"/>
</xsl:when>
<xsl:when test="$statusText='Aborted'">
<statusCode code="aborted"/>
</xsl:when>
<xsl:when test="$statusText='Cancelled' or $statusText='Canceled'">
<statusCode code="cancelled"/>
</xsl:when>
<xsl:otherwise>
<statusCode>
<xsl:attribute name="code">
<xsl:value-of select="$statusText"></xsl:value-of>
</xsl:attribute>
</statusCode>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="ccdStatusElement">
<xsl:param name="statusCode"/>
<xsl:param name="statusDisplayName"/>
<value>
<xsl:attribute name="xsi:type">CE</xsl:attribute>
<xsl:attribute name="code">
<xsl:value-of select="$statusCode"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="codeSystem">2.16.840.1.113883.6.96</xsl:attribute>
<xsl:attribute name="displayName">
<xsl:value-of select="$statusDisplayName"></xsl:value-of>
</xsl:attribute>
</value>
</xsl:template>
<xsl:template name="ccdObservation">
<xsl:param name="ccrTestNode"/>
<xsl:param name="testDate"/>
<component>
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.3.88.11.83.15" assigningAuthorityName="HITSP C83"/>
<templateId root="2.16.840.1.113883.10.20.1.31" assigningAuthorityName="CCD"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.13" assigningAuthorityName="IHE PCC"/>
<!-- Result observation template -->
<xsl:call-template name="ccdID">
<xsl:with-param name="ccrObjectID" select="$ccrTestNode/a:CCRDataObjectID"/>
</xsl:call-template>
<!-- <code> -->
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$ccrTestNode/a:Description"/>
<xsl:with-param name="nodeName" select="'code'"/>
</xsl:call-template>
<text>
<reference>
<xsl:attribute name="value">
<xsl:text>#</xsl:text>
<xsl:value-of select="$ccrTestNode/a:CCRDataObjectID"/>
</xsl:attribute>
</reference>
</text>
<statusCode code="completed"/>
<!-- <effectiveTime> -->
<xsl:choose>
<xsl:when test="$ccrTestNode/a:DateTime">
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="$ccrTestNode/a:DateTime"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ccdDateTime">
<xsl:with-param name="dt" select="$testDate"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$ccrTestNode/a:TestResult[a:Value!='']">
<value xsi:type="PQ">
<xsl:attribute name="value">
<xsl:value-of select="$ccrTestNode/a:TestResult/a:Value"/>
</xsl:attribute>
<xsl:attribute name="unit">
<xsl:value-of select="$ccrTestNode/a:TestResult/a:Units/a:Unit"/>
</xsl:attribute>
</value>
</xsl:when>
<xsl:when test="$ccrTestNode/a:TestResult[a:Description/a:Text!='']">
<value xsi:type="TX">
<xsl:attribute name="value">
<xsl:value-of select="$ccrTestNode/a:TestResult/a:Description/a:Text"/>
</xsl:attribute>
</value>
</xsl:when>
</xsl:choose>
<xsl:if test="$ccrTestNode/a:Flag">
<xsl:call-template name="ccdCodedValue">
<xsl:with-param name="ccrCodedDescription" select="$ccrTestNode/a:Flag"/>
<xsl:with-param name="nodeName" select="'interpretationCode'"/>
<xsl:with-param name="domain" select="'ObservationInterpretation'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$ccrTestNode/a:NormalResult">
<referenceRange>
<xsl:if test="$ccrTestNode/a:NormalResult/a:Normal/a:Description/a:Text">
<observationRange>
<text>
<xsl:value-of select="$ccrTestNode/a:NormalResult/a:Normal/a:Description/a:Text"/>
</text>
</observationRange>
</xsl:if>
</referenceRange>
</xsl:if>
</observation>
</component>
</xsl:template>
</xsl:stylesheet>