You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(2) |
Feb
(1) |
Mar
|
Apr
(4) |
May
(5) |
Jun
(6) |
Jul
(3) |
Aug
(13) |
Sep
(28) |
Oct
(33) |
Nov
(8) |
Dec
(1) |
2003 |
Jan
(6) |
Feb
(2) |
Mar
|
Apr
(25) |
May
(21) |
Jun
(13) |
Jul
(12) |
Aug
(14) |
Sep
(6) |
Oct
(6) |
Nov
(16) |
Dec
(6) |
2004 |
Jan
(5) |
Feb
(7) |
Mar
(13) |
Apr
(17) |
May
(24) |
Jun
(14) |
Jul
(14) |
Aug
(8) |
Sep
(3) |
Oct
(8) |
Nov
(14) |
Dec
(26) |
2005 |
Jan
(18) |
Feb
(12) |
Mar
(29) |
Apr
(9) |
May
(4) |
Jun
(12) |
Jul
(17) |
Aug
(9) |
Sep
(12) |
Oct
|
Nov
(12) |
Dec
|
2006 |
Jan
(46) |
Feb
(18) |
Mar
(11) |
Apr
(13) |
May
(12) |
Jun
(27) |
Jul
(34) |
Aug
(45) |
Sep
(27) |
Oct
(13) |
Nov
(26) |
Dec
(22) |
2007 |
Jan
(21) |
Feb
(29) |
Mar
(32) |
Apr
(6) |
May
(11) |
Jun
(13) |
Jul
(14) |
Aug
(11) |
Sep
(15) |
Oct
(7) |
Nov
(30) |
Dec
(16) |
2008 |
Jan
(11) |
Feb
(14) |
Mar
(5) |
Apr
(18) |
May
(12) |
Jun
(11) |
Jul
(5) |
Aug
(12) |
Sep
(3) |
Oct
(2) |
Nov
(15) |
Dec
(2) |
2009 |
Jan
(18) |
Feb
(6) |
Mar
(9) |
Apr
(10) |
May
(29) |
Jun
(16) |
Jul
(44) |
Aug
(49) |
Sep
(14) |
Oct
(21) |
Nov
(11) |
Dec
(22) |
2010 |
Jan
(12) |
Feb
(13) |
Mar
(5) |
Apr
(6) |
May
(15) |
Jun
(15) |
Jul
(14) |
Aug
(20) |
Sep
(17) |
Oct
(36) |
Nov
(19) |
Dec
(7) |
2011 |
Jan
(8) |
Feb
(14) |
Mar
(21) |
Apr
(12) |
May
(6) |
Jun
(12) |
Jul
(17) |
Aug
(6) |
Sep
(13) |
Oct
(15) |
Nov
(26) |
Dec
(9) |
2012 |
Jan
(25) |
Feb
(13) |
Mar
(31) |
Apr
(10) |
May
(16) |
Jun
(21) |
Jul
(61) |
Aug
(38) |
Sep
(16) |
Oct
(13) |
Nov
(37) |
Dec
(26) |
2013 |
Jan
(20) |
Feb
(26) |
Mar
(34) |
Apr
(32) |
May
(27) |
Jun
(56) |
Jul
(16) |
Aug
(38) |
Sep
(35) |
Oct
(17) |
Nov
(11) |
Dec
(7) |
2014 |
Jan
(36) |
Feb
(13) |
Mar
(25) |
Apr
|
May
(27) |
Jun
(33) |
Jul
(34) |
Aug
|
Sep
(4) |
Oct
(11) |
Nov
(42) |
Dec
(2) |
2015 |
Jan
(5) |
Feb
(6) |
Mar
(11) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(2) |
Aug
(5) |
Sep
(5) |
Oct
(5) |
Nov
(8) |
Dec
(19) |
2016 |
Jan
(8) |
Feb
(12) |
Mar
(6) |
Apr
(5) |
May
(5) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
(9) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2017 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
(6) |
May
(8) |
Jun
(7) |
Jul
(14) |
Aug
(10) |
Sep
(6) |
Oct
(2) |
Nov
|
Dec
|
2018 |
Jan
|
Feb
(9) |
Mar
(2) |
Apr
(3) |
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(8) |
Sep
(4) |
Oct
(3) |
Nov
(1) |
Dec
(1) |
2019 |
Jan
(10) |
Feb
(2) |
Mar
(6) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
2020 |
Jan
(9) |
Feb
|
Mar
|
Apr
(6) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
(9) |
Oct
(1) |
Nov
(11) |
Dec
|
2021 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2023 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(2) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
(7) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Stewart A. <ste...@se...> - 2024-02-08 18:27:54
|
You are welcome. Hope it was useful. You don't really have much choice but to parse the message or you can't do any work on it in HAPI. That's how IEs do it anyway. Stewart |
From: Stewart A. <ste...@se...> - 2024-02-08 17:04:28
|
If I recall correctly a singleton is a class that is available across the entire jvm, so if you intend it to handle all messages from lots of queues, I'd think it might quickly become a bottleneck for messaging. No expert in this but, from an integration perspective it would be more scalable and better from the perspective of different services stopping and starting for various reasons to be individually controllable like you can in most IE platforms. Don't know what your platform is or anything though. S Stewart Anderson Integration Consultant P: +44 20 3982 6826 M: +44 77 7999 6873 W: servita.com<https://www.servita.com> [cid:image001.png@01DA5A9B.5A32F290]<https://www.linkedin.com/company/servita/> [cid:image002.png@01DA5A9B.5A32F290] The Smiths Building, 179 Great Portland Street, London, W1W 5PL From: Thomas, Patrick R via Hl7api-devel <hl7...@li...> Sent: Thursday, February 8, 2024 1:54 PM To: hl7...@li... Subject: Re: [HAPI-devel] Thread Safe Queue for HL7 messages CAUTION: This email originated from outside of the organisation. Do not click links or open attachments unless you recognise the sender and know the content is safe. I have a follow-up question. The documentation says that HapiContext is not intended to be a singleton. Should it be fine to create one HapiContext in the singleton that I create to handle the incoming messages from my queue? It seems very inefficient to recreate the objects I need to send each message. Thank you. ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. |
From: Thomas, P. R <Pat...@qu...> - 2024-02-08 16:16:09
|
This singleton will be for listening to the single JMS queue. It will be a Spring bean, which is a singleton by default anyway. The fewer objects I have to recreate for each message, the more efficient it should be. Singletons are usually designed to be accessible by multiple threads, but in this case, it will only be the JMS listener that will access it. The service that will create the HL7 messages to send to the JMS will create HAPI objects each time and will need to be thread safe since multiple users can send messages to the JMS queue simultaneously. Each user can send multiple messages in a block, and the messages have to stay in order. It does seem a little inefficient to create HAPI objects, convert them to a string message, send it through JMS, parse the string back to HAPI objects, then send the HL7 message through LLP. But I think the JMS built-in capabilities to handle multiple messages and fail overs is better than anything I could design myself to send the messages more directly. Thank you, Patrick R. Thomas From: Stewart Anderson <ste...@se...> Sent: Thursday, February 8, 2024 9:31 AM To: Thomas, Patrick R <Pat...@qu...>; hl7...@li... Subject: RE: Thread Safe Queue for HL7 messages CAUTION! This email originated outside of Quest Diagnostics. DO NOT click links or open attachments unless you recognize the sender and know the content is safe. Please report suspicious emails to: ph...@qu...<mailto:ph...@qu...> If I recall correctly a singleton is a class that is available across the entire jvm, so if you intend it to handle all messages from lots of queues, I'd think it might quickly become a bottleneck for messaging. No expert in this but, from an integration perspective it would be more scalable and better from the perspective of different services stopping and starting for various reasons to be individually controllable like you can in most IE platforms. Don't know what your platform is or anything though. S Stewart Anderson Integration Consultant P: +44 20 3982 6826 M: +44 77 7999 6873 W: servita.com<https://www.servita.com/> [cid:image001.png@01DA5A77.A909F0E0]<https://www.linkedin.com/company/servita/> [cid:image002.png@01DA5A77.A909F0E0] The Smiths Building, 179 Great Portland Street, London, W1W 5PL From: Thomas, Patrick R via Hl7api-devel <hl7...@li...<mailto:hl7...@li...>> Sent: Thursday, February 8, 2024 1:54 PM To: hl7...@li...<mailto:hl7...@li...> Subject: Re: [HAPI-devel] Thread Safe Queue for HL7 messages CAUTION: This email originated from outside of the organisation. Do not click links or open attachments unless you recognise the sender and know the content is safe. I have a follow-up question. The documentation says that HapiContext is not intended to be a singleton. Should it be fine to create one HapiContext in the singleton that I create to handle the incoming messages from my queue? It seems very inefficient to recreate the objects I need to send each message. Thank you. ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. |
From: Thomas, P. R <Pat...@qu...> - 2024-02-08 13:54:26
|
I have a follow-up question. The documentation says that HapiContext is not intended to be a singleton. Should it be fine to create one HapiContext in the singleton that I create to handle the incoming messages from my queue? It seems very inefficient to recreate the objects I need to send each message. Thank you. ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. |
From: Thomas, P. R <Pat...@qu...> - 2024-02-07 13:08:44
|
Thanks for the feedback, Mike and Stewart. I use JMS message queues in other parts of the application. I had thought of that as a possible design. I wanted to check that I wasn't overlooking an existing solution and reinventing the wheel. Thank you, Patrick R. Thomas ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. |
From: Stewart A. <ste...@se...> - 2024-02-07 11:47:02
|
Haven't used HAPI in the raw for a while now, but I think it is focused on the serialisation of HL7, there is an MLLP Sender/receiver, but if you want to write then to a queue, after or before receipt/send, you'd need to handle the queue yourself. JMS or ActiveMQ/Rabbit etc. There are tons of examples and libraries for all the major queue APIs. |
From: Thomas, P. R <Pat...@qu...> - 2024-02-06 19:44:15
|
My Java application uses HAPI to create HL7 messages. The messages are initiated by users, and multiple users can send messages at the same time. The current implementation creates text files. Simultaneous file creation is no problem. I need to change the design to send the HL7 message through LLP instead. I need a queue to hold all the messages that need to be sent. Before I go down this path, does HAPI have anything that already handles something like this? Thank you, Patrick R. Thomas ______________________________________________________________________ The contents of this message, together with any attachments, are intended only for the use of the person(s) to which they are addressed and may contain confidential and/or privileged information. Further, any medical information herein is confidential and protected by law. It is unlawful for unauthorized persons to use, review, copy, disclose, or disseminate confidential medical information. If you are not the intended recipient, immediately advise the sender and delete this message and any attachments. Any distribution, or copying of this message, or any attachment, is prohibited. |
From: Russell B. <ru...@wi...> - 2023-06-14 16:14:16
|
Yeah, sorry. It's been a very long time since I posted a question on HAPI FHIR and I couldn't find the forum. Then, there's the fact that I discovered that I had put totally bogus values into those fields which HAPI FHIR didn't catch in its parse, but refused to give them back when I asked for them. So, I fixed that and I'm working. Again, sorry for the multiple screw-ups. On 6/13/23 15:49, McClendon, Craig wrote: > > If I’m not mistaken, this is the mailing list for the HAPI HL7v2 library. > > This code below looks to be using HAPI FHIR – different library. > > See the get help section here for more info: https://hapifhir.io/ > > Incidentally, you are creating a new (empty) Patient object, then > trying to fetch the name. It doesn’t have one because you haven’t set > one. > > *From:* Russell Bateman <ru...@wi...> > *Sent:* Tuesday, June 13, 2023 1:54 PM > *To:* hl7...@li... > *Subject:* [External] [HAPI-devel] Unable to inspect gender and > birthdate in Patient > > This message is from an EXTERNAL SENDER - be CAUTIOUS, particularly > with links and attachments. > > ------------------------------------------------------------------------ > > In the code below, I have an incoming Patient which has all the fields > that interest me filled in (see debugger image, but if it doesn't come > through, it shows that patient is filled out for name, gender, > birthdate and address). > > However, when I attempt to inspect *gender* and *birthdate*, these are > *null* despite the API telling me they exist (which, of course, they > do--see attached image). Note that I create a new Patient, named > worthy, and experimentation demonstrates that my code below copies the > name and the address successfully to worthy. It's just trying to copy > gender and birthdate that result in null. If I stop at the lines with > *******, patient.getGender() and patient.getBirthDate() return null. > > There must be some very fundamental bit of understanding of which I'm > completely ignorant. > > { > worthy = new Patient(); > > // name > if( !patient.hasName() ) > patientTooThin( "name" ); > HumanName humanName = patient.getNameFirstRep(); > List< StringType > givens = humanName.getGiven(); > String family = humanName.getFamily(); > String first = null, middle = null; > for( StringType given : givens ) > { > if( isNull( first ) ) > first = given.toString(); > else if( isNull( middle ) ) > middle = given.toString(); > else > break; > } > > if( isNull( family ) || isNull( first ) ) > patientTooThin( "first or last name" ); > > worthy.setName( Collections.singletonList( humanName ) ); > > // gender ************* > if( !patient.hasGender() ) > patientTooThin( "gender" ); > > worthy.setGender( patient.getGender() ); // *************** > > // birthDate > if( !patient.hasBirthDate() ) > patientTooThin( "birth date" ); > > worthy.setBirthDate( patient.getBirthDate() ); // *************** > > // address > if( !patient.hasAddress() ) > patientTooThin( "address" ); > > worthy.setAddress( Collections.singletonList( > patient.getAddressFirstRep() ) ); > } > > > > ------------------------------------------------------------------------ > > This message is for the designated recipient only and may contain > privileged, proprietary, or otherwise confidential information. If you > have received it in error, please notify the sender immediately and > delete the original. Any other use of the e-mail by you is prohibited. > Where allowed by local law, electronic communications with Accenture > and its affiliates, including e-mail and instant messaging (including > content), may be scanned by our systems for the purposes of > information security, AI-powered support capabilities, and assessment > of internal compliance with Accenture policy. Your privacy is > important to us. Accenture uses your personal data only in compliance > with data protection laws. For further information on how Accenture > processes your personal data, please see our privacy statement at > https://www.accenture.com/us-en/privacy-policy. > ______________________________________________________________________________________ > > www.accenture.com |
From: McClendon, C. <cra...@ac...> - 2023-06-14 04:25:20
|
If I’m not mistaken, this is the mailing list for the HAPI HL7v2 library. This code below looks to be using HAPI FHIR – different library. See the get help section here for more info: https://hapifhir.io/ Incidentally, you are creating a new (empty) Patient object, then trying to fetch the name. It doesn’t have one because you haven’t set one. From: Russell Bateman <ru...@wi...> Sent: Tuesday, June 13, 2023 1:54 PM To: hl7...@li... Subject: [External] [HAPI-devel] Unable to inspect gender and birthdate in Patient This message is from an EXTERNAL SENDER - be CAUTIOUS, particularly with links and attachments. ________________________________ In the code below, I have an incoming Patient which has all the fields that interest me filled in (see debugger image, but if it doesn't come through, it shows that patient is filled out for name, gender, birthdate and address). However, when I attempt to inspect gender and birthdate, these are null despite the API telling me they exist (which, of course, they do--see attached image). Note that I create a new Patient, named worthy, and experimentation demonstrates that my code below copies the name and the address successfully to worthy. It's just trying to copy gender and birthdate that result in null. If I stop at the lines with *******, patient.getGender() and patient.getBirthDate() return null. There must be some very fundamental bit of understanding of which I'm completely ignorant. { worthy = new Patient(); // name if( !patient.hasName() ) patientTooThin( "name" ); HumanName humanName = patient.getNameFirstRep(); List< StringType > givens = humanName.getGiven(); String family = humanName.getFamily(); String first = null, middle = null; for( StringType given : givens ) { if( isNull( first ) ) first = given.toString(); else if( isNull( middle ) ) middle = given.toString(); else break; } if( isNull( family ) || isNull( first ) ) patientTooThin( "first or last name" ); worthy.setName( Collections.singletonList( humanName ) ); // gender ************* if( !patient.hasGender() ) patientTooThin( "gender" ); worthy.setGender( patient.getGender() ); // *************** // birthDate if( !patient.hasBirthDate() ) patientTooThin( "birth date" ); worthy.setBirthDate( patient.getBirthDate() ); // *************** // address if( !patient.hasAddress() ) patientTooThin( "address" ); worthy.setAddress( Collections.singletonList( patient.getAddressFirstRep() ) ); } ________________________________ This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security, AI-powered support capabilities, and assessment of internal compliance with Accenture policy. Your privacy is important to us. Accenture uses your personal data only in compliance with data protection laws. For further information on how Accenture processes your personal data, please see our privacy statement at https://www.accenture.com/us-en/privacy-policy. ______________________________________________________________________________________ www.accenture.com |
From: Martin F. <mar...@po...> - 2023-06-13 21:29:41
|
Hi Russell, You pasted some code, but I don't see a direct relationship with HAPI. What class is 'patient'? If it isn't ca.uhn.... something, then i don't think anyone here can help you. Wbr Martin On 13-06-2023 20:53, Russell Bateman wrote: > This email originated from outside of CGM. Please do not click links > or open attachments unless you know the sender and know the content is > safe. > In the code below, I have an incoming Patient which has all the fields > that interest me filled in (see debugger image, but if it doesn't come > through, it shows that patient is filled out for name, gender, > birthdate and address). > > However, when I attempt to inspect *gender* and *birthdate*, these are > *null* despite the API telling me they exist (which, of course, they > do--see attached image). Note that I create a new Patient, named > worthy, and experimentation demonstrates that my code below copies the > name and the address successfully to worthy. It's just trying to copy > gender and birthdate that result in null. If I stop at the lines with > *******, patient.getGender() and patient.getBirthDate() return null. > > There must be some very fundamental bit of understanding of which I'm > completely ignorant. > > { > worthy = new Patient(); > > // name > if( !patient.hasName() ) > patientTooThin( "name" ); > HumanName humanName = patient.getNameFirstRep(); > List< StringType > givens = humanName.getGiven(); > String family = humanName.getFamily(); > String first = null, middle = null; > for( StringType given : givens ) > { > if( isNull( first ) ) > first = given.toString(); > else if( isNull( middle ) ) > middle = given.toString(); > else > break; > } > > if( isNull( family ) || isNull( first ) ) > patientTooThin( "first or last name" ); > > worthy.setName( Collections.singletonList( humanName ) ); > > // gender ************* > if( !patient.hasGender() ) > patientTooThin( "gender" ); > > worthy.setGender( patient.getGender() ); // *************** > > // birthDate > if( !patient.hasBirthDate() ) > patientTooThin( "birth date" ); > > worthy.setBirthDate( patient.getBirthDate() ); // *************** > > // address > if( !patient.hasAddress() ) > patientTooThin( "address" ); > > worthy.setAddress( Collections.singletonList( > patient.getAddressFirstRep() ) ); > } > > > > > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel |
From: Russell B. <ru...@wi...> - 2023-06-13 20:44:22
|
In the code below, I have an incoming Patient which has all the fields that interest me filled in (see debugger image, but if it doesn't come through, it shows that patient is filled out for name, gender, birthdate and address). However, when I attempt to inspect *gender* and *birthdate*, these are *null* despite the API telling me they exist (which, of course, they do--see attached image). Note that I create a new Patient, named worthy, and experimentation demonstrates that my code below copies the name and the address successfully to worthy. It's just trying to copy gender and birthdate that result in null. If I stop at the lines with *******, patient.getGender() and patient.getBirthDate() return null. There must be some very fundamental bit of understanding of which I'm completely ignorant. { worthy = new Patient(); // name if( !patient.hasName() ) patientTooThin( "name" ); HumanName humanName = patient.getNameFirstRep(); List< StringType > givens = humanName.getGiven(); String family = humanName.getFamily(); String first = null, middle = null; for( StringType given : givens ) { if( isNull( first ) ) first = given.toString(); else if( isNull( middle ) ) middle = given.toString(); else break; } if( isNull( family ) || isNull( first ) ) patientTooThin( "first or last name" ); worthy.setName( Collections.singletonList( humanName ) ); // gender ************* if( !patient.hasGender() ) patientTooThin( "gender" ); worthy.setGender( patient.getGender() ); // *************** // birthDate if( !patient.hasBirthDate() ) patientTooThin( "birth date" ); worthy.setBirthDate( patient.getBirthDate() ); // *************** // address if( !patient.hasAddress() ) patientTooThin( "address" ); worthy.setAddress( Collections.singletonList( patient.getAddressFirstRep() ) ); } |
From: Ian V. <ian...@gm...> - 2023-05-30 23:44:18
|
The short answer to your question is yes, through the use of terser. Terser is very useful, and works well. Parse the message with a pipeparser, create a terser on the message, use the get method. Your messages may introduce challenges, that terser can overcome, but it can still end up being a complex implementation which is potentially fragile if a change occurs in format of the message. If you are going to use terser, remember that printstructure is your friend. If you have message structures which insert Z segments within groups, and/or standard segments in non standard locations you may find, as I have, that building custom message structures using hapi is worth the effort. See the lengthy example below. Hope this helps Ian Example Message (yes, this is based upon reality) MSH|^~\&|CM^DIETARY|SITE|EIP|SITE|20230118115154||ORM^O01|UniqueID|P|2.3||||||8859/1 PID|1|Lots of fields PV1|1|Lots of fields AL1|1|FA|734881000^Tomato^Allergy|MO ZAL|SNAPSHOT|20230118114955|19937481|19937481|ALLERGY|ACTIVE|||||20230118114953|More fields NTE|1||Comments added AL1|2|FA|255620007^Other - Food Allergy^Allergy ZAL|SNAPSHOT|20230118115043|19937487|19937487|ALLERGY|ACTIVE|||||20230118115042|More fields NTE|1||added allergy ORC|NW|Lots of fields OBR|1|Lots of fields OBX|1|IS|MODTEX^SSH Type of Diet||STD This test case: @Test void showZsegmentUsageWithoutCustomMessage() throws HL7Exception { ModelClassFactory MCF = new DefaultModelClassFactory(); PipeParser parser = new PipeParser(); parser.getParserConfiguration().setValidating(false); Message message = parser.parse(REAL_FORMAT_OF_NON_STANDARD_MESSAGE); LOGGER.info(message.printStructure()); Terser terser = new Terser(message); LOGGER.info("Terse for ZAL-4 will find the first ZAL and show field 4? " + terser.get("ZAL-4")); LOGGER.info("No, it shows the value from the second ZAL, because the first is in a group."); LOGGER.info("Terse for /PATIENT/ZAL-4 will find the first ZAL and show field 4? " + terser.get("/PATIENT/ZAL-4")); LOGGER.info("Yes, it shows the value from the first ZAL, because we specified the group"); LOGGER.info("Terse for /NTE2 will find the segment shown as NTE2 in the printstructure " + terser.get("/NTE2-3")); LOGGER.info("Terse for /NTE3 will find the segment shown as NTE3 in the printstructure " + terser.get("/NTE3-3")); } Produces this output: ORM_O01 (start) MSH - MSH|^~\&|CM^DIETARY|SITE|EIP|SITE|20230118115154||ORM^O01|UniqueID|P|2.3||||||8859/1 [ { NTE } ] - Not populated PATIENT (start) [ PID - PID|1|Lots of fields [ PD1 ] - Not populated [ { NTE } ] - Not populated PATIENT_VISIT (start) [ PV1 - PV1|1|Lots of fields [ PV2 ] - Not populated ] PATIENT_VISIT (end) INSURANCE (start) [{ IN1 - Not populated [ IN2 ] - Not populated [ IN3 ] - Not populated }] INSURANCE (end) [ GT1 ] - Not populated [ { AL1 } ] - AL1|1|FA|734881000^Tomato^Allergy|MO [ { ZAL } ] (non-standard) - ZAL|SNAPSHOT|20230118114955|19937481|19937481|ALLERGY|ACTIVE|||||20230118114953|More fields ] PATIENT (end) ORDER (start) { ORC - Not populated ORDER_DETAIL (start) [ < OBR - Not populated | RQD - Not populated | RQ1 - Not populated | RXO - Not populated | ODS - Not populated | ODT - Not populated > [ { NTE } ] - Not populated [ { DG1 } ] - Not populated OBSERVATION (start) [{ OBX - Not populated [ { NTE } ] - Not populated }] OBSERVATION (end) ] ORDER_DETAIL (end) [ CTI ] - Not populated [ BLG ] - Not populated } ORDER (end) [ { NTE2 } ] (non-standard) - NTE|1||Comments added [ { AL1 } ] (non-standard) - AL1|2|FA|255620007^Other - Food Allergy^Allergy [ { ZAL } ] (non-standard) - ZAL|SNAPSHOT|20230118115043|19937487|19937487|ALLERGY|ACTIVE|||||20230118115042|More fields [ { NTE3 } ] (non-standard) - NTE|1||added allergy [ { ORC } ] (non-standard) - ORC|NW|Lots of fields [ { OBR } ] (non-standard) - OBR|1|Lots of fields [ { OBX } ] (non-standard) - OBX|1|IS|MODTEX^SSH Type of Diet||STD ORM_O01 (end) Terse for ZAL-4 will find the first ZAL and show field 4? = 19937487 No, it shows the value from the second ZAL, because the first is in a group. Terse for /PATIENT/ZAL-4 will find the first ZAL and show field 4 = ?19937481 Yes, it shows the value from the first ZAL, because we specified the group Terse for /NTE2 will find the segment shown as NTE2 in the printstructure = Comments added Terse for /NTE3 will find the segment shown as NTE3 in the printstructure = added allergy Note how the non-standard segments (extra NTE segment and ZAL) push the ORC, OBR and OBX segments out of the normal structure. As a result, it will be almost impossible to deal with these messages without creating a custom structure to accommodate the non standard segments in a repeating group. On Wed, 31 May 2023 at 04:26, Michael Godinez via Hl7api-devel < hl7...@li...> wrote: > Hi, > > > > I am trying to determine if Hapi supports any Z segment type without > needing to code anything new within Hapi? > > Also I am trying to find the latest source code and version for download. > > > > Thanks so much, > > Mike > > > > *Mike Godinez* > Sr. Software Engineer > > Email: mic...@he... > > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > |
From: Michael G. <mic...@he...> - 2023-05-30 18:25:05
|
Hi, I am trying to determine if Hapi supports any Z segment type without needing to code anything new within Hapi? Also I am trying to find the latest source code and version for download. Thanks so much, Mike Mike Godinez Sr. Software Engineer [cid:image001.png@01D992FE.A744C230] Email: mic...@he...<mailto:mic...@he...> |
From: Stewart A. <ste...@se...> - 2023-03-15 13:37:32
|
Does HAPI test panel require spefically the 1.6.1 java version or should it run on corretto xx/java 1.8? I have tries it with a 1.8 and coretto 17 but its still complaining that is wants 1.6? Tried the usual things like path to java and JAVA_HOME. Ta Stu |
From: Stewart A. <ste...@se...> - 2023-03-15 11:33:34
|
OK. I installed a 1.6 and it fires up. Question answered I guess 😊 From: Stewart Anderson Sent: Wednesday, March 15, 2023 11:05 AM To: hl7...@li... Subject: HAPI Test Panel - Java Version Does HAPI test panel require spefically the 1.6.1 java version or should it run on corretto xx/java 1.8? I have tries it with a 1.8 and coretto 17 but its still complaining that is wants 1.6? Tried the usual things like path to java and JAVA_HOME. Ta Stu |
From: Michael D. <mdi...@ca...> - 2023-03-07 19:34:34
|
Hello, I need to create an ORU^R01 with a custom ZDS segment. Basically: MSH + PID + ZDS + OBR + OBX. Is there (an easy) way to create an ORU^R01 message with a custom segment? I've seen the example for reading a custom segment here. https://hapifhir.github.io/hapi-hl7v2/xref/ca/uhn/hl7v2/examples/CustomModelClasses.html Thanks, Mike |
From: Anadi K. <ana...@31...> - 2022-12-30 09:00:22
|
Hi everyone, I was using the latest HAPI HL7V2 Parser and it doesn’t seem to throw any errors if I don’t add EVN or leave EVN.2 empty for example in an ADT_A01 message. Is this expected behaviour or a bug? This is confusing, so can anyone give me an idea of what kind of rules for required fields/segments etc is enforced by HAPI HL7? Thank you, Anadi Kashyap |
From: Ian V. <ian...@gm...> - 2022-08-24 22:03:10
|
I'm attempting to build an HL7 Client using the Hapi Library. Fortunately there are examples that show clearly what to do. See the SendLotsOfMessages Example here: https://hapifhir.github.io/hapi-hl7v2/xref/ca/uhn/hl7v2/examples/SendLotsOfMessages.html Unfortunately when I run the code, a null pointer exception occurs: java.lang.NullPointerException at ca.uhn.hl7v2.app.Responder.processMessage(Responder.java:91) at ca.uhn.hl7v2.app.Receiver$Grunt.run(Receiver.java:127) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Curiously this does not occur when the code provided in SendAndReceiveAMessage example is used, where a server is set up and a client sends. Debugging through the code the problem line is where an ApplicationRouter is addressed. When just a client is used, this is not instantiated with setApplicationRouter but this setter is used when the client is created in the SendAndReceiveAMessage example. How can a client be made to function without a server? Thanks Ian |
From: James A. <jam...@gm...> - 2022-06-16 13:49:28
|
Hi Greg, Unfortunately I think you probably have the wrong list. This mailing list is for HAPI HL7v2, which is a Java (not JavaScript) library. Cheers, James On Wed, Jun 15, 2022 at 11:55 AM White, Gregory (GE Healthcare) < Gre...@me...> wrote: > Greetings all, > > > > I am somewhat new to Javascript and very new to HAPI so please forgive the > naiveté of my question… > > > > I am trying to develop Javascript code for use in a Rhapsody engine that > will handle (loop through) multiple OBR/OBX groupings in an ORU_R01 message > (HL7 v2.6). My goal is to add an OBX segment to each group if/when an OBX > exists where OBX-3 = 2907 within the group. My code only seems to work on > the first OBR/OBX group. In my troubleshooting I have found that using > hapiMessageIn.numberOfSegmentRepeats only seems to work if the segment > identified comes consecutively. For example with a message like… > > > > MSH… > > PID… > > PV1… > > OBR|1|… > > OBX|1|… > > OBX|2|… > > OBX|3|ST|2907|… > > OBR|2|… > > OBX|1|… > > OBX|2|… > > OBX|3|… > > OBX|4|ST|2907|… > > > > …the countobr value from the following code block is 1, and the countobx > value is 3. > > > > … > > var obr_exist = hapiMessageIn.segmentExists("OBR", 0); > > if (obr_exist == true) { > > var countobr = hapiMessageIn.numberOfSegmentRepeats("OBR"); > > // Loop through each OBR > > for (var r = 0; r < hapiMessageIn.numberOfSegmentRepeats("OBR"); > r++) { > > > > // Get the OBX segment count > > var obx_exist = hapiMessageIn.segmentExists("OBX", 0); > > if (obx_exist == true) { > > var countobx = > hapiMessageIn.numberOfSegmentRepeats("OBX"); > > // Loop through each OBX and look for OBX-3.1 = 2907 > > for (var x = 0; x < > hapiMessageIn.numberOfSegmentRepeats("OBX"); x++) { > > …. > > } > > } > > } > > … > > > > With the countobr only being equal to 1 it never loops through/processes > the second OBR/OBX grouping and therefore the output message will have the > added OBX segment only in the first OBR/OBX group, like… > > > > MSH… > > PID… > > PV1… > > OBR|1|… > > OBX|1|… > > OBX|2|… > > OBX|3|ST|2907|… > > OBX|4|… (added OBX segment) > > OBR|2|… > > OBX|1|… > > OBX|2|… > > OBX|3|… > > OBX|4|ST|2907|… > > (no added OBX segment) > > > > Is there an issue with my syntax/use of the numberOfSegmentRepeats that > may be causing this? Is there a better method you can propose to handle > this scenario? > > > > Thanks in advance for your review and any suggestions you may have to > resolve this issue. > > > > *Upcoming OOO dates: June 27- July 15 (PTO)* > > * July 25 - 28 (Training) * > > * Aug 4 - 8 (PTO)* > > > > *Gregory A. White* > Interface Integration Engineer, Mural > > GE Healthcare > > T. +1 561 889 5673 > > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > |
From: White, G. (GE Healthcare) <Gre...@me...> - 2022-06-15 15:53:50
|
Greetings all, I am somewhat new to Javascript and very new to HAPI so please forgive the naiveté of my question... I am trying to develop Javascript code for use in a Rhapsody engine that will handle (loop through) multiple OBR/OBX groupings in an ORU_R01 message (HL7 v2.6). My goal is to add an OBX segment to each group if/when an OBX exists where OBX-3 = 2907 within the group. My code only seems to work on the first OBR/OBX group. In my troubleshooting I have found that using hapiMessageIn.numberOfSegmentRepeats only seems to work if the segment identified comes consecutively. For example with a message like... MSH... PID... PV1... OBR|1|... OBX|1|... OBX|2|... OBX|3|ST|2907|... OBR|2|... OBX|1|... OBX|2|... OBX|3|... OBX|4|ST|2907|... ...the countobr value from the following code block is 1, and the countobx value is 3. ... var obr_exist = hapiMessageIn.segmentExists("OBR", 0); if (obr_exist == true) { var countobr = hapiMessageIn.numberOfSegmentRepeats("OBR"); // Loop through each OBR for (var r = 0; r < hapiMessageIn.numberOfSegmentRepeats("OBR"); r++) { // Get the OBX segment count var obx_exist = hapiMessageIn.segmentExists("OBX", 0); if (obx_exist == true) { var countobx = hapiMessageIn.numberOfSegmentRepeats("OBX"); // Loop through each OBX and look for OBX-3.1 = 2907 for (var x = 0; x < hapiMessageIn.numberOfSegmentRepeats("OBX"); x++) { .... } } } ... With the countobr only being equal to 1 it never loops through/processes the second OBR/OBX grouping and therefore the output message will have the added OBX segment only in the first OBR/OBX group, like... MSH... PID... PV1... OBR|1|... OBX|1|... OBX|2|... OBX|3|ST|2907|... OBX|4|... (added OBX segment) OBR|2|... OBX|1|... OBX|2|... OBX|3|... OBX|4|ST|2907|... (no added OBX segment) Is there an issue with my syntax/use of the numberOfSegmentRepeats that may be causing this? Is there a better method you can propose to handle this scenario? Thanks in advance for your review and any suggestions you may have to resolve this issue. Upcoming OOO dates: June 27- July 15 (PTO) July 25 - 28 (Training) Aug 4 - 8 (PTO) Gregory A. White Interface Integration Engineer, Mural GE Healthcare T. +1 561 889 5673 |
From: Zoran A. <zo...@sp...> - 2022-03-20 01:51:16
|
Hi Guys, By way of background, this is our first HL7 or HAPI project and we are successfully exchanging HL7 messages without encryption, HAPI is proving to be a great library. We can receive and send messages without issue. We now have to implement encryption. I am hoping you may be able to help with an issue I am having setting up TLS encryption for sending and receiving HL7 messages using HAPI 2.3. We have been provided a public key for encrypting messages we send. I added the key to our keystore which I can see we need to load using a CustomCertificateTlsSocketFactory, but how do I specify the key in the keystore to use for encrypting outgoing messages? Do we just setup the keystore with a single key which gets used by default? Similarly for incoming messages, we have supplied our public key, but I can’t see where in the CustomCertificateTlsSocketFactory we point to the our keypair or alias and specify the keypair password? Do we extract the private key into a dedicated keystore? I would really appreciate any help you guys may have with this as this is quite new to us. TIA Zoran |
From: Walter K. <wa...@co...> - 2021-10-21 18:41:56
|
Love this progress. It’s really useful in my test environment. > On Oct 21, 2021, at 1:28 PM, James Agnew <jam...@gm...> wrote: > > Hi Randy, > > HAPI HL7v2 is definitely more in maintenance mode at this point as opposed to being actively developed, but it's still an active project. > > You can get a copy of the 2.3 release of the testpanel, which needs to be run from the command line but does work, here: https://github.com/hapifhir/hapi-hl7v2/releases/tag/v2.3 <https://github.com/hapifhir/hapi-hl7v2/releases/tag/v2.3> > > Cheers, > James > > On Thu, Oct 21, 2021 at 12:19 PM randy_clegg--- via Hl7api-devel <hl7...@li... <mailto:hl7...@li...>> wrote: > Hello, > > > > I don’t know if HAPI is still in any sense supported, but I’d like to use it. > > > > The TestPanel project will neither build nor run in the lastest distribution (2.2). Further, the install link at HAPI – Installing HAPI TestPanel (hapifhir.github.io) <https://hapifhir.github.io/hapi-hl7v2/hapi-testpanel/install.html> is broken Encountered a 404 error (sourceforge.net) <http://hl7api.sourceforge.net/hapi-testpanel/jnlp/launch.jnlp>. > > > > Any suggestions? > > > > Thx, > > > > -Randy Clegg > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... <mailto:Hl7...@li...> > https://lists.sourceforge.net/lists/listinfo/hl7api-devel <https://lists.sourceforge.net/lists/listinfo/hl7api-devel> > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel |
From: Mike D. <mdi...@ca...> - 2021-10-21 17:59:32
|
I'd like to know the state of HAPI too. On 10/21/2021 8:17 AM, randy_clegg--- via Hl7api-devel wrote: > > Hello, > > I don’t know if HAPI is still in any sense supported, but I’d like to > use it. > > The TestPanel project will neither build nor run in the lastest > distribution (2.2). Further, the install link at HAPI – Installing > HAPI TestPanel (hapifhir.github.io) > <https://hapifhir.github.io/hapi-hl7v2/hapi-testpanel/install.html> is > broken Encountered a 404 error (sourceforge.net) > <http://hl7api.sourceforge.net/hapi-testpanel/jnlp/launch.jnlp>. > > Any suggestions? > > Thx, > > -Randy Clegg > > > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel |
From: W. R. C. <ran...@ya...> - 2021-10-21 17:51:10
|
One more comment, I was able to jar the whole kit and kaboodle together and get that to run as well. This was also JDK8 if that didn't appear anywhere in my comments. Thanks again! On Thursday, October 21, 2021, 01:39:54 PM EDT, James Agnew <jam...@gm...> wrote: Great! For anyone else who finds this conversation.. I think the issue may have been with the version of Java the testpanel was running against. Adding JNA as Randy did would be one solution, using an older JDK (e.g. JDK6) would be another. The testpanel is definitely known not to work currently on JDK 9+. Cheers,James On Thu, Oct 21, 2021 at 1:37 PM W. Randal Clegg <ran...@ya...> wrote: Thanks James, I did discover 2.3 and it mostly runs but reports this error: C:\1health\ilr\trunk\hapi\hapi-testpanel-2.3>java -cp "C:/1health/ilr/trunk/hapi/hapi-testpanel-2.3/jna-5.9.0.jar" -jar hapi-testpanel-2.3-jar-with-dependencies.jar13:31:40,910 INFO [main] Home:47 - hapi.home is set to C:\1health\ilr\trunk\hapi\hapi-testpanel-2.3\.13:31:41,131 INFO [main] Controller:133 - Restoring work files from directory: C:\Users\Randy\HapiTestPanel\workfiles13:31:41,132 INFO [main] MessagesList:174 - Restoring work file: 94803e3f-409a-408b-b082-4389e7c72057-0000000001.xml13:31:41,171 INFO [main] VersionLogger:77 - HAPI version is: 2.313:31:41,173 INFO [main] VersionLogger:65 - Default Structure libraries found for HL7 versions 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.5.1, 2.6, 2.7, 2.8, 2.8.1,13:31:41,404 INFO [main] Hl7V2MessageCollection:899 - About to set source message for collection13:31:41,406 INFO [main] Hl7V2MessageCollection:277 - Found ER7 message13:31:41,408 INFO [main] Hl7V2MessageBase:256 - About to parse message13:31:41,467 INFO [main] Hl7V2MessageBase:272 - Done parsing message13:31:41,468 INFO [main] Hl7V2MessageCollection:916 - Firing message change event13:31:41,472 INFO [main] Hl7V2MessageCollection:927 - Done setting source message for collectionjava.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at ca.uhn.hl7v2.testpanel.App.main(App.java:82)Caused by: java.lang.NoClassDefFoundError: com/sun/jna/Library at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at ca.uhn.hl7v2.testpanel.WindowsInitializer.setCurrentProcessExplicitAppUserModelID(WindowsInitializer.java:44) at ca.uhn.hl7v2.testpanel.WindowsInitializer.run(WindowsInitializer.java:51) ... 5 moreCaused by: java.lang.ClassNotFoundException: com.sun.jna.Library at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 19 more13:31:41,519 INFO [AWT-EventQueue-0] Controller:885 - Starting TestPanel Controller...13:31:41,709 INFO [AWT-EventQueue-0] TestPanelWindow:198 - Setting window size to 1493 x 84013:31:41,710 WARN [AWT-EventQueue-0] TestPanelWindow:135 - Unknown type is selected: null13:31:41,935 INFO [AWT-EventQueue-0] Hl7V2MessageEditorPanel:119 - Registered syntaxKitOct 21, 2021 1:31:42 PM jsyntaxpane.DefaultSyntaxKit installINFO: Monospaced Fonts: [Bookshelf Symbol 7, Combat Ready BTN, Consolas, Courier New, Lucida Console, Lucida Sans Typewriter, MS Outlook, MS Reference Specialty, MT Extra, Marlett, MingLiU-ExtB, MingLiU_HKSCS-ExtB, NSimSun, Prime Sans Mono, SimSun, SimSun-ExtB, Symbol, Webdings, Wingdings, Wingdings 2, Wingdings 3]13:31:42,453 INFO [AWT-EventQueue-0] Er7SyntaxKit:51 - Font is: java.awt.Font[family=Lucida Sans Typewriter,name=Lucida Sans Typewriter,style=plain,size=12]13:31:42,626 INFO [Thread-3] Hl7V2MessageTree:2371 - Running an update of the Message Tree13:31:42,736 INFO [pool-1-thread-1] Prefs:741 - Syncing user preferences to disk13:31:42,738 INFO [pool-1-thread-1] Prefs:748 - Done synchronizing user prefs (3378 chars)13:31:42,840 INFO [pool-1-thread-1] Prefs:741 - Syncing user preferences to disk13:31:42,841 INFO [pool-1-thread-1] Prefs:748 - Done synchronizing user prefs (3378 chars)13:31:42,842 INFO [pool-1-thread-1] Hl7V2MessageEr7:364 - Highlited path is now: /MSH-113:31:42,897 INFO [Thread-4] Controller:1025 - HAPI TestPanel is up to date. Great!13:31:42,952 INFO [AWT-EventQueue-0] Hl7V2MessageTree:285 - Opening default paths By unzipping the distribution and downloading and unzipping the jna-5.9.0.jar into the same folder I did get it to run without error as a regular set of classes. Thanks again! -Randy On Thursday, October 21, 2021, 01:28:31 PM EDT, James Agnew <jam...@gm...> wrote: Hi Randy, HAPI HL7v2 is definitely more in maintenance mode at this point as opposed to being actively developed, but it's still an active project. You can get a copy of the 2.3 release of the testpanel, which needs to be run from the command line but does work, here: https://github.com/hapifhir/hapi-hl7v2/releases/tag/v2.3 Cheers,James On Thu, Oct 21, 2021 at 12:19 PM randy_clegg--- via Hl7api-devel <hl7...@li...> wrote: Hello, I don’t know if HAPI is still in any sense supported, but I’d like to use it. The TestPanel project will neither build nor run in the lastest distribution (2.2). Further, the install link at HAPI – Installing HAPI TestPanel (hapifhir.github.io) is broken Encountered a 404 error (sourceforge.net). Any suggestions? Thx, -Randy Clegg _______________________________________________ Hl7api-devel mailing list Hl7...@li... https://lists.sourceforge.net/lists/listinfo/hl7api-devel |
From: James A. <jam...@gm...> - 2021-10-21 17:40:00
|
Great! For anyone else who finds this conversation.. I think the issue may have been with the version of Java the testpanel was running against. Adding JNA as Randy did would be one solution, using an older JDK (e.g. JDK6) would be another. The testpanel is definitely known not to work currently on JDK 9+. Cheers, James On Thu, Oct 21, 2021 at 1:37 PM W. Randal Clegg <ran...@ya...> wrote: > Thanks James, > > I did discover 2.3 and it mostly runs but reports this error: > > C:\1health\ilr\trunk\hapi\hapi-testpanel-2.3>java -cp > "C:/1health/ilr/trunk/hapi/hapi-testpanel-2.3/jna-5.9.0.jar" -jar > hapi-testpanel-2.3-jar-with-dependencies.jar > 13:31:40,910 INFO [main] Home:47 - hapi.home is set to > C:\1health\ilr\trunk\hapi\hapi-testpanel-2.3\. > 13:31:41,131 INFO [main] Controller:133 - Restoring work files from > directory: C:\Users\Randy\HapiTestPanel\workfiles > 13:31:41,132 INFO [main] MessagesList:174 - Restoring work file: > 94803e3f-409a-408b-b082-4389e7c72057-0000000001.xml > 13:31:41,171 INFO [main] VersionLogger:77 - HAPI version is: 2.3 > 13:31:41,173 INFO [main] VersionLogger:65 - Default Structure libraries > found for HL7 versions 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.5.1, 2.6, 2.7, > 2.8, 2.8.1, > 13:31:41,404 INFO [main] Hl7V2MessageCollection:899 - About to set source > message for collection > 13:31:41,406 INFO [main] Hl7V2MessageCollection:277 - Found ER7 message > 13:31:41,408 INFO [main] Hl7V2MessageBase:256 - About to parse message > 13:31:41,467 INFO [main] Hl7V2MessageBase:272 - Done parsing message > 13:31:41,468 INFO [main] Hl7V2MessageCollection:916 - Firing message > change event > 13:31:41,472 INFO [main] Hl7V2MessageCollection:927 - Done setting source > message for collection > java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at ca.uhn.hl7v2.testpanel.App.main(App.java:82) > Caused by: java.lang.NoClassDefFoundError: com/sun/jna/Library > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:756) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) > at java.net.URLClassLoader.access$100(URLClassLoader.java:74) > at java.net.URLClassLoader$1.run(URLClassLoader.java:369) > at java.net.URLClassLoader$1.run(URLClassLoader.java:363) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:362) > at java.lang.ClassLoader.loadClass(ClassLoader.java:418) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) > at java.lang.ClassLoader.loadClass(ClassLoader.java:351) > at > ca.uhn.hl7v2.testpanel.WindowsInitializer.setCurrentProcessExplicitAppUserModelID(WindowsInitializer.java:44) > at > ca.uhn.hl7v2.testpanel.WindowsInitializer.run(WindowsInitializer.java:51) > ... 5 more > Caused by: java.lang.ClassNotFoundException: com.sun.jna.Library > at java.net.URLClassLoader.findClass(URLClassLoader.java:382) > at java.lang.ClassLoader.loadClass(ClassLoader.java:418) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) > at java.lang.ClassLoader.loadClass(ClassLoader.java:351) > ... 19 more > 13:31:41,519 INFO [AWT-EventQueue-0] Controller:885 - Starting TestPanel > Controller... > 13:31:41,709 INFO [AWT-EventQueue-0] TestPanelWindow:198 - Setting window > size to 1493 x 840 > 13:31:41,710 WARN [AWT-EventQueue-0] TestPanelWindow:135 - Unknown type > is selected: null > 13:31:41,935 INFO [AWT-EventQueue-0] Hl7V2MessageEditorPanel:119 - > Registered syntaxKit > Oct 21, 2021 1:31:42 PM jsyntaxpane.DefaultSyntaxKit install > INFO: Monospaced Fonts: [Bookshelf Symbol 7, Combat Ready BTN, Consolas, > Courier New, Lucida Console, Lucida Sans Typewriter, MS Outlook, MS > Reference Specialty, MT Extra, Marlett, MingLiU-ExtB, MingLiU_HKSCS-ExtB, > NSimSun, Prime Sans Mono, SimSun, SimSun-ExtB, Symbol, Webdings, Wingdings, > Wingdings 2, Wingdings 3] > 13:31:42,453 INFO [AWT-EventQueue-0] Er7SyntaxKit:51 - Font is: > java.awt.Font[family=Lucida Sans Typewriter,name=Lucida Sans > Typewriter,style=plain,size=12] > 13:31:42,626 INFO [Thread-3] Hl7V2MessageTree:2371 - Running an update of > the Message Tree > 13:31:42,736 INFO [pool-1-thread-1] Prefs:741 - Syncing user preferences > to disk > 13:31:42,738 INFO [pool-1-thread-1] Prefs:748 - Done synchronizing user > prefs (3378 chars) > 13:31:42,840 INFO [pool-1-thread-1] Prefs:741 - Syncing user preferences > to disk > 13:31:42,841 INFO [pool-1-thread-1] Prefs:748 - Done synchronizing user > prefs (3378 chars) > 13:31:42,842 INFO [pool-1-thread-1] Hl7V2MessageEr7:364 - Highlited path > is now: /MSH-1 > 13:31:42,897 INFO [Thread-4] Controller:1025 - HAPI TestPanel is up to > date. Great! > 13:31:42,952 INFO [AWT-EventQueue-0] Hl7V2MessageTree:285 - Opening > default paths > > By unzipping the distribution and downloading and unzipping the jna-5.9.0.jar > into the same folder I did get it to run without error as a regular set of > classes. > > Thanks again! > > -Randy > > > On Thursday, October 21, 2021, 01:28:31 PM EDT, James Agnew < > jam...@gm...> wrote: > > > Hi Randy, > > HAPI HL7v2 is definitely more in maintenance mode at this point as opposed > to being actively developed, but it's still an active project. > > You can get a copy of the 2.3 release of the testpanel, which needs to be > run from the command line but does work, here: > https://github.com/hapifhir/hapi-hl7v2/releases/tag/v2.3 > > Cheers, > James > > On Thu, Oct 21, 2021 at 12:19 PM randy_clegg--- via Hl7api-devel < > hl7...@li...> wrote: > > Hello, > > > > I don’t know if HAPI is still in any sense supported, but I’d like to use > it. > > > > The TestPanel project will neither build nor run in the lastest > distribution (2.2). Further, the install link at HAPI – Installing HAPI > TestPanel (hapifhir.github.io) > <https://hapifhir.github.io/hapi-hl7v2/hapi-testpanel/install.html> is > broken Encountered a 404 error (sourceforge.net) > <http://hl7api.sourceforge.net/hapi-testpanel/jnlp/launch.jnlp>. > > > > Any suggestions? > > > > Thx, > > > > -Randy Clegg > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > > |