Ich versuche, eine HL7-Datei zu lesen, die enthält die folgende MeldungWie HL7-Datei und analysieren sie mit Apache Camel, Hapi & Spring (Java config)
MSH|^~\\&|MYSENDER|MYRECEIVER|MYAPPLICATION||200612211200||QRY^A19|1234|P|2.3
QRD|200612211200|R|I|GetPatient|||1^RD|01017|DEM||
mit Apache Camel, Hapi & Frühling lesen Framework (Java-Konfiguration). Ich möchte die obige Nachricht parsen und Segmentdetails daraus erhalten. Ich benutze HL7 Version 2.3. Folgendes ist meine RouteBuilder-Klasse;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
import example.springcamel.processors.Hl7MessageProcessor;
@Component
public class SimpleRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file://E:/projects/hl7/file_to_read/input/")
.process(new Hl7MessageProcessor())
.end();
}
}
E:/projects/hl7/file_to_read/input/
Dies ist der Ort, an dem ich mit obiger Nachricht eine Datei mit dem Namen hl7_message.hl7 habe.
Folgendes ist die Prozessorklasse;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import ca.uhn.hl7v2.model.Message;
public class Hl7MessageProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn().getBody(Message.class);
System.out.println("Original message: " + message);
}
}
Von oben genannten Code, ich bekomme die ursprüngliche Nachricht als null. Ich folge in der Dokumentation zu diesem Link von Apache Camel gegeben http://camel.apache.org/hl7.html
Im Folgenden werden die Konfigurationsdateien und Hauptanwendung:
SpringConfiguration.java
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "example.springcamel")
public class SpringConfiguration {
}
RoutesConfiguration.java
import org.apache.camel.spring.javaconfig.CamelConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "example.springcamel.routes")
public class RoutesConfiguration extends CamelConfiguration {
}
MainApplication.java
import org.apache.camel.CamelContext;
import org.apache.camel.spring.SpringCamelContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import example.springcamel.configuration.SpringConfiguration;
public class MainApplication {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception {
AbstractApplicationContext springContext = new
AnnotationConfigApplicationContext(SpringConfiguration.class);
CamelContext camelContext = SpringCamelContext.springCamelContext(springContext, false);
try {
camelContext.start();
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
} finally {
camelContext.stop();
springContext.close();
}
}
}
Ich bin zu HL7 völlig neu, jemand hilft mir freundlich auf die obige HL7 Nachricht Parsen und von ihm bekommt Segment Details.
Haben Sie diese Komponente noch nie benutzt, aber haben Sie versucht, 'HL7DataFormat' zu verwenden, wie im folgenden JUnit-Test gezeigt? [HL7ValidateTest.java] (https://github.com/apache/camel/blob/master/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7ValidateTest.java) – Bedla
kann Sie sagen mir, wo ich das im obigen Code verwenden soll und was es tut? – karthi
Wirklich habe ich das nie benutzt, also ist das nur raten: In Ihrem 'SimpleRouteBuilder' instanziieren Sie' HL7DataFormat' mit 'DataFormat hl7 = new HL7DataFormat();'. Dann benutze es in deiner Route und füge '.unmarshal (hl7)' vor 'process()' Methode hinzu. Siehe [HL7 DataFormat] (http://camel.apache.org/hl7-dataformat.html) – Bedla