package edu.harvard.i2b2.common.datavo; import edu.harvard.i2b2.common.util.jaxb.JAXBUnWrapHelper; import edu.harvard.i2b2.common.util.jaxb.JAXBUtil; import edu.harvard.i2b2.core.datavo.pdo.PatientDataType; import edu.harvard.i2b2.datavo.i2b2message.RequestMessageType; import junit.framework.TestCase; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.InputStreamReader; import javax.xml.bind.JAXBElement; public class I2B2MessageReadTest extends TestCase { public void testReadI2B2RequestMessage() throws Exception { RequestMessageType rmType = unMarshaller(); System.out.println("Sending app name: " + rmType.getMessageHeader().getSendingApplication().getApplicationName()); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); PatientDataType pdType = (PatientDataType) helper.getObjectByClass(rmType.getMessageBody() .getAny(), PatientDataType.class); System.out.println("Observation blob " + pdType.getObservationFactSet().get(0).getObservationFact().get(0) .getObservationBlob()); JAXBElement je = (JAXBElement) rmType.getMessageBody().getAny().get(0); PatientDataType pd = (PatientDataType) je.getValue(); System.out.println("Concept cd " + pd.getObservationFactSet().get(0).getObservationFact().get(0) .getConceptCd()); } private String getPFTString() throws Exception { StringBuffer queryStr = new StringBuffer(); DataInputStream dataStream = new DataInputStream(I2B2MessageReadTest.class.getResourceAsStream( "Samplei2b2RequestMessage.xml")); BufferedReader reader = new BufferedReader(new InputStreamReader( dataStream)); String singleLine = null; while ((singleLine = reader.readLine()) != null) { queryStr.append(singleLine + "\n"); } return queryStr.toString(); } private RequestMessageType unMarshaller() throws Exception { String[] pak = new String[] { "edu.harvard.i2b2.datavo.i2b2message", "edu.harvard.i2b2.core.datavo.pdo" }; JAXBUtil util = new JAXBUtil(pak); RequestMessageType rmType = (RequestMessageType) util.unMashallFromString(getPFTString()) .getValue(); return rmType; } }