1 /** 2 * The contents of this file are subject to the Mozilla Public License Version 1.1 3 * (the "License"); you may not use this file except in compliance with the License. 4 * You may obtain a copy of the License at http://www.mozilla.org/MPL/ 5 * Software distributed under the License is distributed on an "AS IS" basis, 6 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 7 * specific language governing rights and limitations under the License. 8 * 9 * The Original Code is "EncapsulatedData.java". Description: 10 * "Example Code" 11 * 12 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 13 * 2001. All Rights Reserved. 14 * 15 * Contributor(s): Alessandro Delprete 16 * 17 * Alternatively, the contents of this file may be used under the terms of the 18 * GNU General Public License (the �GPL�), in which case the provisions of the GPL are 19 * applicable instead of those above. If you wish to allow use of your version of this 20 * file only under the terms of the GPL and not to allow others to use your version 21 * of this file under the MPL, indicate your decision by deleting the provisions above 22 * and replace them with the notice and other provisions required by the GPL License. 23 * If you do not delete the provisions above, a recipient may use your version of 24 * this file under either the MPL or the GPL. 25 * 26 */ 27 package ca.uhn.hl7v2.examples; 28 29 import java.io.ByteArrayOutputStream; 30 import java.io.IOException; 31 32 import javax.mail.MessagingException; 33 import javax.mail.internet.MimeBodyPart; 34 import javax.mail.internet.MimeMultipart; 35 36 import ca.uhn.hl7v2.HL7Exception; 37 import ca.uhn.hl7v2.model.v231.datatype.ED; 38 import ca.uhn.hl7v2.model.v231.message.MDM_T02; 39 import ca.uhn.hl7v2.model.v231.segment.OBX; 40 import ca.uhn.hl7v2.parser.PipeParser; 41 42 public class EncapsulatedData { 43 44 public static void main(String[] args) throws MessagingException, IOException, HL7Exception { 45 46 /* 47 * In this example, a CDA r2 document is being embedded as mime content 48 * in an MDM_T02 message. 49 */ 50 51 MDM_T02 mdmMessage = new MDM_T02(); 52 53 // A few basic MSH fields are populated. In a real situation, this would not be enough 54 // to produce a valid message, but for demonstration purposes we'll skip a few 55 // fields. 56 mdmMessage.initQuickstart("MDM", "T02", "P"); 57 58 OBX obx = mdmMessage.getOBX(); 59 60 // This is not a complete CDA document, but it serves as a good example 61 String sampleClinicalDocument = "<ClinicalDocument xsi:schemaLocation=\"urn:hl7-org:v3 CDA.ReleaseTwo.CommitteeBallot03.Aug.2004.xsd\" templateId=\"2.16.840.1.113883.3.27.1776\">\r\n" + 62 " <id extension=\"c266\" root=\"2.16.840.1.113883.3.933\"/>\r\n" + 63 " <code code=\"11488-4\" codeSystem=\"2.16.840.1.113883.6.1\" displayName=\"Consultation note\"/>\r\n" + 64 " <title>Good Health Clinic Consultation Note</title>\r\n" + 65 " <effectiveTime value=\"20000407\"/>\r\n" + 66 "</ClinicalDocument>"; 67 68 69 MimeMultipart mimeMessage = new MimeMultipart(); 70 MimeBodyPart bodyPart = new MimeBodyPart(); 71 bodyPart.setText(sampleClinicalDocument); 72 mimeMessage.addBodyPart(bodyPart); 73 74 // send the MIME message into a ByteArrayOutputStream 75 ByteArrayOutputStream byte1 = new ByteArrayOutputStream(); 76 mimeMessage.writeTo(byte1); 77 78 // set the value of ED with the String 79 ED encapsuledData = new ED(mdmMessage); 80 81 encapsuledData.getTypeOfData().setValue("multipart"); 82 encapsuledData.getDataSubtype().setValue("x-hl7-cda-level-one"); 83 encapsuledData.getEncoding().setValue("A"); 84 85 encapsuledData.getData().setValue( byte1.toString() ); 86 87 // setting the data in the OBX segment 88 obx.getObservationIdentifier().getIdentifier().setValue("1"); 89 obx.getValueType().setValue("CE"); 90 obx.getObservationValue(0).setData(encapsuledData); 91 92 // Print the message out 93 System.out.println(new PipeParser().encode(mdmMessage)); 94 95 /* 96 The following output is produced. Note that the newlines are unix newlines (\n) 97 and not (\r), so they are OK to use within a segment. 98 99 MSH|^~\& 100 OBX||CE|1||^multipart^x-hl7-cda-level-one^A^------=_Part_0_605645.1247937122564\X000d\ 101 \X000d\ 102 <ClinicalDocument xsi:schemaLocation="urn:hl7-org:v3 CDA.ReleaseTwo.CommitteeBallot03.Aug.2004.xsd" templateId="2.16.840.1.113883.3.27.1776">\X000d\ 103 <id extension="c266" root="2.16.840.1.113883.3.933"/>\X000d\ 104 <code code="11488-4" codeSystem="2.16.840.1.113883.6.1" displayName="Consultation note"/>\X000d\ 105 <title>Good Health Clinic Consultation Note</title>\X000d\ 106 <effectiveTime value="20000407"/>\X000d\ 107 </ClinicalDocument>\X000d\ 108 ------=_Part_0_605645.1247937122564--\X000d\ 109 110 */ 111 } 112 113 }