Thank you Martin for the inputs.
Yes, it is issue with OBX-2 datatype filed, I tested through my stand alone
program by supplying OBX-2 data type as ST.
p.getParserConfiguration().setDefaultObx2Type("ST");//ISSUE
However, on the fly I have a listener which starts listening once my server
started. In this case my changes are not getting effected and facing the same
issue. And also I tried to disable my validations, either way my issue is not
yet resolved.
Following way I am trying to capture HL7 message and further to process:
1) My health device is producing HL 2.3, and also I am using hapi2.3 jars
as maven dependencies. following is my MSH:
MSH|^~\&|ABAXIS, INC.^piccolo
xpress^3.1.37^0000P26854||||20201121161056||ORU^R01||P|2.3|
2) I tried with disabling validations. And also I supplied ST for OBX2
type. Still I am getting the same issue.
//No Validation
context.setValidationContext((ValidationContext)
ValidationContextFactory.noValidation());
p.getParserConfiguration().setDefaultObx2Type("ST");//ISSUE
3) My listener will start as soon as the server starts and it waits for the
message to receive and process further. I kept my validation disabling in my
listener class and next level also.. Following is my snippet:
Listener.java
public class VitalsDeviceListener {
private static final Logger log =
LoggerFactory.getLogger(VitalsDeviceListener.class);
// change this to whatever your port number is
private static final int PORT_NUMBER = 54000;
// In HAPI, almost all things revolve around a context object
private static HapiContext context = new DefaultHapiContext();
@SuppressWarnings("unchecked")
public static void enableDeviceListener(String[] args) throws Exception {
try {
boolean useSecureConnection = false; // are you using TLS/SSL?
HL7Service hl7Server = context.newServer(PORT_NUMBER,
useSecureConnection);
//No Validation
context.setValidationContext((ValidationContext)
ValidationContextFactory.noValidation());
// You can set up routing rules for your HL7 listener by extending
the
// AppRoutingData class like this
hl7Server.registerApplication(new RegistrationEventRoutingData(),
new MessageHandlingAndACK());
hl7Server.startAndWait();
log.info("Listener is started, waiting for client message:" + "\n");
} catch (Exception e) {
e.printStackTrace();
}
}
}
This listener forwards the message to MessageHandlingAndACK class. In this
class also again I am disabling validation and ST supply to OBX2.
public class MessageHandlingAndACK implements ReceivingApplication {
private static final Logger log =
LoggerFactory.getLogger(MessageHandlingAndACK.class);
private static HapiContext context = new DefaultHapiContext();
@Override
public boolean canProcess(Message message) {
return true;
}
@Override
public Message processMessage(Message receivedMessage, Map metaData)
throws ReceivingApplicationException, HL7Exception {
//No Validation
context.setValidationContext((ValidationContext)
ValidationContextFactory.noValidation());
//context.getParserConfiguration().setValidating(false);
Parser p = context.getPipeParser();
p.getParserConfiguration().setDefaultObx2Type("ST");//ISSUE1: Piccolo
not sending mandatory data type for OBX
//Message hapiMsg = p.parse(receivedMessage.toString());
String receivedEncodedMessage = p.encode(receivedMessage);
log.info("****Incoming message:\n" + receivedEncodedMessage +
"\n\n");
try {
log.info("****ACK message from server:\n" +
receivedMessage.generateACK());
return receivedMessage.generateACK();
} catch (IOException e) {
throw new HL7Exception(e);
}
}
}
After doing this changes also, I am getting the same issue. I am not sure
whether I am applying my changes at right place or not. I tested this code
with sample client, but it is failing with actual health device. Please provide
your valuable inputs.
Thanks,
Dasari
From: Martin Fleurke <[email protected]>
Sent: Tuesday, November 24, 2020 12:53 AM
To: [email protected]
Subject: Re: [HAPI-devel] Need Help in - To use correct version of Hapi Library
CAUTION: This email originated from outside of the organization. Do NOT click
links or open attachments unless you recognize the sender and know the content
is safe.
The error message is a bit unclear
(
ca.uhn.hl7v2.HL7Exception: A datatype for OBX-
must be specified in 5-
.
at
ca.uhn.hl7v2.parser.FixFieldDataType.fix(FixFieldDataType.java:165)
at
ca.uhn.hl7v2.parser.FixFieldDataType.fixOBX5(FixFieldDataType.java:123))
but I think it is not related to OBX-5 (as that is the VALUE field, which is
filled in in your message. You highlighted OBX-4)
Instead I think it's about OBX-2, the DataType field, which is empty.
Wbr
Martin
On 23/11/2020 18:58, Dasari, Penchalaiah via Hl7api-devel wrote:
Hi Martin,
Thanks for your inputs.
Yes, I am using hapi-2.3 base jar and hapi-structires-23. My device is sending
following way the MSH & OBX segments :-
MSH Segment:
MSH|^~\&|XYZ, INC.^3.1.37^0000A1234||||20201121161056||ORU^R01||P|2.3|
OBX segment:
OBX|1||2345-7^^LN^Glucose SerPl-mCnc||99|mg/dL|73 to 118|N|||F||||||Patient|
OBX|2||3094-0^^LN^BUN SerPl-mCnc||13|mg/dL|7 to 22|N|||F||||||Patient|
You mean OBX-5 (the highlighted portion) is empty? If this is correct, I need
to check with my health device provider.
Thanks,
Dasari
From: Martin Fleurke
<[email protected]><mailto:[email protected]>
Sent: Monday, November 23, 2020 12:48 AM
To:
[email protected]<mailto:[email protected]>
Subject: Re: [HAPI-devel] Need Help in - To use correct version of Hapi Library
CAUTION: This email originated from outside of the organization. Do NOT click
links or open attachments unless you recognize the sender and know the content
is safe.
Hi,
It looks more like a bad message coming in. You should be able to see the
message when logging ca.uhn.hl7v2.raw[.inbound]
The error says that a required data field (OBX-5) is empty. Solution is to let
the sender fill it in.
Is the incoming message a hl7v2.3 message? If it is an other version then also
include the corresponding hapi-structures-v2X
Wbr
Martin
On 20/11/2020 23:50, Dasari, Penchalaiah via Hl7api-devel wrote:
Hello Team,
I am trying to receive a message from one our health device by using library
(2.3 v). Getting following issue. I am not sure which version of Hapi Library
do I need to use
To get rid out of this error. Please help me on this issue..
2020-11-20 13:01:03.230 ERROR 17384 --- [ hapi-worker-8]
c.u.h.p.impl.ApplicationRouterImpl : Attempting to send error message to
remote system.
ca.uhn.hl7v2.HL7Exception: A datatype for OBX-
must be specified in 5-
.
at
ca.uhn.hl7v2.parser.FixFieldDataType.fix(FixFieldDataType.java:165)
at
ca.uhn.hl7v2.parser.FixFieldDataType.fixOBX5(FixFieldDataType.java:123)
at ca.uhn.hl7v2.parser.PipeParser.parse(PipeParser.java:401)
at ca.uhn.hl7v2.parser.PipeParser.parse(PipeParser.java:1169)
at ca.uhn.hl7v2.parser.PipeParser.doParse(PipeParser.java:226)
at
ca.uhn.hl7v2.parser.GenericParser.doParse(GenericParser.java:245)
at ca.uhn.hl7v2.parser.Parser.parse(Parser.java:212)
at
ca.uhn.hl7v2.parser.GenericParser.parse(GenericParser.java:253)
at
ca.uhn.hl7v2.protocol.impl.ApplicationRouterImpl.processMessage(ApplicationRouterImpl.java:138)
at
ca.uhn.hl7v2.protocol.impl.ApplicationRouterImpl.processMessage(ApplicationRouterImpl.java:105)
at ca.uhn.hl7v2.app.Responder.processMessage(Responder.java:91)
at ca.uhn.hl7v2.app.Receiver$Grunt.run(Receiver.java:127)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
________________________________
Penchalaiah Dasari
Office
[http://bap.metagenics.com/metalogo.png]<http://www.metagenics.com>
[http://bap.metagenics.com/metasig.png]<https://www.metagenics.com/immune-defense-pack>
Disclaimer: This email, its electronic document attachments, and the contents
of its website linkages may
contain confidential information. This information is intended solely for the
use by the individual or entity
to whom it is addressed. If you have received this information in error, please
notify the sender
immediately and arrange for the prompt destruction of the material and any
accompanying attachments.
*This statement has not been evaluated by the Food and Drug Administration.
This product is not
intended to diagnose, treat, cure, or prevent any disease.
_______________________________________________
Hl7api-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hl7api-devel