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.
2771 lines
141 KiB
2771 lines
141 KiB
<?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"/> |
|
</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>RxNorm Code</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> |
|
<xsl:value-of select="a:Product/a:ProductName/a:Code/a:Value"/> |
|
</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><!-- |
|
*{ |
|
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 --> |
|
<!--The stylesheet used to generate this view of the CCR was provided by Garden Health.--> |
|
The stylesheet used to generate this view of the CCR was provided by OEMR. |
|
</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>
|
|
|