package gov.hhs.fha.nhinc.repository.service; import gov.hhs.fha.nhinc.repository.model.Document; import gov.hhs.fha.nhinc.repository.model.DocumentQueryParams; import gov.hhs.fha.nhinc.repository.model.EventCode; import gov.hhs.fha.nhinc.util.hash.SHA1HashCode; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Test; import static org.junit.Assert.*; /** * Test case for the DocumentService class * * @author Neil Webb */ public class DocumentServiceTest { /** * Test of DocumentService operations. */ @Test public void testDocumentOperations() { System.out.println("Start testDocumentOperations"); try { DocumentService docService = new DocumentService(); Document document = null; // Insert document - minimal document = new Document(); Long documentId = null; String documentUniqueId = "1234abcd"; document.setDocumentid(documentId); document.setDocumentUniqueId(documentUniqueId); docService.saveDocument(document); documentId = document.getDocumentid(); // Retrieve initial insert Document retrieved = docService.getDocument(documentId); assertNotNull("Retrieved doc - minmal was null", retrieved); assertNotNull("After insert - Document id null", documentId); assertEquals("After insert - Document unique id", documentUniqueId, retrieved.getDocumentUniqueId()); assertFalse("After insert - Persistent flag", retrieved.isPersistent()); // Update documentUniqueId = "1234abcdupdated"; String documentTitle = "Doc title"; String authorPerson = "authorPerson"; String authorInstitution = "authorInstitution"; String authorRole = "authorRole"; String authorSpecialty = "authorSpecialty"; String availablityStatus = "availablityStatus"; String classCode = "classCode"; String classCodeScheme = "classCodeScheme"; String classCodeDisplayName = "classCodeDisplayName"; String confidentialityCode = "confidentialityCode"; String confidentialityCodeScheme = "confidentialityCodeScheme"; String confidentialityCodeDisplayName = "confidentialityCodeDisplayName"; Date creationTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20040404040404"); String formatCode = "formatCode"; String formatCodeScheme = "formatCodeScheme"; String formatCodeDisplayName = "formatCodeDisplayName"; String patientId = "patientId"; Date serviceStartTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050505"); Date serviceStopTime = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060606"); String status = "status"; String comments = "comments"; String hash = null; //"hash"; String facilityCode = "facilityCode"; String facilityCodeScheme = "facilityCodeScheme"; String facilityCodeDisplayName = "facilityCodeDisplayName"; String intendedRecipientPerson = "intendedRecipientPerson"; String intendedRecipientOrganization = "intendedRecipientOrganization"; String languageCode = "languageCode"; String legalAuthenticator = "legalAuthenticator"; String mimeType = "mimeType"; String parentDocumentId = "parentDocumentId"; String parentDocumentRelationship = "parentDocumentRelationship"; String practiceSetting = "practiceSetting"; String practiceSettingScheme = "practiceSettingScheme"; String practiceSettingDisplayName = "practiceSettingDisplayName"; Integer size = new Integer(8989); String sourcePatientId = "sourcePatientId"; String pid3 = "pid3"; String pid5 = "pid5"; String pid8 = "pid8"; String pid7 = "pid7"; String pid11 = "pid11"; String typeCode = "typeCode"; String typeCodeScheme = "typeCodeScheme"; String typeCodeDisplayName = "typeCodeDisplayName"; String documentUri = "documentUri"; // String rawData = "rawData"; String rawData = sampleC32(); String sCompareHash = SHA1HashCode.calculateSHA1(rawData); // Calculate the hash code for comparison later... retrieved.setDocumentUniqueId(documentUniqueId); retrieved.setDocumentTitle(documentTitle); retrieved.setAuthorPerson(authorPerson); retrieved.setAuthorInstitution(authorInstitution); retrieved.setAuthorRole(authorRole); retrieved.setAuthorSpecialty(authorSpecialty); retrieved.setAvailablityStatus(availablityStatus); retrieved.setClassCode(classCode); retrieved.setClassCodeScheme(classCodeScheme); retrieved.setClassCodeDisplayName(classCodeDisplayName); retrieved.setConfidentialityCode(confidentialityCode); retrieved.setConfidentialityCodeScheme(confidentialityCodeScheme); retrieved.setConfidentialityCodeDisplayName(confidentialityCodeDisplayName); retrieved.setCreationTime(creationTime); retrieved.setFormatCode(formatCode); retrieved.setFormatCodeScheme(formatCodeScheme); retrieved.setFormatCodeDisplayName(formatCodeDisplayName); retrieved.setPatientId(patientId); retrieved.setServiceStartTime(serviceStartTime); retrieved.setServiceStopTime(serviceStopTime); retrieved.setStatus(status); retrieved.setComments(comments); retrieved.setHash(hash); retrieved.setFacilityCode(facilityCode); retrieved.setFacilityCodeScheme(facilityCodeScheme); retrieved.setFacilityCodeDisplayName(facilityCodeDisplayName); retrieved.setIntendedRecipientPerson(intendedRecipientPerson); retrieved.setIntendedRecipientOrganization(intendedRecipientOrganization); retrieved.setLanguageCode(languageCode); retrieved.setLegalAuthenticator(legalAuthenticator); retrieved.setMimeType(mimeType); retrieved.setParentDocumentId(parentDocumentId); retrieved.setParentDocumentRelationship(parentDocumentRelationship); retrieved.setPracticeSetting(practiceSetting); retrieved.setPracticeSettingScheme(practiceSettingScheme); retrieved.setPracticeSettingDisplayName(practiceSettingDisplayName); retrieved.setSize(size); retrieved.setSourcePatientId(sourcePatientId); retrieved.setPid3(pid3); retrieved.setPid5(pid5); retrieved.setPid8(pid8); retrieved.setPid7(pid7); retrieved.setPid11(pid11); retrieved.setTypeCode(typeCode); retrieved.setTypeCodeScheme(typeCodeScheme); retrieved.setTypeCodeDisplayName(typeCodeDisplayName); retrieved.setDocumentUri(documentUri); retrieved.setRawData(rawData.getBytes()); retrieved.setPersistent(true); Set eventCodes = new HashSet(); EventCode code1 = new EventCode(); String eventCode1 = "eventCode1"; String eventCodeScheme1 = "eventCodeScheme1"; String eventCodeDisplayName1 = "eventCodeDisplayName1"; code1.setEventCode(eventCode1); code1.setEventCodeScheme(eventCodeScheme1); code1.setEventCodeDisplayName(eventCodeDisplayName1); code1.setDocument(retrieved); eventCodes.add(code1); EventCode code2 = new EventCode(); String eventCode2 = "eventCode2"; String eventCodeScheme2 = "eventCodeScheme2"; String eventCodeDisplayName2 = "eventCodeDisplayName2"; code2.setEventCode(eventCode2); code2.setEventCodeScheme(eventCodeScheme2); code2.setEventCodeDisplayName(eventCodeDisplayName2); code2.setDocument(retrieved); eventCodes.add(code2); retrieved.setEventCodes(eventCodes); docService.saveDocument(retrieved); // Retrieve updated retrieved = docService.getDocument(documentId); assertNotNull("Retrieved doc - updated was null", retrieved); assertEquals("After update - Document id", documentId, retrieved.getDocumentid()); assertEquals("After update - Document unique id", documentUniqueId, retrieved.getDocumentUniqueId()); assertEquals("After update - authorInstitution", authorInstitution, retrieved.getAuthorInstitution()); assertEquals("After update - authorRole", authorRole, retrieved.getAuthorRole()); assertEquals("After update - authorSpecialty", authorSpecialty, retrieved.getAuthorSpecialty()); assertEquals("After update - availablityStatus", availablityStatus, retrieved.getAvailablityStatus()); assertEquals("After update - classCode", classCode, retrieved.getClassCode()); assertEquals("After update - classCodeScheme", classCodeScheme, retrieved.getClassCodeScheme()); assertEquals("After update - classCodeDisplayName", classCodeDisplayName, retrieved.getClassCodeDisplayName()); assertEquals("After update - confidentialityCode", confidentialityCode, retrieved.getConfidentialityCode()); assertEquals("After update - confidentialityCodeScheme", confidentialityCodeScheme, retrieved.getConfidentialityCodeScheme()); assertEquals("After update - confidentialityCodeDisplayName", confidentialityCodeDisplayName, retrieved.getConfidentialityCodeDisplayName()); assertEquals("After update - creationTime", creationTime, retrieved.getCreationTime()); assertEquals("After update - formatCode", formatCode, retrieved.getFormatCode()); assertEquals("After update - formatCodeScheme", formatCodeScheme, retrieved.getFormatCodeScheme()); assertEquals("After update - formatCodeDisplayName", formatCodeDisplayName, retrieved.getFormatCodeDisplayName()); assertEquals("After update - patientId", patientId, retrieved.getPatientId()); assertEquals("After update - serviceStartTime", serviceStartTime, retrieved.getServiceStartTime()); assertEquals("After update - serviceStopTime", serviceStopTime, retrieved.getServiceStopTime()); assertEquals("After update - status", status, retrieved.getStatus()); assertEquals("After update - comments", comments, retrieved.getComments()); assertEquals("After update - hash", sCompareHash, retrieved.getHash()); assertEquals("After update - facilityCode", facilityCode, retrieved.getFacilityCode()); assertEquals("After update - facilityCodeScheme", facilityCodeScheme, retrieved.getFacilityCodeScheme()); assertEquals("After update - facilityCodeDisplayName", facilityCodeDisplayName, retrieved.getFacilityCodeDisplayName()); assertEquals("After update - intendedRecipientPerson", intendedRecipientPerson, retrieved.getIntendedRecipientPerson()); assertEquals("After update - intendedRecipientOrganization", intendedRecipientOrganization, retrieved.getIntendedRecipientOrganization()); assertEquals("After update - languageCode", languageCode, retrieved.getLanguageCode()); assertEquals("After update - legalAuthenticator", legalAuthenticator, retrieved.getLegalAuthenticator()); assertEquals("After update - mimeType", mimeType, retrieved.getMimeType()); assertEquals("After update - parentDocumentId", parentDocumentId, retrieved.getParentDocumentId()); assertEquals("After update - parentDocumentRelationship", parentDocumentRelationship, retrieved.getParentDocumentRelationship()); assertEquals("After update - practiceSetting", practiceSetting, retrieved.getPracticeSetting()); assertEquals("After update - practiceSettingScheme", practiceSettingScheme, retrieved.getPracticeSettingScheme()); assertEquals("After update - practiceSettingDisplayName", practiceSettingDisplayName, retrieved.getPracticeSettingDisplayName()); assertEquals("After update - size", size, retrieved.getSize()); assertEquals("After update - sourcePatientId", sourcePatientId, retrieved.getSourcePatientId()); assertEquals("After update - pid3", pid3, retrieved.getPid3()); assertEquals("After update - pid5", pid5, retrieved.getPid5()); assertEquals("After update - pid8", pid8, retrieved.getPid8()); assertEquals("After update - pid7", pid7, retrieved.getPid7()); assertEquals("After update - pid11", pid11, retrieved.getPid11()); assertEquals("After update - typeCode", typeCode, retrieved.getTypeCode()); assertEquals("After update - typeCodeScheme", typeCodeScheme, retrieved.getTypeCodeScheme()); assertEquals("After update - typeCodeDisplayName", typeCodeDisplayName, retrieved.getTypeCodeDisplayName()); assertEquals("After update - documentUri", documentUri, retrieved.getDocumentUri()); assertEquals("After update - rawData", rawData, new String(retrieved.getRawData())); assertTrue("After update - persistent flag", retrieved.isPersistent()); eventCodes = retrieved.getEventCodes(); assertNotNull("After update - audit codes null", eventCodes); assertEquals("After update - audit codes size", 2, eventCodes.size()); // Iterator iter = eventCodes.iterator(); // while(iter.hasNext()) // { // EventCode code = iter.next(); // assertNotNull("After insert - contained event code was null", code); // assertNotNull("After insert - event code id was null", code.getEventCodeId()); // assertEquals("After insert - eventCode1", eventCode1, code.getEventCode()); // assertEquals("After insert - eventCodeScheme1", eventCodeScheme1, code.getEventCodeScheme()); // assertEquals("After insert - eventCodeDisplayName1", eventCodeDisplayName1, code.getEventCodeDisplayName()); // } // Query by patient id only DocumentQueryParams queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, null, null, null); List queryResults = docService.documentQuery(queryParams); assertNotNull("Query by patient id results null", queryResults); assertFalse("Query by patient id results empty", queryResults.isEmpty()); // Query by class code queryParams = buildQueryParams(patientId, classCode, null, null, null, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by class code results null", queryResults); assertFalse("Query by class code results empty", queryResults.isEmpty()); // Query by class code scheme queryParams = buildQueryParams(patientId, null, classCodeScheme, null, null, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by class code scheme results null", queryResults); assertFalse("Query by class code scheme results empty", queryResults.isEmpty()); // Query by creation date from Date creationTimeFrom = new SimpleDateFormat("MM/dd/yyyy.HH:mm:ss").parse("04/04/2004.04:04:03"); queryParams = buildQueryParams(patientId, null, null, creationTimeFrom, null, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by creation date from null results null", queryResults); assertFalse("Query by creation date from results empty", queryResults.isEmpty()); // Query by creation date to Date creationTimeTo = new SimpleDateFormat("MM/dd/yyyy.HH:mm:ss").parse("04/04/2004.04:04:05"); queryParams = buildQueryParams(patientId, null, null, null, creationTimeTo, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by creation date to results null", queryResults); assertFalse("Query by creation date to results empty", queryResults.isEmpty()); // Query by creation date from and to queryParams = buildQueryParams(patientId, null, null, creationTimeFrom, creationTimeTo, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by creation date from and to results null", queryResults); assertFalse("Query by creation date from and to results empty", queryResults.isEmpty()); // Query by service start date from Date serviceStartTimeFrom = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050504"); queryParams = buildQueryParams(patientId, null, null, null, null, serviceStartTimeFrom, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service start date from results null", queryResults); assertFalse("Query by service start date from results empty", queryResults.isEmpty()); // Query by service start date to Date serviceStartTimeTo = new SimpleDateFormat("yyyyMMddhhmmss").parse("20050505050506"); queryParams = buildQueryParams(patientId, null, null, null, null, null, serviceStartTimeTo, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service start date to results null", queryResults); assertFalse("Query by service start date to results empty", queryResults.isEmpty()); // Query by service start date from and to queryParams = buildQueryParams(patientId, null, null, null, null, serviceStartTimeFrom, serviceStartTimeTo, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service start date from and to results null", queryResults); assertFalse("Query by service start date from and to results empty", queryResults.isEmpty()); // Query by service stop time from Date serviceStopTimeFrom = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060605"); queryParams = buildQueryParams(patientId, null, null, null, null, null, null, serviceStopTimeFrom, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service stop time from results null", queryResults); assertFalse("Query by service stop time from results empty", queryResults.isEmpty()); // Query by service stop time to Date serviceStopTimeTo = new SimpleDateFormat("yyyyMMddhhmmss").parse("20060606060607"); queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, serviceStopTimeTo, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service stop time to results null", queryResults); assertFalse("Query by service stop time to results empty", queryResults.isEmpty()); // Query by service stop time from and to queryParams = buildQueryParams(patientId, null, null, null, null, null, null, serviceStopTimeFrom, serviceStopTimeTo, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by service stop time from and to results null", queryResults); assertFalse("Query by service stop time from and to results empty", queryResults.isEmpty()); // Query by status queryParams = buildQueryParams(patientId, null, null, null, null, null, null, null, null, status, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by status results null", queryResults); assertFalse("Query by status results empty", queryResults.isEmpty()); // Query by document unique id queryParams = buildQueryParams(null, null, null, null, null, null, null, null, null, null, documentUniqueId); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by document unique id results null", queryResults); assertFalse("Query by document unique id results empty", queryResults.isEmpty()); // Query by all parameters queryParams = buildQueryParams(patientId, classCode, classCodeScheme, creationTimeFrom, creationTimeTo, serviceStartTimeFrom, serviceStartTimeTo, serviceStopTimeFrom, serviceStopTimeTo, status, documentUniqueId); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by all parameters results null", queryResults); assertFalse("Query by all parameters results empty", queryResults.isEmpty()); // Query with invalid patient id - Should return null or empty list - not exception queryParams = buildQueryParams("invalidpatientid", classCode, classCodeScheme, creationTimeFrom, creationTimeTo, serviceStartTimeFrom, serviceStartTimeTo, serviceStopTimeFrom, serviceStopTimeTo, status, documentUniqueId); queryResults = docService.documentQuery(queryParams); assertTrue("Query using invalid patient id not empty", ((queryResults == null) || (queryResults.isEmpty()))); // Query by creation date from (inclusive) queryParams = buildQueryParams(patientId, null, null, creationTime, null, null, null, null, null, null, null); queryResults = docService.documentQuery(queryParams); assertNotNull("Query by creation date from (inclusive) results null", queryResults); assertFalse("Query by creation date from (inclusive) results empty", queryResults.isEmpty()); // Delete docService.deleteDocument(retrieved); retrieved = docService.getDocument(documentId); assertNull("Document not null after delete", retrieved); } catch (Throwable t) { t.printStackTrace(); fail("testDocumentOperations: " + t.getMessage()); } System.out.println("End testDocumentOperations"); } 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) { DocumentQueryParams params = new DocumentQueryParams(); params.setPatientId(patientId); if(classCode != null) { List classCodes = new ArrayList(); classCodes.add(classCode); params.setClassCodes(classCodes); } params.setClassCodeScheme(classCodeScheme); params.setCreationTimeFrom(creationTimeFrom); params.setCreationTimeTo(creationTimeTo); params.setServiceStartTimeFrom(serviceStartTimeFrom); params.setServiceStartTimeTo(serviceStartTimeTo); params.setServiceStopTimeFrom(serviceStopTimeFrom); params.setServiceStopTimeTo(serviceStopTimeTo); if(status != null) { List statuses = new ArrayList(); statuses.add(status); params.setStatuses(statuses); } if (documentUniqueId != null) { List documentUniqueIds = new ArrayList(); documentUniqueIds.add(documentUniqueId); params.setDocumentUniqueId(documentUniqueIds); } return params; } private String sampleC32() { StringBuffer sb = new StringBuffer(); sb.append(""); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" Katy Bradford"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" 437 TURNER LANE"); sb.append(" LEESBURG"); sb.append(" VA"); sb.append(" 20176"); sb.append(" US"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" MRS."); sb.append(" KATY"); sb.append(" BRADFORD"); sb.append(" "); sb.append(" "); sb.append(" AdministrativeGender codes are: M (Male), F (Female) or UN (Undifferentiated)."); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" 439 TURNER LANE"); sb.append(" LEESBURG"); sb.append(" VA"); sb.append(" 20176"); sb.append(" US"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" MS."); sb.append(" TERRY"); sb.append(" SHAW"); sb.append(" PHD"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" PCP"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" 10300 MAIN ST."); sb.append(" SUITE 100"); sb.append(" ASHBURN"); sb.append(" VA"); sb.append(" 20176"); sb.append(" AF"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" DR."); sb.append(" JANE"); sb.append(" WATSON"); sb.append(" MD"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" Doctors Inc."); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" Conditions or Problems"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
Problem NameProblem TypeProblem Date
"); sb.append(" Sprained ankle"); sb.append(" Diagnosis20080401
"); sb.append(" Migraines"); sb.append(" Problem20080421
"); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append("
"); sb.append(" "); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" Allergies, Adverse Reactions, Alerts"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
SubstanceEvent TypeSeverity
TrucareDrug Allergy"); sb.append(" Mild"); sb.append("
peanutsFood Allergy"); sb.append(" Severe"); sb.append("
"); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" Trucare"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" peanuts"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append("
"); sb.append(" "); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" Insurance Providers"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
Insurance Provider NameInsurance Provider TypeInsurance Provider Group Number
AJAX INSURANCEAJAX INSURANCEG1854093
"); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" AJAX INSURANCE"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append("
"); sb.append(" "); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" Medications"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
Product Display NameFree Text Brand NameOrdered ValueOrdered UnitExpiration Time
"); sb.append(" Hyaline"); sb.append(" Hyalinia30.0TAB20080430
"); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" Hyaline"); sb.append(" "); sb.append(" Hyalinia"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append("
"); sb.append(" "); sb.append("
"); sb.append(" "); sb.append(" "); sb.append(" Advance Directive"); sb.append(" "); sb.append(" Blood transfusion OK"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" 9435 BELL ROAD"); sb.append(" 2ND FLOOR"); sb.append(" LEESBURG"); sb.append(" VA"); sb.append(" 20155"); sb.append(" US"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" MR"); sb.append(" FRED"); sb.append(" SMITH"); sb.append(" ESQ"); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
"); sb.append("
"); sb.append("
"); sb.append("
"); sb.append("
"); return sb.toString(); } }