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.
3064 lines
196 KiB
3064 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 & 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>
|
|
|