2765 lines
140 KiB
XML
2765 lines
140 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
|
|
Copyright 2007 American Academy of Family Physicians
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software distributed
|
|
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations under the License.
|
|
|
|
This XSLT creates a simple HTML representation of the ASTM Continuity of Care Record.
|
|
This representation does not present all the potential data storable in the CCR.
|
|
Instead it gives a potential clinical representation of the CCR instance. There is
|
|
the potential for important information in a CCR to not be displayed in the resulting
|
|
HTML.
|
|
|
|
Derived works MUST change the footer.xsl template to denote that the resulting HTML
|
|
is a derived work from the AAFP's XSLT or remove the display of the "American Academy
|
|
of Family Physicians" name.
|
|
|
|
|
|
Although not required, it is encouraged to submit modifications or improvements to
|
|
this XSLT back to the community.
|
|
|
|
Author: Steven E. Waldren, MD
|
|
American Academy of Family Physicians
|
|
swaldren@aafp.org
|
|
|
|
Coauthors: Ken Miller Simon Sadedin
|
|
Solventus Medcommons
|
|
|
|
Date: 2007-06-01
|
|
Version: 2.0
|
|
|
|
-->
|
|
<xsl:stylesheet exclude-result-prefixes="a date str" version="1.0" xmlns:a="urn:astm-org:CCR" xmlns:date="http://exslt.org/dates-and-times" xmlns:str="http://exslt.org/strings" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
<xsl:output encoding="UTF-8" method="html"/>
|
|
<!-- XSL Parameters -->
|
|
<!-- This param can be used to define different CCS style sheets
|
|
If not passed, the default will be used -->
|
|
<xsl:param name="stylesheet"/>
|
|
<xsl:template match="/">
|
|
<html>
|
|
<head>
|
|
<!-- Load in the CSS file -->
|
|
<xsl:choose>
|
|
<xsl:when test="$stylesheet!=''">
|
|
<link href="{$stylesheet}" rel="stylesheet" type="text/css"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="defaultCCS"/>
|
|
<!-- call to ./templates/defaultCCS.xsl-->
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<title>Continuity of Care Record</title>
|
|
</head>
|
|
<body>
|
|
<table cellPadding="1" cellSpacing="1">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<table cellPadding="1" cellSpacing="1">
|
|
<tbody>
|
|
<tr id="ccrheaderrow">
|
|
<td>
|
|
<h1>Continuity of Care Record
|
|
<br/>
|
|
</h1>
|
|
<table bgColor="#ffffcc" cellPadding="1" cellSpacing="3" id="ccrheader" width="75%">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<strong>Date Created:</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:call-template name="date:format-date">
|
|
<xsl:with-param name="date-time">
|
|
<xsl:value-of select="a:ContinuityOfCareRecord/a:DateTime/a:ExactDateTime"/>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="pattern">EEE MMM dd, yyyy 'at' hh:mm aa zzz</xsl:with-param>
|
|
</xsl:call-template>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>From:</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:ContinuityOfCareRecord/a:From/a:ActorLink">
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:ActorID"/>
|
|
</xsl:call-template>
|
|
<xsl:if test="a:ActorRole/a:Text">
|
|
<xsl:text xml:space="preserve"> (</xsl:text>
|
|
<xsl:value-of select="a:ActorRole/a:Text"/>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:if>
|
|
<br/>
|
|
</xsl:for-each>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>To:</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:ContinuityOfCareRecord/a:To/a:ActorLink">
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:ActorID"/>
|
|
</xsl:call-template>
|
|
<xsl:if test="a:ActorRole/a:Text">
|
|
<xsl:text xml:space="preserve"> (</xsl:text>
|
|
<xsl:value-of select="a:ActorRole/a:Text"/>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:if>
|
|
<br/>
|
|
</xsl:for-each>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>Purpose:</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:ContinuityOfCareRecord/a:Purpose/a:Description/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br/>
|
|
</td>
|
|
</tr>
|
|
<tr id="demographicsrow">
|
|
<td>
|
|
<span class="header">Patient Demographics</span>
|
|
<br/>
|
|
<table class="list" id="demographics">
|
|
<tbody>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Date of Birth</th>
|
|
<th>Gender</th>
|
|
<th>Identification Numbers</th>
|
|
<th>Address / Phone</th>
|
|
</tr>
|
|
<xsl:for-each select="a:ContinuityOfCareRecord/a:Patient">
|
|
<xsl:variable name="objID" select="a:ActorID"/>
|
|
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Actors/a:Actor">
|
|
<xsl:variable name="thisObjID" select="a:ActorObjectID"/>
|
|
<xsl:if test="$objID = $thisObjID">
|
|
<tr>
|
|
<td>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID">
|
|
<xsl:value-of select="$thisObjID"/>
|
|
</xsl:with-param>
|
|
</xsl:call-template>
|
|
<br/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:Person/a:DateOfBirth"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Person/a:Gender/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:IDs">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:Address">
|
|
<xsl:if test="a:Type">
|
|
<b>
|
|
<xsl:value-of select="a:Type/a:Text"/>:</b>
|
|
<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:if>
|
|
<xsl:value-of select="a:State"/>
|
|
<xsl:value-of select="a:PostalCode"/>
|
|
<br/>
|
|
</xsl:for-each>
|
|
<xsl:for-each select="a:Telephone">
|
|
<br/>
|
|
<xsl:if test="a:Type/a:Text">
|
|
<xsl:value-of select="a:Type/a:Text"/>:
|
|
</xsl:if>
|
|
<xsl:value-of select="a:Value"/>
|
|
</xsl:for-each>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<span id="ccrcontent">
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Alerts">
|
|
<tr id="alertsrow">
|
|
<td>
|
|
<span class="header">Alerts</span>
|
|
<br/>
|
|
<table class="list" id="alerts">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Reaction/a:Description/a:Text"/>
|
|
<xsl:if test="a:Reaction/a:Severity/a:Text">
|
|
<xsl:text>-</xsl:text>
|
|
<xsl:value-of select="a:Reaction/a:Severity/a:Text"/>
|
|
</xsl:if>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:AdvanceDirectives">
|
|
<tr id="advancedirectivesrow">
|
|
<td>
|
|
<span class="header">Advance Directives</span>
|
|
<br/>
|
|
<table class="list" id="advancedirectives">
|
|
<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>
|
|
<td>
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Support">
|
|
<tr id="supportprovidersrow">
|
|
<td>
|
|
<span class="header" id="supportproviders">Support Providers</span>
|
|
<br/>
|
|
<table class="list">
|
|
<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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:FunctionalStatus">
|
|
<tr id="functionalstatus">
|
|
<td>
|
|
<span class="header">Functional Status</span>
|
|
<br/>
|
|
<table class="list">
|
|
<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:FunctionalStatus/a:Function">
|
|
<tr>
|
|
<td>
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Problems">
|
|
<tr id="problemsrow">
|
|
<td>
|
|
<span class="header">Problems</span>
|
|
<br/>
|
|
<table class="list" id="problems">
|
|
<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 class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Procedures">
|
|
<tr id="proceduresrow">
|
|
<td>
|
|
<span class="header">Procedures</span>
|
|
<br/>
|
|
<table class="list" id="procedures">
|
|
<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>
|
|
<td>
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:Locations/a:Location">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
<xsl:if test="a:Actor">
|
|
<xsl:text>(</xsl:text>
|
|
<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:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:ActorRole/a:Text"/>
|
|
<xsl:text>)</xsl: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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Medications">
|
|
<tr id="medicationsrow">
|
|
<td>
|
|
<span class="header" id="medications">Medications</span>
|
|
<br/>
|
|
<table class="list">
|
|
<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>
|
|
<strong class="clinical">
|
|
<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:text>)</xsl:text>
|
|
</xsl:if>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</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>
|
|
<table border="1" class="internal">
|
|
<tbody>
|
|
<xsl:apply-templates select="a:Directions"/>
|
|
<!-- call to /templates/directions.xsl -->
|
|
</tbody>
|
|
</table>
|
|
</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: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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Immunizations">
|
|
<tr id="immunizationsrow">
|
|
<td>
|
|
<span class="header">Immunizations</span>
|
|
<br/>
|
|
<table class="list" id="immunizations">
|
|
<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>
|
|
<td>
|
|
<xsl:apply-templates select="a:Product/a:ProductName/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<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:text>)</xsl:text>
|
|
</xsl:if>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Directions/a:Direction/a:Route/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Directions/a:Direction/a:Site/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:VitalSigns">
|
|
<tr id="vitalsignsrow">
|
|
<td>
|
|
<span class="header">Vital Signs</span>
|
|
<br/>
|
|
<table class="list" id="vitalsigns">
|
|
<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>
|
|
<td>
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
<xsl:with-param name="fmt">MMM dd, yyyy ':' hh:mm aa zzz</xsl:with-param>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Test">
|
|
<xsl:choose>
|
|
<xsl:when test="position() mod 2=0">
|
|
<tr class="even">
|
|
<td width="33%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="33%">
|
|
<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"/>
|
|
</td>
|
|
<td width="33%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<tr class="odd">
|
|
<td width="33%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="33%">
|
|
<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"/>
|
|
</td>
|
|
<td width="33%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Encounters">
|
|
<tr id="encountersrow">
|
|
<td>
|
|
<span class="header">Encounters</span>
|
|
<br/>
|
|
<table class="list" id="encounters">
|
|
<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>
|
|
<td>
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</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>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:SocialHistory">
|
|
<tr id="socialhistoryrow">
|
|
<td>
|
|
<span class="header">Social History</span>
|
|
<br/>
|
|
<table class="list" id="socialhistory">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<span>
|
|
<xsl:value-of disable-output-escaping="yes" select="a:Description/a:Text"/>
|
|
</span>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:FamilyHistory">
|
|
<tr id="familyhistoryrow">
|
|
<td>
|
|
<span class="header">Family History</span>
|
|
<br/>
|
|
<table class="list" id="familyhistory">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:Problem/a:Description/a:Code"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal" id="familyhistoryproblem">
|
|
<xsl:for-each select="a:Problem">
|
|
<tr>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:FamilyMember/a:ActorRole/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Results/a:Result[a:Test/a:TestResult/a:Value!='']">
|
|
<tr id="resultsrow">
|
|
<td>
|
|
<span class="header">Results (Discrete)</span>
|
|
<br/>
|
|
<table class="list" id="results">
|
|
<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[a:Test/a:TestResult/a:Value!='']">
|
|
<tr>
|
|
<td>
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
<xsl:with-param name="fmt">MMM dd, yyyy ':' hh:mm aa zzz</xsl:with-param>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Test">
|
|
<xsl:choose>
|
|
<xsl:when test="position() mod 2=0">
|
|
<tr class="even">
|
|
<td width="33%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="33%">
|
|
<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"/>
|
|
</td>
|
|
<td width="33%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<tr class="odd">
|
|
<td width="33%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="33%">
|
|
<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"/>
|
|
</td>
|
|
<td width="33%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Results/a:Result[a:Test/a:TestResult/a:Description/a:Text!='']">
|
|
<tr id="resultsreportrow">
|
|
<td>
|
|
<span class="header">Results (Report)</span>
|
|
<br/>
|
|
<table class="list" id="resultsreport">
|
|
<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[a:Test/a:TestResult/a:Description/a:Text!='']">
|
|
<tr>
|
|
<td>
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
<xsl:with-param name="fmt">MMM dd, yyyy ':' hh:mm aa zzz</xsl:with-param>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Test">
|
|
<xsl:choose>
|
|
<xsl:when test="position() mod 2=0">
|
|
<tr class="even">
|
|
<td width="20%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="65%">
|
|
<span>
|
|
<xsl:value-of disable-output-escaping="yes" select="a:TestResult/a:Description/a:Text"/>
|
|
</span>
|
|
</td>
|
|
<td width="15%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<tr class="odd">
|
|
<td width="20%">
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td width="65%">
|
|
<xsl:value-of disable-output-escaping="yes" select="a:TestResult/a:Description/a:Text"/>
|
|
</td>
|
|
<td width="15%">
|
|
<xsl:value-of select="a:Flag/a:Text"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:Payers">
|
|
<tr id="insurancerow">
|
|
<td>
|
|
<span class="header">Insurance</span>
|
|
<br/>
|
|
<table class="list" id="insurance">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:DateTime">
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="."/>
|
|
<xsl:with-param name="fmt">MMM dd, yyyy ':' hh:mm aa zzz</xsl:with-param>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table border="1" class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:IDs">
|
|
<xsl:choose>
|
|
<xsl:when test="position() mod 2=0">
|
|
<tr class="even">
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>:</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<tr class="odd">
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>:</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:PaymentProvider/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Subscriber/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare">
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Treatment Recommendation']">
|
|
<tr id="planofcarerow">
|
|
<td>
|
|
<span class="header">Plan Of Care Recommendations</span>
|
|
<br/>
|
|
<table class="list" id="planofcare">
|
|
<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 disable-output-escaping="yes" select="a:OrderRequest/a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of disable-output-escaping="yes" select="a:OrderRequest/a:Goals/a:Goal/a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Status/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:PlanOfCare/a:Plan[a:Type/a:Text='Order']">
|
|
<tr id="planofcareordersrow">
|
|
<td>
|
|
<span class="header">Plan Of Care Orders</span>
|
|
<br/>
|
|
<table class="list" id="planofcareorders">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:OrderRequest/a:Procedures/a:Procedure/a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:apply-templates select="a:OrderRequest/a:Procedures/a:Procedure/a:Description/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<span>Every </span>
|
|
<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"/>
|
|
<span> for </span>
|
|
<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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Body/a:HealthCareProviders">
|
|
<tr id="healthcareprovidersrow">
|
|
<td>
|
|
<span class="header">Health Care Providers</span>
|
|
<br/>
|
|
<table class="list" id="healthcareproviders">
|
|
<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>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:References">
|
|
<tr id="referencesrow">
|
|
<td>
|
|
<span class="header">References</span>
|
|
<br/>
|
|
<table class="list" id="references">
|
|
<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>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:call-template name="dateTime">
|
|
<xsl:with-param name="dt" select="a:DateTime"/>
|
|
</xsl:call-template>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<strong class="clinical">
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</strong>
|
|
</td>
|
|
<td>
|
|
<a target="_blank">
|
|
<xsl:attribute name="href">
|
|
<xsl:value-of select="a:Locations/a:Location/a:Description/a:Text"/>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="a:Locations/a:Location/a:Description/a:Text"/>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="href">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:value-of select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:Source/a:Actor/a:ActorID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
</span>
|
|
<tr>
|
|
<td/>
|
|
<td/>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td/>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br/>
|
|
<span id="actors">
|
|
<span class="header">Additional Information About People & Organizations</span>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:Person]">
|
|
<span id="people">
|
|
<h4>People</h4>
|
|
<table class="list" id="actorstable">
|
|
<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 data-type="text" order="ascending" select="a:Person/a:Name/a:DisplayName|a:Person/a:Name/a:CurrentName/a:Family"/>
|
|
<xsl:if test="a:Person">
|
|
<tr>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="name">
|
|
<xsl:value-of select="a:ActorObjectID"/>
|
|
</xsl:attribute>
|
|
<xsl:call-template name="actorName">
|
|
<xsl:with-param name="objID" select="a:ActorObjectID"/>
|
|
</xsl:call-template>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Specialty/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Relation/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:IDs">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Telephone">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Value"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:Address">
|
|
<xsl:if test="a:Type">
|
|
<b>
|
|
<xsl:value-of select="a:Type/a:Text"/>:</b>
|
|
<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: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>
|
|
</span>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:Organization]">
|
|
<span id="organizations">
|
|
<h4>Organizations</h4>
|
|
<table class="list" id="organizationstable">
|
|
<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 data-type="text" order="ascending" select="a:Organization/a:Name"/>
|
|
<xsl:if test="a:Organization">
|
|
<tr>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="name">
|
|
<xsl:value-of select="a:ActorObjectID"/>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="a:Organization/a:Name"/>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Specialty/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:Relation/a:Text"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:IDs">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Telephone">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Value"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:Address">
|
|
<xsl:if test="a:Type">
|
|
<b>
|
|
<xsl:value-of select="a:Type/a:Text"/>:</b>
|
|
<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: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>
|
|
</span>
|
|
</xsl:if>
|
|
<xsl:if test="a:ContinuityOfCareRecord/a:Actors/a:Actor[a:InformationSystem]">
|
|
<span id="informationsystems">
|
|
<h4>Information Systems</h4>
|
|
<table class="list" id="informationsystemstable">
|
|
<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 data-type="text" order="ascending" select="a:InformationSystem/a:Name"/>
|
|
<xsl:if test="a:InformationSystem">
|
|
<tr>
|
|
<td>
|
|
<a>
|
|
<xsl:attribute name="name">
|
|
<xsl:value-of select="a:ActorObjectID"/>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="a:InformationSystem/a:Name"/>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:InformationSystem/a:Type"/>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="a:InformationSystem/a:Version"/>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:IDs">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:ID"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<table class="internal">
|
|
<tbody>
|
|
<xsl:for-each select="a:Telephone">
|
|
<tr>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Type/a:Text"/>
|
|
</td>
|
|
<td width="50%">
|
|
<xsl:value-of select="a:Value"/>
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
<xsl:for-each select="a:Address">
|
|
<xsl:if test="Type">
|
|
<b>
|
|
<xsl:value-of select="a:Type/a:Text"/>:</b>
|
|
<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: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>
|
|
</span>
|
|
</xsl:if>
|
|
</span>
|
|
<xsl:call-template name="footer"/>
|
|
</body>
|
|
</html>
|
|
</xsl:template>
|
|
<!-- date.format-date.template -->
|
|
<!-- This is from the EXSLT.org Library (http://www.exslt.org/) -->
|
|
<date:months>
|
|
<date:month abbr="Jan" length="31">January</date:month>
|
|
<date:month abbr="Feb" length="28">February</date:month>
|
|
<date:month abbr="Mar" length="31">March</date:month>
|
|
<date:month abbr="Apr" length="30">April</date:month>
|
|
<date:month abbr="May" length="31">May</date:month>
|
|
<date:month abbr="Jun" length="30">June</date:month>
|
|
<date:month abbr="Jul" length="31">July</date:month>
|
|
<date:month abbr="Aug" length="31">August</date:month>
|
|
<date:month abbr="Sep" length="30">September</date:month>
|
|
<date:month abbr="Oct" length="31">October</date:month>
|
|
<date:month abbr="Nov" length="30">November</date:month>
|
|
<date:month abbr="Dec" length="31">December</date:month>
|
|
</date:months>
|
|
<date:days>
|
|
<date:day abbr="Sun">Sunday</date:day>
|
|
<date:day abbr="Mon">Monday</date:day>
|
|
<date:day abbr="Tue">Tuesday</date:day>
|
|
<date:day abbr="Wed">Wednesday</date:day>
|
|
<date:day abbr="Thu">Thursday</date:day>
|
|
<date:day abbr="Fri">Friday</date:day>
|
|
<date:day abbr="Sat">Saturday</date:day>
|
|
</date:days>
|
|
<xsl:template name="date:format-date">
|
|
<xsl:param name="date-time"/>
|
|
<xsl:param name="pattern"/>
|
|
<xsl:variable name="formatted">
|
|
<xsl:choose>
|
|
<xsl:when test="starts-with($date-time, '---')">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="'NaN'"/>
|
|
<xsl:with-param name="month" select="'NaN'"/>
|
|
<xsl:with-param name="day" select="number(substring($date-time, 4, 2))"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="starts-with($date-time, '--')">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="'NaN'"/>
|
|
<xsl:with-param name="month" select="number(substring($date-time, 3, 2))"/>
|
|
<xsl:with-param name="day" select="number(substring($date-time, 6, 2))"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="neg" select="starts-with($date-time, '-')"/>
|
|
<xsl:variable name="no-neg">
|
|
<xsl:choose>
|
|
<xsl:when test="$neg or starts-with($date-time, '+')">
|
|
<xsl:value-of select="substring($date-time, 2)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$date-time"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:variable name="no-neg-length" select="string-length($no-neg)"/>
|
|
<xsl:variable name="timezone">
|
|
<xsl:choose>
|
|
<xsl:when test="substring($no-neg, $no-neg-length) = 'Z'">Z</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="tz" select="substring($no-neg, $no-neg-length - 5)"/>
|
|
<xsl:value-of select="$tz"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:if test="not(string($timezone)) or $timezone = 'Z' or (substring($timezone, 2, 2) <= 23 and substring($timezone, 5, 2) <= 59)">
|
|
<xsl:variable name="dt" select="substring($no-neg, 1, $no-neg-length - string-length($timezone))"/>
|
|
<xsl:variable name="dt-length" select="string-length($dt)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="substring($dt, 3, 1) = ':' and substring($dt, 6, 1) = ':'">
|
|
<xsl:variable name="hour" select="substring($dt, 1, 2)"/>
|
|
<xsl:variable name="min" select="substring($dt, 4, 2)"/>
|
|
<xsl:variable name="sec" select="substring($dt, 7)"/>
|
|
<xsl:if test="$hour <= 23 and $min <= 59 and $sec <= 60">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="'NaN'"/>
|
|
<xsl:with-param name="month" select="'NaN'"/>
|
|
<xsl:with-param name="day" select="'NaN'"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$min"/>
|
|
<xsl:with-param name="second" select="$sec"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="year" select="substring($dt, 1, 4) * (($neg * -2) + 1)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="not(number($year))"/>
|
|
<xsl:when test="$dt-length = 4">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="substring($dt, 5, 1) = '-'">
|
|
<xsl:variable name="month" select="substring($dt, 6, 2)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="not($month <= 12)"/>
|
|
<xsl:when test="$dt-length = 7">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="substring($dt, 8, 1) = '-'">
|
|
<xsl:variable name="day" select="substring($dt, 9, 2)"/>
|
|
<xsl:if test="$day <= 31">
|
|
<xsl:choose>
|
|
<xsl:when test="$dt-length = 10">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="substring($dt, 11, 1) = 'T' and substring($dt, 14, 1) = ':' and substring($dt, 17, 1) = ':'">
|
|
<xsl:variable name="hour" select="substring($dt, 12, 2)"/>
|
|
<xsl:variable name="min" select="substring($dt, 15, 2)"/>
|
|
<xsl:variable name="sec" select="substring($dt, 18)"/>
|
|
<xsl:if test="$hour <= 23 and $min <= 59 and $sec <= 60">
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$min"/>
|
|
<xsl:with-param name="second" select="$sec"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="$pattern"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:value-of select="$formatted"/>
|
|
</xsl:template>
|
|
<xsl:template name="date:_format-date">
|
|
<xsl:param name="year"/>
|
|
<xsl:param name="month" select="1"/>
|
|
<xsl:param name="day" select="1"/>
|
|
<xsl:param name="hour" select="0"/>
|
|
<xsl:param name="minute" select="0"/>
|
|
<xsl:param name="second" select="0"/>
|
|
<xsl:param name="timezone" select="'Z'"/>
|
|
<xsl:param name="pattern" select="''"/>
|
|
<xsl:variable name="char" select="substring($pattern, 1, 1)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="not($pattern)"/>
|
|
<xsl:when test="$char = "'"">
|
|
<xsl:choose>
|
|
<xsl:when test="substring($pattern, 2, 1) = "'"">
|
|
<xsl:text>'</xsl:text>
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$minute"/>
|
|
<xsl:with-param name="second" select="$second"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="substring($pattern, 3)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="literal-value" select="substring-before(substring($pattern, 2), "'")"/>
|
|
<xsl:value-of select="$literal-value"/>
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$minute"/>
|
|
<xsl:with-param name="second" select="$second"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="substring($pattern, string-length($literal-value) + 2)"/>
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="not(contains('abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', $char))">
|
|
<xsl:value-of select="$char"/>
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$minute"/>
|
|
<xsl:with-param name="second" select="$second"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="substring($pattern, 2)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="not(contains('GyMdhHmsSEDFwWakKz', $char))">
|
|
<xsl:message>
|
|
Invalid token in format string: <xsl:value-of select="$char"/>
|
|
</xsl:message>
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$minute"/>
|
|
<xsl:with-param name="second" select="$second"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="substring($pattern, 2)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="next-different-char" select="substring(translate($pattern, $char, ''), 1, 1)"/>
|
|
<xsl:variable name="pattern-length">
|
|
<xsl:choose>
|
|
<xsl:when test="$next-different-char">
|
|
<xsl:value-of select="string-length(substring-before($pattern, $next-different-char))"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="string-length($pattern)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:choose>
|
|
<xsl:when test="$char = 'G'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($year) = 'NaN'"/>
|
|
<xsl:when test="$year > 0">AD</xsl:when>
|
|
<xsl:otherwise>BC</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'M'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($month) = 'NaN'"/>
|
|
<xsl:when test="$pattern-length >= 3">
|
|
<xsl:variable name="month-node" select="document('')/*/date:months/date:month[number($month)]"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$pattern-length >= 4">
|
|
<xsl:value-of select="$month-node"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$month-node/@abbr"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$pattern-length = 2">
|
|
<xsl:value-of select="format-number($month, '00')"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$month"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'E'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($year) = 'NaN' or string($month) = 'NaN' or string($day) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="month-days" select="sum(document('')/*/date:months/date:month[position() < $month]/@length)"/>
|
|
<xsl:variable name="days" select="$month-days + $day + boolean(((not(boolean($year mod 4)) and $year mod 100) or not(boolean($year mod 400))) and $month > 2)"/>
|
|
<xsl:variable name="y-1" select="$year - 1"/>
|
|
<xsl:variable name="dow" select="(($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7) + 1"/>
|
|
<xsl:variable name="day-node" select="document('')/*/date:days/date:day[number($dow)]"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$pattern-length >= 4">
|
|
<xsl:value-of select="$day-node"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$day-node/@abbr"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'a'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($hour) = 'NaN'"/>
|
|
<xsl:when test="$hour >= 12">PM</xsl:when>
|
|
<xsl:otherwise>AM</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'z'">
|
|
<xsl:choose>
|
|
<xsl:when test="$timezone = 'Z'">UTC</xsl:when>
|
|
<xsl:otherwise>UTC<xsl:value-of select="$timezone"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="padding">
|
|
<xsl:choose>
|
|
<xsl:when test="$pattern-length > 10">
|
|
<xsl:call-template name="str:padding">
|
|
<xsl:with-param name="length" select="$pattern-length"/>
|
|
<xsl:with-param name="chars" select="'0'"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="substring('0000000000', 1, $pattern-length)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:choose>
|
|
<xsl:when test="$char = 'y'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($year) = 'NaN'"/>
|
|
<xsl:when test="$pattern-length > 2">
|
|
<xsl:value-of select="format-number($year, $padding)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number(substring($year, string-length($year) - 1), $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'd'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($day) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number($day, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'h'">
|
|
<xsl:variable name="h" select="$hour mod 12"/>
|
|
<xsl:choose>
|
|
<xsl:when test="string($hour) = 'NaN'"/>
|
|
<xsl:when test="$h">
|
|
<xsl:value-of select="format-number($h, $padding)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number(12, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'H'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($hour) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number($hour, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'k'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($hour) = 'NaN'"/>
|
|
<xsl:when test="$hour">
|
|
<xsl:value-of select="format-number($hour, $padding)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number(24, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'K'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($hour) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number($hour mod 12, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'm'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($minute) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number($minute, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 's'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($second) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number($second, $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'S'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($second) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="format-number(substring-after($second, '.'), $padding)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'F'">
|
|
<xsl:choose>
|
|
<xsl:when test="string($day) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="floor($day div 7) + 1"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="string($year) = 'NaN' or string($month) = 'NaN' or string($day) = 'NaN'"/>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="month-days" select="sum(document('')/*/date:months/date:month[position() < $month]/@length)"/>
|
|
<xsl:variable name="days" select="$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month > 2)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$char = 'D'">
|
|
<xsl:value-of select="format-number($days, $padding)"/>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'w'">
|
|
<xsl:call-template name="date:_week-in-year">
|
|
<xsl:with-param name="days" select="$days"/>
|
|
<xsl:with-param name="year" select="$year"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="$char = 'W'">
|
|
<xsl:variable name="y-1" select="$year - 1"/>
|
|
<xsl:variable name="day-of-week" select="(($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7) + 1"/>
|
|
<xsl:choose>
|
|
<xsl:when test="($day - $day-of-week) mod 7">
|
|
<xsl:value-of select="floor(($day - $day-of-week) div 7) + 2"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="floor(($day - $day-of-week) div 7) + 1"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:call-template name="date:_format-date">
|
|
<xsl:with-param name="year" select="$year"/>
|
|
<xsl:with-param name="month" select="$month"/>
|
|
<xsl:with-param name="day" select="$day"/>
|
|
<xsl:with-param name="hour" select="$hour"/>
|
|
<xsl:with-param name="minute" select="$minute"/>
|
|
<xsl:with-param name="second" select="$second"/>
|
|
<xsl:with-param name="timezone" select="$timezone"/>
|
|
<xsl:with-param name="pattern" select="substring($pattern, $pattern-length + 1)"/>
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<xsl:template name="date:_week-in-year">
|
|
<xsl:param name="days"/>
|
|
<xsl:param name="year"/>
|
|
<xsl:variable name="y-1" select="$year - 1"/>
|
|
<!-- this gives the day of the week, counting from Sunday = 0 -->
|
|
<xsl:variable name="day-of-week" select="($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7"/>
|
|
<!-- this gives the day of the week, counting from Monday = 1 -->
|
|
<xsl:variable name="dow">
|
|
<xsl:choose>
|
|
<xsl:when test="$day-of-week">
|
|
<xsl:value-of select="$day-of-week"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>7</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:variable name="start-day" select="($days - $dow + 7) mod 7"/>
|
|
<xsl:variable name="week-number" select="floor(($days - $dow + 7) div 7)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$start-day >= 4">
|
|
<xsl:value-of select="$week-number + 1"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:choose>
|
|
<xsl:when test="not($week-number)">
|
|
<xsl:call-template name="date:_week-in-year">
|
|
<xsl:with-param name="days" select="365 + ((not($y-1 mod 4) and $y-1 mod 100) or not($y-1 mod 400))"/>
|
|
<xsl:with-param name="year" select="$y-1"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$week-number"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<!-- str.padding.template.xsl -->
|
|
<!-- This is from the EXSLT.org Library (http://www.exslt.org/) -->
|
|
<xsl:template name="str:padding">
|
|
<xsl:param name="length" select="0"/>
|
|
<xsl:param name="chars" select="' '"/>
|
|
<xsl:choose>
|
|
<xsl:when test="not($length) or not($chars)"/>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="string" select="concat($chars, $chars, $chars, $chars, $chars, $chars, $chars, $chars, $chars, $chars)"/>
|
|
<xsl:choose>
|
|
<xsl:when test="string-length($string) >= $length">
|
|
<xsl:value-of select="substring($string, 1, $length)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="str:padding">
|
|
<xsl:with-param name="length" select="$length"/>
|
|
<xsl:with-param name="chars" select="$string"/>
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<!-- actor.xsl -->
|
|
<!-- Returns the name of the actor, if there is no name it returns the ActorObjectID that was passed in -->
|
|
<xsl:template name="actorName">
|
|
<xsl:param name="objID"/>
|
|
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Actors/a:Actor">
|
|
<xsl:variable name="thisObjID" select="a:ActorObjectID"/>
|
|
<xsl:if test="$objID = $thisObjID">
|
|
<xsl:choose>
|
|
<xsl:when test="a:Person">
|
|
<xsl:choose>
|
|
<xsl:when test="a:Person/a:Name/a:DisplayName">
|
|
<xsl:value-of select="a:Person/a:Name/a:DisplayName"/>
|
|
</xsl:when>
|
|
<xsl:when test="a:Person/a:Name/a:CurrentName">
|
|
<xsl:value-of select="a:Person/a:Name/a:CurrentName/a:Given"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:CurrentName/a:Middle"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:CurrentName/a:Family"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:CurrentName/a:Suffix"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:CurrentName/a:Title"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
</xsl:when>
|
|
<xsl:when test="a:Person/a:Name/a:BirthName">
|
|
<xsl:value-of select="a:Person/a:Name/a:BirthName/a:Given"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:BirthName/a:Middle"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:BirthName/a:Family"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:BirthName/a:Suffix"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Person/a:Name/a:BirthName/a:Title"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
</xsl:when>
|
|
<xsl:when test="a:Person/a:Name/a:AdditionalName">
|
|
<xsl:for-each select="a:Person/a:Name/a:AdditionalName">
|
|
<xsl:value-of select="a:Given"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Middle"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Family"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Suffix"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="a:Title"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:if test="position() != last()">
|
|
<br/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="a:Organization">
|
|
<xsl:value-of select="a:Organization/a:Name"/>
|
|
</xsl:when>
|
|
<xsl:when test="a:InformationSystem">
|
|
<xsl:value-of select="a:InformationSystem/a:Name"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:if test="a:InformationSystem/a:Version">
|
|
<xsl:value-of select="a:InformationSystem/a:Version"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
</xsl:if>
|
|
<xsl:if test="a:InformationSystem/a:Type">(<xsl:value-of select="a:InformationSystem/a:Type"/>)</xsl:if>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$objID"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
<!-- code.xsl -->
|
|
<xsl:template match="a:Code">
|
|
<xsl:value-of select="a:Value"/>
|
|
<xsl:if test="a:CodingSystem">
|
|
<xsl:text xml:space="preserve"> </xsl:text>(<xsl:value-of select="a:CodingSystem"/>)
|
|
</xsl:if>
|
|
</xsl:template>
|
|
<!--datetime. xsl -->
|
|
<!-- Displays the DateTime. If ExactDateTime is present, it will format according
|
|
to the 'fmt' variable. The default format is: Oct 31, 2005 -->
|
|
<xsl:template match="DateTime" name="dateTime">
|
|
<xsl:param name="dt" select="."/>
|
|
<xsl:param name="fmt">MMM dd, yyyy</xsl:param>
|
|
<tr>
|
|
<xsl:if test="$dt/a:Type/a:Text">
|
|
<td>
|
|
<xsl:value-of select="$dt/a:Type/a:Text"/>:</td>
|
|
</xsl:if>
|
|
<xsl:choose>
|
|
<xsl:when test="$dt/a:ExactDateTime">
|
|
<td>
|
|
<xsl:call-template name="date:format-date">
|
|
<xsl:with-param name="date-time">
|
|
<xsl:value-of select="$dt/a:ExactDateTime"/>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="pattern" select="$fmt"/>
|
|
</xsl:call-template>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:Age">
|
|
<td>
|
|
<xsl:value-of select="$dt/a:Age/a:Value"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="$dt/a:Age/a:Units/a:Unit"/>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:ApproximateDateTime">
|
|
<td>
|
|
<xsl:value-of select="$dt/a:ApproximateDateTime/a:Text"/>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:DateTimeRange">
|
|
<td>
|
|
<xsl:for-each select="$dt/a:DateTimeRange/a:BeginRange">
|
|
<xsl:choose>
|
|
<xsl:when test="$dt/a:ExactDateTime">
|
|
<xsl:call-template name="date:format-date">
|
|
<xsl:with-param name="date-time">
|
|
<xsl:value-of select="$dt/a:ExactDateTime"/>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="pattern" select="$fmt"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:Age">
|
|
<xsl:value-of select="$dt/a:Age/a:Value"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="$dt/a:Age/a:Units/a:Unit"/>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:ApproximateDateTime">
|
|
<xsl:value-of select="$dt/a:ApproximateDateTime/a:Text"/>
|
|
</xsl:when>
|
|
<xsl:otherwise/>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:text>-</xsl:text>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:for-each select="$dt/a:DateTimeRange/a:EndRange">
|
|
<xsl:choose>
|
|
<xsl:when test="$dt/a:ExactDateTime">
|
|
<xsl:call-template name="date:format-date">
|
|
<xsl:with-param name="date-time">
|
|
<xsl:value-of select="$dt/a:ExactDateTime"/>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="pattern" select="$fmt"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:Age">
|
|
<xsl:value-of select="$dt/a:Age/a:Value"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<xsl:value-of select="$dt/a:Age/a:Units/a:Unit"/>
|
|
</xsl:when>
|
|
<xsl:when test="$dt/a:ApproximateDateTime">
|
|
<xsl:value-of select="$dt/a:ApproximateDateTime/a:Text"/>
|
|
</xsl:when>
|
|
<xsl:otherwise/>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:otherwise/>
|
|
</xsl:choose>
|
|
</tr>
|
|
</xsl:template>
|
|
<!-- defaultCSS.xsl -->
|
|
<xsl:template name="defaultCCS">
|
|
<style type="text/css"><!--
|
|
*{
|
|
font-size: small;
|
|
font-family: Arial, sans-serif;
|
|
}
|
|
h1{
|
|
font-size: 150%;
|
|
}
|
|
strong.clinical {
|
|
color: #3300FF;
|
|
}
|
|
p {
|
|
margin-left: 20px
|
|
}
|
|
span.header{
|
|
font-weight: bold;
|
|
font-size: medium;
|
|
line-height: 16pt;
|
|
padding-top: 10px;
|
|
}
|
|
table.list {
|
|
padding-bottom: 5px;
|
|
border: thin solid #cccccc;
|
|
border-style-internal: thin solid #cccccc;
|
|
BORDER-COLLAPSE: collapse;
|
|
background: white;
|
|
background-image: none
|
|
}
|
|
table.list th {
|
|
text-align: left;
|
|
FONT-WEIGHT: bold;
|
|
COLOR: white;
|
|
background: #006699;
|
|
background-image: none
|
|
}
|
|
table.list td {
|
|
padding: 5px;
|
|
border: thin solid #cccccc;
|
|
vertical-align: top;
|
|
}
|
|
table.internal {
|
|
border: none;
|
|
}
|
|
table.internal td {
|
|
vertical-align: top;
|
|
padding: 1px;
|
|
border: none;
|
|
}
|
|
table.internal tr.even{
|
|
background: #CEFFFF;
|
|
background-image: none
|
|
}
|
|
--></style>
|
|
</xsl:template>
|
|
<!-- directions.xsl -->
|
|
<xsl:template match="a:Directions">
|
|
<xsl:for-each select="a:Direction">
|
|
<xsl:choose>
|
|
<xsl:when test="position() mod 2=0">
|
|
<tr class="even">
|
|
<xsl:choose>
|
|
<xsl:when test="a:Description/a:Text">
|
|
<td>
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<td>
|
|
<xsl:value-of select="a:DeliveryMethod/a:Text"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<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:if>
|
|
</td>
|
|
<xsl:if test="a:MultipleDirectionModifier/a:ObjectAttribute">
|
|
<td>
|
|
<xsl:if test="a:MultipleDirectionModifier/a:Text">
|
|
<xsl:value-of select="a:MultipleDirectionModifier/a:Text"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
</xsl:if>
|
|
<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>
|
|
</td>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</tr>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<tr class="odd">
|
|
<xsl:choose>
|
|
<xsl:when test="a:Description/a:Text">
|
|
<td>
|
|
<xsl:value-of select="a:Description/a:Text"/>
|
|
</td>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<td>
|
|
<xsl:value-of select="a:DeliveryMethod/a:Text"/>
|
|
<xsl:text xml:space="preserve"> </xsl:text>
|
|
<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:if>
|
|
</td>
|
|
<xsl:if test="a:MultipleDirectionModifier/a:ObjectAttribute">
|
|
<td>
|
|
<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>
|
|
</td>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</tr>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
<!-- footer.xsl -->
|
|
<!-- HTML Footer for CCR.XSL -->
|
|
<xsl:template name="footer">
|
|
<br/>
|
|
<hr/>
|
|
<table cellspacing="3">
|
|
<tbody>
|
|
<tr>
|
|
<th>
|
|
<font color="#CCCCCC" size="2">
|
|
The stylesheet used to generate this view of the CCR was provided by the American Academy of Family Physicians and the CCR Acceleration Task Force
|
|
</font>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td/>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<font color="#CCCCCC" size="3">
|
|
<strong>Powered by the <a href="http://www.astm.org/cgi-bin/SoftCart.exe/DATABASE.CART/REDLINE_PAGES/E2369.htm?E+mystore" style="color:#CCCCCC;">ASTM E2369-05 Specification for the Continuity of Care Record (CCR)</a>
|
|
</strong>
|
|
</font>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</xsl:template>
|
|
<!-- problemDescription.xsl -->
|
|
<!-- Returns the description of the problem, if there is no name it returns the ObjectID that was passed in -->
|
|
<xsl:template name="problemDescription">
|
|
<xsl:param name="objID"/>
|
|
<xsl:for-each select="/a:ContinuityOfCareRecord/a:Body/a:Problems/a:Problem">
|
|
<xsl:variable name="thisObjID" select="a:CCRDataObjectID"/>
|
|
<xsl:if test="$objID = $thisObjID">
|
|
<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="$objID"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
</xsl:stylesheet> |