source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Adapters/General/DocumentRepository/test/gov/hhs/fha/nhinc/repository/service/DocumentServiceTest.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 59.4 KB
Line 
1package gov.hhs.fha.nhinc.repository.service;
2
3import gov.hhs.fha.nhinc.repository.model.Document;
4import gov.hhs.fha.nhinc.repository.model.DocumentQueryParams;
5import gov.hhs.fha.nhinc.repository.model.EventCode;
6import gov.hhs.fha.nhinc.util.hash.SHA1HashCode;
7import java.text.SimpleDateFormat;
8import java.util.ArrayList;
9import java.util.Date;
10import java.util.HashSet;
11import java.util.List;
12import java.util.Set;
13import org.junit.Test;
14import static org.junit.Assert.*;
15
16/**
17 * Test case for the DocumentService class
18 *
19 * @author Neil Webb
20 */
21public class DocumentServiceTest
22{
23 /**
24 * Test of DocumentService operations.
25 */
26 @Test
27 public void testDocumentOperations()
28 {
29 System.out.println("Start testDocumentOperations");
30 try
31 {
32 DocumentService docService = new DocumentService();
33 Document document = null;
34
35 // Insert document - minimal
36 document = new Document();
37 Long documentId = null;
38 String documentUniqueId = "1234abcd";
39
40 document.setDocumentid(documentId);
41 document.setDocumentUniqueId(documentUniqueId);
42
43 docService.saveDocument(document);
44 documentId = document.getDocumentid();
45
46 // Retrieve initial insert
47 Document retrieved = docService.getDocument(documentId);
48 assertNotNull("Retrieved doc - minmal was null", retrieved);
49 assertNotNull("After insert - Document id null", documentId);
50 assertEquals("After insert - Document unique id", documentUniqueId, retrieved.getDocumentUniqueId());
51 assertFalse("After insert - Persistent flag", retrieved.isPersistent());
52
53 // Update
54 documentUniqueId = "1234abcdupdated";
55 String documentTitle = "Doc title";
56 String authorPerson = "authorPerson";
57 String authorInstitution = "authorInstitution";
58 String authorRole = "authorRole";
59 String authorSpecialty = "authorSpecialty";
60 String availablityStatus = "availablityStatus";
61 String classCode = "classCode";
62 String classCodeScheme = "classCodeScheme";
63 String classCodeDisplayName = "classCodeDisplayName";
64 String confidentialityCode = "confidentialityCode";
65 String confidentialityCodeScheme = "confidentialityCodeScheme";
66 String confidentialityCodeDisplayName = "confidentialityCodeDisplayName";
67 Date creationTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20040404040404");
68 String formatCode = "formatCode";
69 String formatCodeScheme = "formatCodeScheme";
70 String formatCodeDisplayName = "formatCodeDisplayName";
71 String patientId = "patientId";
72 Date serviceStartTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050505");
73 Date serviceStopTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060606");
74 String status = "status";
75 String comments = "comments";
76 String hash = null; //"hash";
77 String facilityCode = "facilityCode";
78 String facilityCodeScheme = "facilityCodeScheme";
79 String facilityCodeDisplayName = "facilityCodeDisplayName";
80 String intendedRecipientPerson = "intendedRecipientPerson";
81 String intendedRecipientOrganization = "intendedRecipientOrganization";
82 String languageCode = "languageCode";
83 String legalAuthenticator = "legalAuthenticator";
84 String mimeType = "mimeType";
85 String parentDocumentId = "parentDocumentId";
86 String parentDocumentRelationship = "parentDocumentRelationship";
87 String practiceSetting = "practiceSetting";
88 String practiceSettingScheme = "practiceSettingScheme";
89 String practiceSettingDisplayName = "practiceSettingDisplayName";
90 Integer size = new Integer(8989);
91 String sourcePatientId = "sourcePatientId";
92 String pid3 = "pid3";
93 String pid5 = "pid5";
94 String pid8 = "pid8";
95 String pid7 = "pid7";
96 String pid11 = "pid11";
97 String typeCode = "typeCode";
98 String typeCodeScheme = "typeCodeScheme";
99 String typeCodeDisplayName = "typeCodeDisplayName";
100 String documentUri = "documentUri";
101// String rawData = "rawData";
102 String rawData = sampleC32();
103 String sCompareHash = SHA1HashCode.calculateSHA1(rawData); // Calculate the hash code for comparison later...
104
105 retrieved.setDocumentUniqueId(documentUniqueId);
106 retrieved.setDocumentTitle(documentTitle);
107 retrieved.setAuthorPerson(authorPerson);
108 retrieved.setAuthorInstitution(authorInstitution);
109 retrieved.setAuthorRole(authorRole);
110 retrieved.setAuthorSpecialty(authorSpecialty);
111 retrieved.setAvailablityStatus(availablityStatus);
112 retrieved.setClassCode(classCode);
113 retrieved.setClassCodeScheme(classCodeScheme);
114 retrieved.setClassCodeDisplayName(classCodeDisplayName);
115 retrieved.setConfidentialityCode(confidentialityCode);
116 retrieved.setConfidentialityCodeScheme(confidentialityCodeScheme);
117 retrieved.setConfidentialityCodeDisplayName(confidentialityCodeDisplayName);
118 retrieved.setCreationTime(creationTime);
119 retrieved.setFormatCode(formatCode);
120 retrieved.setFormatCodeScheme(formatCodeScheme);
121 retrieved.setFormatCodeDisplayName(formatCodeDisplayName);
122 retrieved.setPatientId(patientId);
123 retrieved.setServiceStartTime(serviceStartTime);
124 retrieved.setServiceStopTime(serviceStopTime);
125 retrieved.setStatus(status);
126 retrieved.setComments(comments);
127 retrieved.setHash(hash);
128 retrieved.setFacilityCode(facilityCode);
129 retrieved.setFacilityCodeScheme(facilityCodeScheme);
130 retrieved.setFacilityCodeDisplayName(facilityCodeDisplayName);
131 retrieved.setIntendedRecipientPerson(intendedRecipientPerson);
132 retrieved.setIntendedRecipientOrganization(intendedRecipientOrganization);
133 retrieved.setLanguageCode(languageCode);
134 retrieved.setLegalAuthenticator(legalAuthenticator);
135 retrieved.setMimeType(mimeType);
136 retrieved.setParentDocumentId(parentDocumentId);
137 retrieved.setParentDocumentRelationship(parentDocumentRelationship);
138 retrieved.setPracticeSetting(practiceSetting);
139 retrieved.setPracticeSettingScheme(practiceSettingScheme);
140 retrieved.setPracticeSettingDisplayName(practiceSettingDisplayName);
141 retrieved.setSize(size);
142 retrieved.setSourcePatientId(sourcePatientId);
143 retrieved.setPid3(pid3);
144 retrieved.setPid5(pid5);
145 retrieved.setPid8(pid8);
146 retrieved.setPid7(pid7);
147 retrieved.setPid11(pid11);
148 retrieved.setTypeCode(typeCode);
149 retrieved.setTypeCodeScheme(typeCodeScheme);
150 retrieved.setTypeCodeDisplayName(typeCodeDisplayName);
151 retrieved.setDocumentUri(documentUri);
152 retrieved.setRawData(rawData.getBytes());
153 retrieved.setPersistent(true);
154
155 Set<EventCode> eventCodes = new HashSet<EventCode>();
156 EventCode code1 = new EventCode();
157 String eventCode1 = "eventCode1";
158 String eventCodeScheme1 = "eventCodeScheme1";
159 String eventCodeDisplayName1 = "eventCodeDisplayName1";
160 code1.setEventCode(eventCode1);
161 code1.setEventCodeScheme(eventCodeScheme1);
162 code1.setEventCodeDisplayName(eventCodeDisplayName1);
163 code1.setDocument(retrieved);
164 eventCodes.add(code1);
165 EventCode code2 = new EventCode();
166 String eventCode2 = "eventCode2";
167 String eventCodeScheme2 = "eventCodeScheme2";
168 String eventCodeDisplayName2 = "eventCodeDisplayName2";
169 code2.setEventCode(eventCode2);
170 code2.setEventCodeScheme(eventCodeScheme2);
171 code2.setEventCodeDisplayName(eventCodeDisplayName2);
172 code2.setDocument(retrieved);
173 eventCodes.add(code2);
174 retrieved.setEventCodes(eventCodes);
175
176 docService.saveDocument(retrieved);
177
178 // Retrieve updated
179 retrieved = docService.getDocument(documentId);
180 assertNotNull("Retrieved doc - updated was null", retrieved);
181 assertEquals("After update - Document id", documentId, retrieved.getDocumentid());
182 assertEquals("After update - Document unique id", documentUniqueId, retrieved.getDocumentUniqueId());
183 assertEquals("After update - authorInstitution", authorInstitution, retrieved.getAuthorInstitution());
184 assertEquals("After update - authorRole", authorRole, retrieved.getAuthorRole());
185 assertEquals("After update - authorSpecialty", authorSpecialty, retrieved.getAuthorSpecialty());
186 assertEquals("After update - availablityStatus", availablityStatus, retrieved.getAvailablityStatus());
187 assertEquals("After update - classCode", classCode, retrieved.getClassCode());
188 assertEquals("After update - classCodeScheme", classCodeScheme, retrieved.getClassCodeScheme());
189 assertEquals("After update - classCodeDisplayName", classCodeDisplayName, retrieved.getClassCodeDisplayName());
190 assertEquals("After update - confidentialityCode", confidentialityCode, retrieved.getConfidentialityCode());
191 assertEquals("After update - confidentialityCodeScheme", confidentialityCodeScheme, retrieved.getConfidentialityCodeScheme());
192 assertEquals("After update - confidentialityCodeDisplayName", confidentialityCodeDisplayName, retrieved.getConfidentialityCodeDisplayName());
193 assertEquals("After update - creationTime", creationTime, retrieved.getCreationTime());
194 assertEquals("After update - formatCode", formatCode, retrieved.getFormatCode());
195 assertEquals("After update - formatCodeScheme", formatCodeScheme, retrieved.getFormatCodeScheme());
196 assertEquals("After update - formatCodeDisplayName", formatCodeDisplayName, retrieved.getFormatCodeDisplayName());
197 assertEquals("After update - patientId", patientId, retrieved.getPatientId());
198 assertEquals("After update - serviceStartTime", serviceStartTime, retrieved.getServiceStartTime());
199 assertEquals("After update - serviceStopTime", serviceStopTime, retrieved.getServiceStopTime());
200 assertEquals("After update - status", status, retrieved.getStatus());
201 assertEquals("After update - comments", comments, retrieved.getComments());
202 assertEquals("After update - hash", sCompareHash, retrieved.getHash());
203 assertEquals("After update - facilityCode", facilityCode, retrieved.getFacilityCode());
204 assertEquals("After update - facilityCodeScheme", facilityCodeScheme, retrieved.getFacilityCodeScheme());
205 assertEquals("After update - facilityCodeDisplayName", facilityCodeDisplayName, retrieved.getFacilityCodeDisplayName());
206 assertEquals("After update - intendedRecipientPerson", intendedRecipientPerson, retrieved.getIntendedRecipientPerson());
207 assertEquals("After update - intendedRecipientOrganization", intendedRecipientOrganization, retrieved.getIntendedRecipientOrganization());
208 assertEquals("After update - languageCode", languageCode, retrieved.getLanguageCode());
209 assertEquals("After update - legalAuthenticator", legalAuthenticator, retrieved.getLegalAuthenticator());
210 assertEquals("After update - mimeType", mimeType, retrieved.getMimeType());
211 assertEquals("After update - parentDocumentId", parentDocumentId, retrieved.getParentDocumentId());
212 assertEquals("After update - parentDocumentRelationship", parentDocumentRelationship, retrieved.getParentDocumentRelationship());
213 assertEquals("After update - practiceSetting", practiceSetting, retrieved.getPracticeSetting());
214 assertEquals("After update - practiceSettingScheme", practiceSettingScheme, retrieved.getPracticeSettingScheme());
215 assertEquals("After update - practiceSettingDisplayName", practiceSettingDisplayName, retrieved.getPracticeSettingDisplayName());
216 assertEquals("After update - size", size, retrieved.getSize());
217 assertEquals("After update - sourcePatientId", sourcePatientId, retrieved.getSourcePatientId());
218 assertEquals("After update - pid3", pid3, retrieved.getPid3());
219 assertEquals("After update - pid5", pid5, retrieved.getPid5());
220 assertEquals("After update - pid8", pid8, retrieved.getPid8());
221 assertEquals("After update - pid7", pid7, retrieved.getPid7());
222 assertEquals("After update - pid11", pid11, retrieved.getPid11());
223 assertEquals("After update - typeCode", typeCode, retrieved.getTypeCode());
224 assertEquals("After update - typeCodeScheme", typeCodeScheme, retrieved.getTypeCodeScheme());
225 assertEquals("After update - typeCodeDisplayName", typeCodeDisplayName, retrieved.getTypeCodeDisplayName());
226 assertEquals("After update - documentUri", documentUri, retrieved.getDocumentUri());
227 assertEquals("After update - rawData", rawData, new String(retrieved.getRawData()));
228 assertTrue("After update - persistent flag", retrieved.isPersistent());
229
230 eventCodes = retrieved.getEventCodes();
231 assertNotNull("After update - audit codes null", eventCodes);
232 assertEquals("After update - audit codes size", 2, eventCodes.size());
233
234// Iterator<EventCode> iter = eventCodes.iterator();
235// while(iter.hasNext())
236// {
237// EventCode code = iter.next();
238// assertNotNull("After insert - contained event code was null", code);
239// assertNotNull("After insert - event code id was null", code.getEventCodeId());
240// assertEquals("After insert - eventCode1", eventCode1, code.getEventCode());
241// assertEquals("After insert - eventCodeScheme1", eventCodeScheme1, code.getEventCodeScheme());
242// assertEquals("After insert - eventCodeDisplayName1", eventCodeDisplayName1, code.getEventCodeDisplayName());
243// }
244
245 // Query by patient id only
246 DocumentQueryParams queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, null, null, null);
247 List<Document> queryResults = docService.documentQuery(queryParams);
248 assertNotNull("Query by patient id results null", queryResults);
249 assertFalse("Query by patient id results empty", queryResults.isEmpty());
250
251 // Query by class code
252 queryParams = buildQueryParams(patientId, classCode, null, null, null, null, null, null, null, null, null);
253 queryResults = docService.documentQuery(queryParams);
254 assertNotNull("Query by class code results null", queryResults);
255 assertFalse("Query by class code results empty", queryResults.isEmpty());
256
257 // Query by class code scheme
258 queryParams = buildQueryParams(patientId, null, classCodeScheme, null, null, null, null, null, null, null, null);
259 queryResults = docService.documentQuery(queryParams);
260 assertNotNull("Query by class code scheme results null", queryResults);
261 assertFalse("Query by class code scheme results empty", queryResults.isEmpty());
262
263 // Query by creation date from
264 Date creationTimeFrom = new SimpleDateFormat("MM/dd/yyyy.HH:mm:ss").parse("04/04/2004.04:04:03");
265 queryParams = buildQueryParams(patientId, null, null, creationTimeFrom, null, null, null, null, null, null, null);
266 queryResults = docService.documentQuery(queryParams);
267 assertNotNull("Query by creation date from null results null", queryResults);
268 assertFalse("Query by creation date from results empty", queryResults.isEmpty());
269
270 // Query by creation date to
271 Date creationTimeTo = new SimpleDateFormat("MM/dd/yyyy.HH:mm:ss").parse("04/04/2004.04:04:05");
272 queryParams = buildQueryParams(patientId, null, null, null, creationTimeTo, null, null, null, null, null, null);
273 queryResults = docService.documentQuery(queryParams);
274 assertNotNull("Query by creation date to results null", queryResults);
275 assertFalse("Query by creation date to results empty", queryResults.isEmpty());
276
277 // Query by creation date from and to
278 queryParams = buildQueryParams(patientId, null, null, creationTimeFrom, creationTimeTo, null, null, null, null, null, null);
279 queryResults = docService.documentQuery(queryParams);
280 assertNotNull("Query by creation date from and to results null", queryResults);
281 assertFalse("Query by creation date from and to results empty", queryResults.isEmpty());
282
283 // Query by service start date from
284 Date serviceStartTimeFrom = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050504");
285 queryParams = buildQueryParams(patientId, null, null, null, null, serviceStartTimeFrom, null, null, null, null, null);
286 queryResults = docService.documentQuery(queryParams);
287 assertNotNull("Query by service start date from results null", queryResults);
288 assertFalse("Query by service start date from results empty", queryResults.isEmpty());
289
290 // Query by service start date to
291 Date serviceStartTimeTo = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050506");
292 queryParams = buildQueryParams(patientId, null, null, null, null, null, serviceStartTimeTo, null, null, null, null);
293 queryResults = docService.documentQuery(queryParams);
294 assertNotNull("Query by service start date to results null", queryResults);
295 assertFalse("Query by service start date to results empty", queryResults.isEmpty());
296
297 // Query by service start date from and to
298 queryParams = buildQueryParams(patientId, null, null, null, null, serviceStartTimeFrom, serviceStartTimeTo, null, null, null, null);
299 queryResults = docService.documentQuery(queryParams);
300 assertNotNull("Query by service start date from and to results null", queryResults);
301 assertFalse("Query by service start date from and to results empty", queryResults.isEmpty());
302
303 // Query by service stop time from
304 Date serviceStopTimeFrom = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060605");
305 queryParams = buildQueryParams(patientId, null, null, null, null, null, null, serviceStopTimeFrom, null, null, null);
306 queryResults = docService.documentQuery(queryParams);
307 assertNotNull("Query by service stop time from results null", queryResults);
308 assertFalse("Query by service stop time from results empty", queryResults.isEmpty());
309
310 // Query by service stop time to
311 Date serviceStopTimeTo = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060607");
312 queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, serviceStopTimeTo, null, null);
313 queryResults = docService.documentQuery(queryParams);
314 assertNotNull("Query by service stop time to results null", queryResults);
315 assertFalse("Query by service stop time to results empty", queryResults.isEmpty());
316
317 // Query by service stop time from and to
318 queryParams = buildQueryParams(patientId, null, null, null, null, null, null, serviceStopTimeFrom, serviceStopTimeTo, null, null);
319 queryResults = docService.documentQuery(queryParams);
320 assertNotNull("Query by service stop time from and to results null", queryResults);
321 assertFalse("Query by service stop time from and to results empty", queryResults.isEmpty());
322
323 // Query by status
324 queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, null, status, null);
325 queryResults = docService.documentQuery(queryParams);
326 assertNotNull("Query by status results null", queryResults);
327 assertFalse("Query by status results empty", queryResults.isEmpty());
328
329 // Query by document unique id
330 queryParams = buildQueryParams(null, null, null, null, null, null, null, null, null, null, documentUniqueId);
331 queryResults = docService.documentQuery(queryParams);
332 assertNotNull("Query by document unique id results null", queryResults);
333 assertFalse("Query by document unique id results empty", queryResults.isEmpty());
334
335 // Query by all parameters
336 queryParams = buildQueryParams(patientId, classCode, classCodeScheme, creationTimeFrom, creationTimeTo, serviceStartTimeFrom, serviceStartTimeTo, serviceStopTimeFrom, serviceStopTimeTo, status, documentUniqueId);
337 queryResults = docService.documentQuery(queryParams);
338 assertNotNull("Query by all parameters results null", queryResults);
339 assertFalse("Query by all parameters results empty", queryResults.isEmpty());
340
341 // Query with invalid patient id - Should return null or empty list - not exception
342 queryParams = buildQueryParams("invalidpatientid", classCode, classCodeScheme, creationTimeFrom, creationTimeTo, serviceStartTimeFrom, serviceStartTimeTo, serviceStopTimeFrom, serviceStopTimeTo, status, documentUniqueId);
343 queryResults = docService.documentQuery(queryParams);
344 assertTrue("Query using invalid patient id not empty", ((queryResults == null) || (queryResults.isEmpty())));
345
346 // Query by creation date from (inclusive)
347 queryParams = buildQueryParams(patientId, null, null, creationTime, null, null, null, null, null, null, null);
348 queryResults = docService.documentQuery(queryParams);
349 assertNotNull("Query by creation date from (inclusive) results null", queryResults);
350 assertFalse("Query by creation date from (inclusive) results empty", queryResults.isEmpty());
351
352 // Delete
353 docService.deleteDocument(retrieved);
354 retrieved = docService.getDocument(documentId);
355 assertNull("Document not null after delete", retrieved);
356
357 }
358 catch (Throwable t)
359 {
360 t.printStackTrace();
361 fail("testDocumentOperations: " + t.getMessage());
362 }
363 System.out.println("End testDocumentOperations");
364 }
365
366 private DocumentQueryParams buildQueryParams(String patientId, String classCode, String classCodeScheme, Date creationTimeFrom, Date creationTimeTo, Date serviceStartTimeFrom, Date serviceStartTimeTo, Date serviceStopTimeFrom, Date serviceStopTimeTo, String status, String documentUniqueId)
367 {
368 DocumentQueryParams params = new DocumentQueryParams();
369
370 params.setPatientId(patientId);
371 if(classCode != null)
372 {
373 List<String> classCodes = new ArrayList<String>();
374 classCodes.add(classCode);
375 params.setClassCodes(classCodes);
376 }
377 params.setClassCodeScheme(classCodeScheme);
378 params.setCreationTimeFrom(creationTimeFrom);
379 params.setCreationTimeTo(creationTimeTo);
380 params.setServiceStartTimeFrom(serviceStartTimeFrom);
381 params.setServiceStartTimeTo(serviceStartTimeTo);
382 params.setServiceStopTimeFrom(serviceStopTimeFrom);
383 params.setServiceStopTimeTo(serviceStopTimeTo);
384 if(status != null)
385 {
386 List<String> statuses = new ArrayList<String>();
387 statuses.add(status);
388 params.setStatuses(statuses);
389 }
390 if (documentUniqueId != null)
391 {
392 List<String> documentUniqueIds = new ArrayList<String>();
393 documentUniqueIds.add(documentUniqueId);
394 params.setDocumentUniqueId(documentUniqueIds);
395 }
396
397 return params;
398 }
399
400 private String sampleC32()
401 {
402 StringBuffer sb = new StringBuffer();
403
404 sb.append("<ClinicalDocument xsi:schemaLocation=\"urn:hl7-org:v3 http://xreg2.nist.gov:8080/hitspValidation/schema/cdar2c32/infrastructure/cda/C32_CDA.xsd\" xmlns:sdtc=\"urn:hl7-org:sdtc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:hl7-org:v3\">");
405 sb.append(" <typeId extension=\"POCD_HD000040\" root=\"2.16.840.1.113883.1.3\"/>");
406 sb.append(" <templateId assigningAuthorityName=\"CDA/R2\" root=\"2.16.840.1.113883.3.27.1776\"/>");
407 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1\"/>");
408 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.1\"/>");
409 sb.append(" <id extension=\"Laika C32 Test\" assigningAuthorityName=\"Laika: An Open Source EHR Testing Framework projectlaika.org\" root=\"2.16.840.1.113883.3.72\"/>");
410 sb.append(" <code code=\"34133-9\" displayName=\"Summarization of patient data\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
411 sb.append(" <title>Katy Bradford</title>");
412 sb.append(" <effectiveTime value=\"20080424103703-0500\"/>");
413 sb.append(" <confidentialityCode/>");
414 sb.append(" <languageCode code=\"en-US\"/>");
415 sb.append(" <recordTarget>");
416 sb.append(" <patientRole>");
417 sb.append(" <id extension=\"000-00-0002\"/>");
418 sb.append(" <addr>");
419 sb.append(" <streetAddressLine>437 TURNER LANE</streetAddressLine>");
420 sb.append(" <city>LEESBURG</city>");
421 sb.append(" <state>VA</state>");
422 sb.append(" <postalCode>20176</postalCode>");
423 sb.append(" <country>US</country>");
424 sb.append(" </addr>");
425 sb.append(" <telecom value=\"tel:703-555-0000\" use=\"HP\"/>");
426 sb.append(" <telecom value=\"tel:703-555-0001\" use=\"WP\"/>");
427 sb.append(" <telecom value=\"tel:703-555-0002\" use=\"MC\"/>");
428 sb.append(" <telecom value=\"mailto:katy.bradford@here.com\"/>");
429 sb.append(" <telecom value=\"http://www.here.com/katy\"/>");
430 sb.append(" <patient>");
431 sb.append(" <name>");
432 sb.append(" <prefix>MRS.</prefix>");
433 sb.append(" <given qualifier=\"CL\">KATY</given>");
434 sb.append(" <family qualifier=\"BR\">BRADFORD</family>");
435 sb.append(" </name>");
436 sb.append(" <administrativeGenderCode code=\"F\" displayName=\"Female\" codeSystemName=\"HL7 AdministrativeGenderCodes\" codeSystem=\"2.16.840.1.113883.5.1\">");
437 sb.append(" <originalText>AdministrativeGender codes are: M (Male), F (Female) or UN (Undifferentiated).</originalText>");
438 sb.append(" </administrativeGenderCode>");
439 sb.append(" <birthTime value=\"19740730\"/>");
440 sb.append(" <maritalStatusCode code=\"M\" displayName=\"Married\" codeSystemName=\"MaritalStatusCode\" codeSystem=\"2.16.840.1.113883.5.2\"/>");
441 sb.append(" <religiousAffiliationCode code=\"1005\" displayName=\"Anglican\" codeSystemName=\"Religious Affiliation\" codeSystem=\"2.16.840.1.113883.5.1076\"/>");
442 sb.append(" <raceCode code=\"2111-3\" displayName=\"French\" codeSystemName=\"CDC Race and Ethnicity\" codeSystem=\"2.16.840.1.113883.6.238\"/>");
443 sb.append(" <ethnicGroupCode code=\"2142-8\" displayName=\"Belearic Islander\" codeSystemName=\"CDC Race and Ethnicity\" codeSystem=\"2.16.840.1.113883.6.238\"/>");
444 sb.append(" <languageCommunication>");
445 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.2\"/>");
446 sb.append(" <languageCode code=\"as-AZ\"/>");
447 sb.append(" <modeCode code=\"RSGN\" displayName=\"Received Signed\" codeSystemName=\"LanguageAbilityMode\" codeSystem=\"2.16.840.1.113883.5.60\"/>");
448 sb.append(" <preferenceInd value=\"true\"/>");
449 sb.append(" </languageCommunication>");
450 sb.append(" <languageCommunication>");
451 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.2\"/>");
452 sb.append(" <languageCode code=\"cs-AU\"/>");
453 sb.append(" <modeCode code=\"EWR\" displayName=\"Expressed Written\" codeSystemName=\"LanguageAbilityMode\" codeSystem=\"2.16.840.1.113883.5.60\"/>");
454 sb.append(" <preferenceInd value=\"true\"/>");
455 sb.append(" </languageCommunication>");
456 sb.append(" </patient>");
457 sb.append(" </patientRole>");
458 sb.append(" </recordTarget>");
459 sb.append(" <author>");
460 sb.append(" <time value=\"20080401\"/>");
461 sb.append(" <assignedAuthor>");
462 sb.append(" <id root=\"8798704325\"/>");
463 sb.append(" <assignedPerson>");
464 sb.append(" <name>");
465 sb.append(" <prefix>MR</prefix>");
466 sb.append(" <given qualifier=\"CL\">BOB</given>");
467 sb.append(" <family qualifier=\"BR\">DEVRIESE</family>");
468 sb.append(" <prefix>ESQ</prefix>");
469 sb.append(" </name>");
470 sb.append(" </assignedPerson>");
471 sb.append(" <representedOrganization>");
472 sb.append(" <id root=\"2.16.840.1.113883.19.5\"/>");
473 sb.append(" <name>AJAX INSURANCE</name>");
474 sb.append(" </representedOrganization>");
475 sb.append(" </assignedAuthor>");
476 sb.append(" </author>");
477 sb.append(" <custodian>");
478 sb.append(" <assignedCustodian>");
479 sb.append(" <representedCustodianOrganization>");
480 sb.append(" <id/>");
481 sb.append(" </representedCustodianOrganization>");
482 sb.append(" </assignedCustodian>");
483 sb.append(" </custodian>");
484 sb.append(" <participant typeCode=\"IND\">");
485 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.3\"/>");
486 sb.append(" <time>");
487 sb.append(" <low value=\"20080401\"/>");
488 sb.append(" <high value=\"20080430\"/>");
489 sb.append(" </time>");
490 sb.append(" <associatedEntity classCode=\"AGNT\">");
491 sb.append(" <code code=\"FRND\" displayName=\"Unrelated Friend\" codeSystemName=\"RoleCode\" codeSystem=\"2.16.840.1.113883.5.111\"/>");
492 sb.append(" <addr>");
493 sb.append(" <streetAddressLine>439 TURNER LANE</streetAddressLine>");
494 sb.append(" <city>LEESBURG</city>");
495 sb.append(" <state>VA</state>");
496 sb.append(" <postalCode>20176</postalCode>");
497 sb.append(" <country>US</country>");
498 sb.append(" </addr>");
499 sb.append(" <telecom value=\"tel:703-555-0003\" use=\"HP\"/>");
500 sb.append(" <telecom value=\"tel:703-555-0004\" use=\"WP\"/>");
501 sb.append(" <telecom value=\"tel:703-555-0005\" use=\"MC\"/>");
502 sb.append(" <telecom value=\"tel:703-555-0006\" use=\"HV\"/>");
503 sb.append(" <telecom value=\"mailto:terry.shaw@here.com\"/>");
504 sb.append(" <telecom value=\"http://www.here.com/terry\"/>");
505 sb.append(" <associatedPerson>");
506 sb.append(" <name>");
507 sb.append(" <prefix>MS.</prefix>");
508 sb.append(" <given qualifier=\"CL\">TERRY</given>");
509 sb.append(" <family qualifier=\"BR\">SHAW</family>");
510 sb.append(" <suffix>PHD</suffix>");
511 sb.append(" </name>");
512 sb.append(" </associatedPerson>");
513 sb.append(" </associatedEntity>");
514 sb.append(" </participant>");
515 sb.append(" <documentationOf>");
516 sb.append(" <serviceEvent classCode=\"PCPR\">");
517 sb.append(" <effectiveTime>");
518 sb.append(" <low value=\"0\"/>");
519 sb.append(" <high value=\"2010\"/>");
520 sb.append(" </effectiveTime>");
521 sb.append(" <performer typeCode=\"PRF\">");
522 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.4\"/>");
523 sb.append(" <functionCode code=\"PP\" displayName=\"Primary Care Provider\" codeSystemName=\"Provider Role\" codeSystem=\"2.16.840.1.113883.12.443\">");
524 sb.append(" <originalText>PCP</originalText>");
525 sb.append(" </functionCode>");
526 sb.append(" <time>");
527 sb.append(" <low value=\"20080409\"/>");
528 sb.append(" <high value=\"20080430\"/>");
529 sb.append(" </time>");
530 sb.append(" <assignedEntity>");
531 sb.append(" <id/>");
532 sb.append(" <code code=\"300000000X\" displayName=\"Managed Care Organizations\" codeSystemName=\"ProviderCodes\" codeSystem=\"2.16.840.1.113883.6.101\"/>");
533 sb.append(" <addr>");
534 sb.append(" <streetAddressLine>10300 MAIN ST.</streetAddressLine>");
535 sb.append(" <streetAddressLine>SUITE 100</streetAddressLine>");
536 sb.append(" <city>ASHBURN</city>");
537 sb.append(" <state>VA</state>");
538 sb.append(" <postalCode>20176</postalCode>");
539 sb.append(" <country>AF</country>");
540 sb.append(" </addr>");
541 sb.append(" <telecom value=\"tel:703-555-0007\" use=\"HP\"/>");
542 sb.append(" <telecom value=\"tel:703-555-0008\" use=\"WP\"/>");
543 sb.append(" <telecom value=\"tel:703-555-0009\" use=\"MC\"/>");
544 sb.append(" <telecom value=\"tel:703-555-0010\" use=\"HV\"/>");
545 sb.append(" <telecom value=\"mailto:jw@doctors.com\"/>");
546 sb.append(" <telecom value=\"http://www.doctors.com/jw\"/>");
547 sb.append(" <assignedPerson>");
548 sb.append(" <name>");
549 sb.append(" <prefix>DR.</prefix>");
550 sb.append(" <given qualifier=\"CL\">JANE</given>");
551 sb.append(" <family qualifier=\"BR\">WATSON</family>");
552 sb.append(" <suffix>MD</suffix>");
553 sb.append(" </name>");
554 sb.append(" </assignedPerson>");
555 sb.append(" <representedOrganization>");
556 sb.append(" <id assigningAuthorityName=\"Doctors Inc.\" root=\"2.16.840.1.113883.3.72.5\"/>");
557 sb.append(" <name>Doctors Inc.</name>");
558 sb.append(" </representedOrganization>");
559 sb.append(" <patient xmlns=\"urn:hl7-org:sdtc\">");
560 sb.append(" <id extension=\"MedicalRecordNumber\" root=\"x164353Y1343\" xmlns=\"urn:hl7-org:sdtc\"/>");
561 sb.append(" </patient>");
562 sb.append(" </assignedEntity>");
563 sb.append(" </performer>");
564 sb.append(" </serviceEvent>");
565 sb.append(" </documentationOf>");
566 sb.append(" <component>");
567 sb.append(" <structuredBody>");
568 sb.append(" <component>");
569 sb.append(" <section>");
570 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.11\"/>");
571 sb.append(" <code code=\"11450-4\" displayName=\"Problems\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
572 sb.append(" <title>Conditions or Problems</title>");
573 sb.append(" <text>");
574 sb.append(" <table border=\"1\" width=\"100%\">");
575 sb.append(" <thead>");
576 sb.append(" <tr>");
577 sb.append(" <th>Problem Name</th>");
578 sb.append(" <th>Problem Type</th>");
579 sb.append(" <th>Problem Date</th>");
580 sb.append(" </tr>");
581 sb.append(" </thead>");
582 sb.append(" <tbody>");
583 sb.append(" <tr>");
584 sb.append(" <td>");
585 sb.append(" <content ID=\"problem-1021520383\">Sprained ankle</content>");
586 sb.append(" </td>");
587 sb.append(" <td>Diagnosis</td>");
588 sb.append(" <td>20080401</td>");
589 sb.append(" </tr>");
590 sb.append(" <tr>");
591 sb.append(" <td>");
592 sb.append(" <content ID=\"problem-1021520384\">Migraines</content>");
593 sb.append(" </td>");
594 sb.append(" <td>Problem</td>");
595 sb.append(" <td>20080421</td>");
596 sb.append(" </tr>");
597 sb.append(" </tbody>");
598 sb.append(" </table>");
599 sb.append(" </text>");
600 sb.append(" <entry>");
601 sb.append(" <act classCode=\"ACT\" moodCode=\"EVN\">");
602 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.27\"/>");
603 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.7\"/>");
604 sb.append(" <id/>");
605 sb.append(" <code nullFlavor=\"NA\"/>");
606 sb.append(" <effectiveTime>");
607 sb.append(" <low value=\"20080401\"/>");
608 sb.append(" <high value=\"20080430\"/>");
609 sb.append(" </effectiveTime>");
610 sb.append(" <entryRelationship typeCode=\"SUBJ\">");
611 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
612 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.28\"/>");
613 sb.append(" <code code=\"282291009\" displayName=\"Diagnosis\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
614 sb.append(" <text>");
615 sb.append(" <reference value=\"#problem-1021520383\"/>");
616 sb.append(" </text>");
617 sb.append(" <statusCode code=\"completed\"/>");
618 sb.append(" </observation>");
619 sb.append(" </entryRelationship>");
620 sb.append(" </act>");
621 sb.append(" </entry>");
622 sb.append(" <entry>");
623 sb.append(" <act classCode=\"ACT\" moodCode=\"EVN\">");
624 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.27\"/>");
625 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.7\"/>");
626 sb.append(" <id/>");
627 sb.append(" <code nullFlavor=\"NA\"/>");
628 sb.append(" <effectiveTime>");
629 sb.append(" <low value=\"20080421\"/>");
630 sb.append(" <high value=\"20080425\"/>");
631 sb.append(" </effectiveTime>");
632 sb.append(" <entryRelationship typeCode=\"SUBJ\">");
633 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
634 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.28\"/>");
635 sb.append(" <code code=\"55607006\" displayName=\"Problem\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
636 sb.append(" <text>");
637 sb.append(" <reference value=\"#problem-1021520384\"/>");
638 sb.append(" </text>");
639 sb.append(" <statusCode code=\"completed\"/>");
640 sb.append(" </observation>");
641 sb.append(" </entryRelationship>");
642 sb.append(" </act>");
643 sb.append(" </entry>");
644 sb.append(" </section>");
645 sb.append(" </component>");
646 sb.append(" <component>");
647 sb.append(" <section>");
648 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.2\"/>");
649 sb.append(" <code code=\"48765-2\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
650 sb.append(" <title>Allergies, Adverse Reactions, Alerts</title>");
651 sb.append(" <text>");
652 sb.append(" <table border=\"1\" width=\"100%\">");
653 sb.append(" <thead>");
654 sb.append(" <tr>");
655 sb.append(" <th>Substance</th>");
656 sb.append(" <th>Event Type</th>");
657 sb.append(" <th>Severity</th>");
658 sb.append(" </tr>");
659 sb.append(" </thead>");
660 sb.append(" <tbody>");
661 sb.append(" <tr>");
662 sb.append(" <td>Trucare</td>");
663 sb.append(" <td>Drug Allergy</td>");
664 sb.append(" <td>");
665 sb.append(" <content ID=\"severity-823358778\">Mild</content>");
666 sb.append(" </td>");
667 sb.append(" </tr>");
668 sb.append(" <tr>");
669 sb.append(" <td>peanuts</td>");
670 sb.append(" <td>Food Allergy</td>");
671 sb.append(" <td>");
672 sb.append(" <content ID=\"severity-823358779\">Severe</content>");
673 sb.append(" </td>");
674 sb.append(" </tr>");
675 sb.append(" </tbody>");
676 sb.append(" </table>");
677 sb.append(" </text>");
678 sb.append(" <entry>");
679 sb.append(" <act classCode=\"ACT\" moodCode=\"EVN\">");
680 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.27\"/>");
681 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.6\"/>");
682 sb.append(" <id root=\"2C748172-7CC2-4902-8AF0-23A105C4401B\"/>");
683 sb.append(" <code nullFlavor=\"NA\"/>");
684 sb.append(" <entryRelationship typeCode=\"SUBJ\">");
685 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
686 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.18\"/>");
687 sb.append(" <code code=\"416098002\" displayName=\"Drug Allergy\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
688 sb.append(" <statusCode code=\"completed\"/>");
689 sb.append(" <effectiveTime>");
690 sb.append(" <low value=\"20080401\"/>");
691 sb.append(" <high value=\"20080430\"/>");
692 sb.append(" </effectiveTime>");
693 sb.append(" <participant typeCode=\"CSM\">");
694 sb.append(" <participantRole classCode=\"MANU\">");
695 sb.append(" <playingEntity classCode=\"MMAT\">");
696 sb.append(" <code code=\"00504-554-4433\" displayName=\"Trucare\" codeSystemName=\"RxNorm\" codeSystem=\"2.16.840.1.113883.6.88\"/>");
697 sb.append(" <name>Trucare</name>");
698 sb.append(" </playingEntity>");
699 sb.append(" </participantRole>");
700 sb.append(" </participant>");
701 sb.append(" </observation>");
702 sb.append(" </entryRelationship>");
703 sb.append(" </act>");
704 sb.append(" </entry>");
705 sb.append(" <entry>");
706 sb.append(" <act classCode=\"ACT\" moodCode=\"EVN\">");
707 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.27\"/>");
708 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.6\"/>");
709 sb.append(" <id root=\"2C748172-7CC2-4902-8AF0-23A105C4401B\"/>");
710 sb.append(" <code nullFlavor=\"NA\"/>");
711 sb.append(" <entryRelationship typeCode=\"SUBJ\">");
712 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
713 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.18\"/>");
714 sb.append(" <code code=\"414285001\" displayName=\"Food Allergy\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
715 sb.append(" <statusCode code=\"completed\"/>");
716 sb.append(" <effectiveTime>");
717 sb.append(" <low value=\"20080414\"/>");
718 sb.append(" <high value=\"20080430\"/>");
719 sb.append(" </effectiveTime>");
720 sb.append(" <participant typeCode=\"CSM\">");
721 sb.append(" <participantRole classCode=\"MANU\">");
722 sb.append(" <playingEntity classCode=\"MMAT\">");
723 sb.append(" <code code=\"75443544\" displayName=\"peanuts\" codeSystemName=\"RxNorm\" codeSystem=\"2.16.840.1.113883.6.88\"/>");
724 sb.append(" <name>peanuts</name>");
725 sb.append(" </playingEntity>");
726 sb.append(" </participantRole>");
727 sb.append(" </participant>");
728 sb.append(" </observation>");
729 sb.append(" </entryRelationship>");
730 sb.append(" </act>");
731 sb.append(" </entry>");
732 sb.append(" </section>");
733 sb.append(" </component>");
734 sb.append(" <component>");
735 sb.append(" <section>");
736 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.9\"/>");
737 sb.append(" <code code=\"48768-6\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
738 sb.append(" <title>Insurance Providers</title>");
739 sb.append(" <text>");
740 sb.append(" <table border=\"1\" width=\"100%\">");
741 sb.append(" <thead>");
742 sb.append(" <tr>");
743 sb.append(" <th>Insurance Provider Name</th>");
744 sb.append(" <th>Insurance Provider Type</th>");
745 sb.append(" <th>Insurance Provider Group Number</th>");
746 sb.append(" </tr>");
747 sb.append(" </thead>");
748 sb.append(" <tbody>");
749 sb.append(" <tr>");
750 sb.append(" <td>AJAX INSURANCE</td>");
751 sb.append(" <td>AJAX INSURANCE</td>");
752 sb.append(" <td>G1854093</td>");
753 sb.append(" </tr>");
754 sb.append(" </tbody>");
755 sb.append(" </table>");
756 sb.append(" </text>");
757 sb.append(" <entry>");
758 sb.append(" <act classCode=\"ACT\" moodCode=\"DEF\">");
759 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.20\"/>");
760 sb.append(" <id extension=\"GroupOrContract#\" root=\"G1854093\"/>");
761 sb.append(" <code code=\"48768-6\" displayName=\"Payment Sources\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
762 sb.append(" <statusCode code=\"completed\"/>");
763 sb.append(" <entryRelationship typeCode=\"COMP\">");
764 sb.append(" <act classCode=\"ACT\" moodCode=\"EVN\">");
765 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.26\"/>");
766 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.5\"/>");
767 sb.append(" <id extension=\"GroupOrContract#\" root=\"G1854093\"/>");
768 sb.append(" <code code=\"GP\" displayName=\"Group Policy\" codeSystemName=\"X12N-1336\" codeSystem=\"2.16.840.1.113883.6.255.1336\"/>");
769 sb.append(" <statusCode code=\"completed\"/>");
770 sb.append(" <performer typeCode=\"PRF\">");
771 sb.append(" <assignedEntity classCode=\"ASSIGNED\">");
772 sb.append(" <id root=\"2.16.840.1.113883.3.88.3.1\"/>");
773 sb.append(" <representedOrganization classCode=\"ORG\">");
774 sb.append(" <id root=\"2.16.840.1.113883.19.5\"/>");
775 sb.append(" <name>AJAX INSURANCE</name>");
776 sb.append(" </representedOrganization>");
777 sb.append(" </assignedEntity>");
778 sb.append(" </performer>");
779 sb.append(" <participant typeCode=\"HLD\">");
780 sb.append(" <participantRole classCode=\"IND\">");
781 sb.append(" <id extension=\"7095365879\" root=\"AssignAuthorityGUID\"/>");
782 sb.append(" <addr>");
783 sb.append(" </addr>");
784 sb.append(" <playingEntity>");
785 sb.append(" <name>");
786 sb.append(" </name>");
787 sb.append(" <sdtc:birthTime value=\"19630408\"/>");
788 sb.append(" </playingEntity>");
789 sb.append(" </participantRole>");
790 sb.append(" </participant>");
791 sb.append(" </act>");
792 sb.append(" </entryRelationship>");
793 sb.append(" </act>");
794 sb.append(" </entry>");
795 sb.append(" </section>");
796 sb.append(" </component>");
797 sb.append(" <component>");
798 sb.append(" <section>");
799 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.8\"/>");
800 sb.append(" <code code=\"10160-0\" displayName=\"History of medication use\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
801 sb.append(" <title>Medications</title>");
802 sb.append(" <text>");
803 sb.append(" <table border=\"1\" width=\"100%\">");
804 sb.append(" <thead>");
805 sb.append(" <tr>");
806 sb.append(" <th>Product Display Name</th>");
807 sb.append(" <th>Free Text Brand Name</th>");
808 sb.append(" <th>Ordered Value</th>");
809 sb.append(" <th>Ordered Unit</th>");
810 sb.append(" <th>Expiration Time</th>");
811 sb.append(" </tr>");
812 sb.append(" </thead>");
813 sb.append(" <tbody>");
814 sb.append(" <tr>");
815 sb.append(" <td>");
816 sb.append(" <content ID=\"medication-809983199\">Hyaline</content>");
817 sb.append(" </td>");
818 sb.append(" <td>Hyalinia</td>");
819 sb.append(" <td>30.0</td>");
820 sb.append(" <td>TAB</td>");
821 sb.append(" <td>20080430</td>");
822 sb.append(" </tr>");
823 sb.append(" </tbody>");
824 sb.append(" </table>");
825 sb.append(" </text>");
826 sb.append(" <entry>");
827 sb.append(" <substanceAdministration classCode=\"SBADM\" moodCode=\"EVN\">");
828 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.24\"/>");
829 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.8\"/>");
830 sb.append(" <id/>");
831 sb.append(" <consumable>");
832 sb.append(" <manufacturedProduct classCode=\"MANU\">");
833 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.53\"/>");
834 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.9\"/>");
835 sb.append(" <manufacturedMaterial classCode=\"MMAT\" determinerCode=\"KIND\">");
836 sb.append(" <code code=\"87643566\" displayName=\"Hyaline\" codeSystemName=\"RxNorm\" codeSystem=\"2.16.840.1.113883.6.88\">");
837 sb.append(" <originalText>Hyaline</originalText>");
838 sb.append(" </code>");
839 sb.append(" <name>Hyalinia</name>");
840 sb.append(" </manufacturedMaterial>");
841 sb.append(" </manufacturedProduct>");
842 sb.append(" </consumable>");
843 sb.append(" <entryRelationship typeCode=\"SUBJ\">");
844 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
845 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.11.32.10\"/>");
846 sb.append(" <code code=\"73639000\" displayName=\"Prescription Drug\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
847 sb.append(" <statusCode code=\"completed\"/>");
848 sb.append(" </observation>");
849 sb.append(" </entryRelationship>");
850 sb.append(" <entryRelationship typeCode=\"REFR\">");
851 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
852 sb.append(" <code code=\"33999-4\" displayName=\"Status\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
853 sb.append(" <statusCode code=\"Dispensed\"/>");
854 sb.append(" <value code=\"55561003\" displayName=\"Active\" xsi:type=\"CE\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
855 sb.append(" </observation>");
856 sb.append(" </entryRelationship>");
857 sb.append(" <entryRelationship typeCode=\"REFR\">");
858 sb.append(" <supply classCode=\"SPLY\" moodCode=\"INT\">");
859 sb.append(" <templateId root=\"2.16.840.1.113883.3.88.1.11.32.11\"/>");
860 sb.append(" <id extension=\"SCRIP#\" root=\"TAB\"/>");
861 sb.append(" <effectiveTime value=\"20080430\"/>");
862 sb.append(" <quantity value=\"30.0\"/>");
863 sb.append(" </supply>");
864 sb.append(" </entryRelationship>");
865 sb.append(" </substanceAdministration>");
866 sb.append(" </entry>");
867 sb.append(" </section>");
868 sb.append(" </component>");
869 sb.append(" <component>");
870 sb.append(" <section>");
871 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.1\"/>");
872 sb.append(" <code code=\"42348-3\" codeSystemName=\"LOINC\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
873 sb.append(" <title>Advance Directive</title>");
874 sb.append(" <text>");
875 sb.append(" <content ID=\"advance-directive-989570598\">Blood transfusion OK</content>");
876 sb.append(" </text>");
877 sb.append(" <entry>");
878 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
879 sb.append(" <templateId assigningAuthorityName=\"CCD\" root=\"2.16.840.1.113883.10.20.1.17\"/>");
880 sb.append(" <templateId assigningAuthorityName=\"HITSP/C32\" root=\"2.16.840.1.113883.3.88.11.32.13\"/>");
881 sb.append(" <id/>");
882 sb.append(" <code code=\"116859006\" displayName=\"Transfusion of Blood\" codeSystemName=\"SNOMED CT\" codeSystem=\"2.16.840.1.113883.6.96\">");
883 sb.append(" <originalText>");
884 sb.append(" <reference value=\"advance-directive-989570598\"/>");
885 sb.append(" </originalText>");
886 sb.append(" </code>");
887 sb.append(" <statusCode code=\"completed\"/>");
888 sb.append(" <effectiveTime>");
889 sb.append(" <low value=\"20080401\"/>");
890 sb.append(" <high value=\"20080430\"/>");
891 sb.append(" </effectiveTime>");
892 sb.append(" <participant typeCode=\"CST\">");
893 sb.append(" <participantRole classCode=\"AGNT\">");
894 sb.append(" <addr>");
895 sb.append(" <streetAddressLine>9435 BELL ROAD</streetAddressLine>");
896 sb.append(" <streetAddressLine>2ND FLOOR</streetAddressLine>");
897 sb.append(" <city>LEESBURG</city>");
898 sb.append(" <state>VA</state>");
899 sb.append(" <postalCode>20155</postalCode>");
900 sb.append(" <country>US</country>");
901 sb.append(" </addr>");
902 sb.append(" <telecom value=\"tel:703-555-0011\" use=\"HP\"/>");
903 sb.append(" <telecom value=\"tel:703-555-0012\" use=\"WP\"/>");
904 sb.append(" <telecom value=\"tel:703-555-0013\" use=\"MC\"/>");
905 sb.append(" <telecom value=\"tel:703-555-0014\" use=\"HV\"/>");
906 sb.append(" <telecom value=\"mailto:smith@doctors.com\"/>");
907 sb.append(" <telecom value=\"http://www.here.com/smith\"/>");
908 sb.append(" <playingEntity>");
909 sb.append(" <name>");
910 sb.append(" <prefix>MR</prefix>");
911 sb.append(" <given qualifier=\"CL\">FRED</given>");
912 sb.append(" <family qualifier=\"BR\">SMITH</family>");
913 sb.append(" <suffix>ESQ</suffix>");
914 sb.append(" </name>");
915 sb.append(" </playingEntity>");
916 sb.append(" </participantRole>");
917 sb.append(" </participant>");
918 sb.append(" <entryRelationship typeCode=\"REFR\">");
919 sb.append(" <observation classCode=\"OBS\" moodCode=\"EVN\">");
920 sb.append(" <templateId root=\"2.16.840.1.113883.10.20.1.37\"/>");
921 sb.append(" <code code=\"33999-4\" displayName=\"Status\" codeSystem=\"2.16.840.1.113883.6.1\"/>");
922 sb.append(" <statusCode code=\"completed\"/>");
923 sb.append(" <value code=\"15240007\" displayName=\"Current and verified\" xsi:type=\"CE\" codeSystem=\"2.16.840.1.113883.6.96\"/>");
924 sb.append(" </observation>");
925 sb.append(" </entryRelationship>");
926 sb.append(" </observation>");
927 sb.append(" </entry>");
928 sb.append(" </section>");
929 sb.append(" </component>");
930 sb.append(" </structuredBody>");
931 sb.append(" </component>");
932 sb.append("</ClinicalDocument>");
933 return sb.toString();
934 }
935}
Note: See TracBrowser for help on using the repository browser.