/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.openehealth.coala.communication; import static org.junit.Assert.assertTrue; import java.util.Date; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * Unit test for {@link PdqMessageBuilderImpl}. * * @author ckarmen */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/META-INF/coala-communication-test-context.xml" }) public class PdqMessageBuilderTest { // private static final Logger LOG = org.slf4j.LoggerFactory // .getLogger(PXSQueryServiceTest.class); private static final String PID_PatientID = "@PID.3.1"; private static final String PID_LastName = "@PID.5.1"; private static final String PID_GivenName = "@PID.5.2"; private static final String PID_DoB = "@PID.7"; private static final String HEADER = "MSH|^~\\&|"; private static final String FOOTER = "RCP"; @Autowired private PdqMessageBuilder pdqMessageBuilder; /** * Test if PdqRequest (HL7 message) contains only expected PID values. * {@link PdqMessageBuilderImpl}. */ @Test public void testPdqMessage() { // LOG.info(""); String hl7Message, thePatientId = "123", theGivenName = "John", theLastName = "Doe"; Date theDoB = new Date(); // Example result: // MSH|^~\\&|CoALA|SendingFacility|PXS|ReceivingFacility|20110707092807101+0200||QBP^Q22|6326568982331147264|P|2.5|||||||\nQPD|Q22^Find Candidates|54152038513763936462005704923487680|@PID.3.1^123~@PID.3.4.2^2.16.840.1.113883.3.37.4.1.1.2.2.1~@PID.3.4.3^ISO~@PID.5.2^John~@PID.5.1^Doe~@PID.7^20110707|\nRCP|I| hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, theGivenName, theLastName, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(null, null, null, null); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && !hl7Message.contains(PID_PatientID) && !hl7Message.contains(PID_LastName) && !hl7Message.contains(PID_GivenName) && !hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest("", "", "", null); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && !hl7Message.contains(PID_PatientID) && !hl7Message.contains(PID_LastName) && !hl7Message.contains(PID_GivenName) && !hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(null, theGivenName, theLastName, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && !hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest("", theGivenName, theLastName, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && !hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, null, theLastName, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && !hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, "", theLastName, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && !hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, theGivenName, null, theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && !hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, theGivenName, "", theDoB); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && !hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && hl7Message.contains(PID_DoB)); hl7Message = pdqMessageBuilder.buildPdqRequest(thePatientId, theGivenName, theLastName, null); assertTrue( "HL7 message has invalid data!", hl7Message.contains(HEADER) && hl7Message.contains(FOOTER) && hl7Message.contains(PID_PatientID) && hl7Message.contains(PID_LastName) && hl7Message.contains(PID_GivenName) && !hl7Message.contains(PID_DoB)); } }