source: ccr2ccd-xslt/trunk/templates/ccdentity.xsl@ 759

Last change on this file since 759 was 759, checked in by Richard Braman, 14 years ago

add files from Ken Miller

File size: 8.5 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="urn:hl7-org:v3" xmlns:a="urn:astm-org:CCR" xmlns:date="http://exslt.org/dates-and-times" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="a date">
3
4 <xsl:import href="actor.xsl"/>
5 <xsl:import href="ccdcodedvalue.xsl"/>
6 <xsl:import href="ccddatetime.xsl"/>
7 <xsl:import href="cdavocablookup.xsl"/>
8
9 <xsl:template name="ccdEntity">
10 <xsl:param name="ccrActorObjectID"/>
11 <xsl:param name="personNodeName">assignedPerson</xsl:param>
12
13 <xsl:variable name="CCRActor" select="//a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]"/>
14
15 <id>
16 <xsl:choose>
17 <xsl:when test="$CCRActor/a:IDs">
18 <xsl:attribute name="extension">
19 <xsl:value-of select="$CCRActor/a:IDs[1]/a:ID"/>
20 </xsl:attribute>
21 <xsl:attribute name="root">
22 <xsl:value-of select="$CCRActor/a:IDs[1]/a:Type/a:Text"/>
23 </xsl:attribute>
24 </xsl:when>
25 <xsl:otherwise>
26 <xsl:attribute name="extension">
27 <xsl:value-of select="$CCRActor/a:ActorObjectID"/>
28 </xsl:attribute>
29 <xsl:attribute name="root">
30 <xsl:text>CCR Actor ID</xsl:text>
31 </xsl:attribute>
32 </xsl:otherwise>
33 </xsl:choose>
34 </id>
35
36 <xsl:if test="$CCRActor/a:Organization">
37 <xsl:value-of select="$CCRActor/a:Organization/a:Name"></xsl:value-of>
38 </xsl:if>
39
40 <addr>
41 <xsl:choose>
42 <xsl:when test="$CCRActor/a:Address">
43 <xsl:attribute name="use">
44 <xsl:call-template name="CDAVocabularyLookup">
45 <xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
46 <xsl:with-param name="ccrDescription" select="$CCRActor/a:Address/a:Type/a:Text"/>
47 </xsl:call-template>
48 </xsl:attribute>
49 <streetAddressLine>
50 <xsl:value-of select="$CCRActor/a:Address[1]/a:Line1"/>
51 </streetAddressLine>
52 <city>
53 <xsl:value-of select="$CCRActor/a:Address[1]/a:City"/>
54 </city>
55 <state>
56 <xsl:value-of select="$CCRActor/a:Address[1]/a:State"/>
57 </state>
58 <postalcode>
59 <xsl:value-of select="$CCRActor/a:Address[1]/a:PostalCode"/>
60 </postalcode>
61 </xsl:when>
62 <xsl:otherwise>
63 <streetAddressLine/>
64 </xsl:otherwise>
65 </xsl:choose>
66 </addr>
67
68 <telecom>
69 <xsl:if test="$CCRActor/a:Telephone">
70 <xsl:attribute name="use">
71 <xsl:call-template name="CDAVocabularyLookup">
72 <xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
73 <xsl:with-param name="ccrDescription" select="$CCRActor/a:Telephone/a:Type/a:Text"/>
74 </xsl:call-template>
75 </xsl:attribute>
76 <xsl:attribute name="value">
77 <xsl:text>tel:+1-</xsl:text>
78 <xsl:value-of select="$CCRActor/a:Telephone[1]/a:Value"/>
79 </xsl:attribute>
80 </xsl:if>
81
82 </telecom>
83
84 <xsl:if test="$CCRActor/a:Email">
85 <telecom>
86 <xsl:choose>
87 <xsl:when test="$CCRActor/a:Telephone">
88 <xsl:attribute name="use">
89 <xsl:call-template name="CDAVocabularyLookup">
90 <xsl:with-param name="domain" select="'telecommunicationsAddressUse'"/>
91 <xsl:with-param name="ccrDescription" select="$CCRActor/a:Telephone/a:Type/a:Text"/>
92 </xsl:call-template>
93 </xsl:attribute>
94 <xsl:attribute name="value">
95 <xsl:text>mailto:</xsl:text>
96 <xsl:value-of select="$CCRActor/a:Email[1]/a:Value"/>
97 </xsl:attribute>
98 </xsl:when>
99 <xsl:otherwise>
100 <xsl:attribute name="value">Unknown</xsl:attribute>
101 </xsl:otherwise>
102 </xsl:choose>
103 </telecom>
104 </xsl:if>
105
106 <xsl:element name="{$personNodeName}">
107 <name>
108 <xsl:call-template name="actorName">
109 <xsl:with-param name="objID" select="$ccrActorObjectID"/>
110 </xsl:call-template>
111 </name>
112
113 <xsl:if test="a:Person/a:Gender">
114
115 <xsl:call-template name="ccdCodedValue">
116 <xsl:with-param name="ccrCodedDescription" select="a:Person/a:Gender"/>
117 <xsl:with-param name="domain" select="'AdministrativeGender'"/>
118 <xsl:with-param name="nodeName" select="'administrativeGenderCode'"/>
119 </xsl:call-template>
120
121
122 </xsl:if>
123
124 <xsl:if test="a:Person/a:DateOfBirth">
125 <birthTime>
126 <xsl:attribute name="value">
127 <xsl:call-template name="date:format-date">
128 <xsl:with-param name="date-time">
129 <xsl:value-of select="a:Person/a:DateOfBirth/a:ExactDateTime"/>
130 </xsl:with-param>
131 <xsl:with-param name="pattern">yyyyMMddhhmmss</xsl:with-param>
132 </xsl:call-template>
133 </xsl:attribute>
134 </birthTime>
135 </xsl:if>
136 </xsl:element>
137
138 <xsl:if test="$ccrActorObjectID=/a:ContinuityOfCareRecord/a:Patient[1]/a:ActorID">
139 <xsl:if test="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Marital Status']">
140
141 <xsl:call-template name="ccdCodedValue">
142 <xsl:with-param name="ccrCodedDescription" select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Marital Status']/a:Description"></xsl:with-param>
143 <xsl:with-param name="domain" select="'MaritalStatus'"/>
144 <xsl:with-param name="nodeName" select="'maritalStatusCode'"/>
145 </xsl:call-template>
146
147 </xsl:if>
148
149 <xsl:if test="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Language']">
150 <languageCommunication>
151 <templateId root="2.16.840.1.113883.3.88.11.83.2" assigningAuthorityName="HITSP/C83"/>
152 <templateId root="1.3.6.1.4.1.19376.1.5.3.1.2.1" assigningAuthorityName="IHE/PCC"/>
153
154 <xsl:call-template name="ccdCodedValue">
155 <xsl:with-param name="ccrCodedDescription" select="/a:ContinuityOfCareRecord/a:Body/a:SocialHistory/a:SocialHistoryElement[a:Type/a:Text='Language']/a:Description"></xsl:with-param>
156 <xsl:with-param name="domain" select="'HumanLanguage'"/>
157 <xsl:with-param name="nodeName" select="'languageCode'"/>
158 </xsl:call-template>
159
160 </languageCommunication>
161 </xsl:if>
162 </xsl:if>
163
164 <xsl:if test="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]/a:InternalCCRLink[a:LinkRelationship='Organization']">
165 <representedOrganization>
166 <xsl:call-template name="ccdEntity">
167 <xsl:with-param name="ccrActorObjectID" select="/a:ContinuityOfCareRecord/a:Actors/a:Actor[a:ActorObjectID=$ccrActorObjectID]/a:InternalCCRLink[a:LinkRelationship='Organization']/a:LinkID"></xsl:with-param>
168 </xsl:call-template>
169 </representedOrganization>
170 </xsl:if>
171
172 </xsl:template>
173</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.