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 <martin.fleu...@portavita.nl>
Sent: Tuesday, November 24, 2020 12:53 AM
To: hl7api-devel@lists.sourceforge.net
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 
<martin.fleu...@portavita.nl><mailto:martin.fleu...@portavita.nl>
Sent: Monday, November 23, 2020 12:48 AM
To: 
hl7api-devel@lists.sourceforge.net<mailto:hl7api-devel@lists.sourceforge.net>
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
Hl7api-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hl7api-devel

Reply via email to