/*
* JBoss, Home of Professional Open Source
* Copyright 2013, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed 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.switchyard.quickstarts.camel.hl7example;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v24.datatype.ST;
import ca.uhn.hl7v2.model.v24.message.QRY_A19;
import ca.uhn.hl7v2.model.v24.segment.QRD;
import ca.uhn.hl7v2.parser.PipeParser;
import org.junit.Test;
import org.junit.Assert;
import org.junit.runner.RunWith;
import org.switchyard.component.test.mixins.cdi.CDIMixIn;
import org.switchyard.test.Invoker;
import org.switchyard.test.ServiceOperation;
import org.switchyard.test.SwitchYardRunner;
import org.switchyard.test.SwitchYardTestCaseConfig;
@RunWith(SwitchYardRunner.class)
@SwitchYardTestCaseConfig(
config = SwitchYardTestCaseConfig.SWITCHYARD_XML,
mixins = CDIMixIn.class)
public class HL7ServiceTest {
private static final String LINE_ONE = "MSH|^~\\&|MYSENDER|MYRECEIVER|MYAPPLICATION||200612211200||QRY^A19|1234|P|2.4";
private static final String LINE_TWO = "QRD|200612211200|R|I|GetPatient|||1^RD|0101701234|DEM||";
@ServiceOperation("HL7Route.process")
private Invoker processMessage;
@Test
public void testCamelRoute() {
StringBuilder in = new StringBuilder();
in.append(LINE_ONE);
in.append("\r");
in.append(LINE_TWO);
String result = processMessage.sendInOut(in).getContent(String.class);;
PipeParser pipeParser = new PipeParser();
try {
//parse the message string into a Message object
Message message = pipeParser.parse(result);
if (message instanceof QRY_A19) {
QRD qrd = (QRD) message.get("QRD");
ST st = qrd.getQueryID();
Assert.assertTrue(st.getValue().equals("GetPatient"));
} else {
Assert.fail("Message not instance of QRY_A19");
}
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
}