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
(6) |
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
|
From: Ian V. <Ian...@he...> - 2020-10-28 00:05:39
|
Is there a release available with this fix in place? We have a sender that doesn't fill in the MFE-4, so we have been staying down at release 2.2 for a while because their MFN will parse using that version. Don't feel confident trying to build it all myself. Thanks Ian Vowles Integration Specialist, Metro North Integration Centre Digital Metro North Citilink Lobby 1, Level 3 153 Campbell St, Bowen Hills QLD 4006 P: 07 3646 2557 E: Ian...@he...<mailto:Ian...@he...> metronorth.health.qld.gov.au<https://metronorth.health.qld.gov.au/> [Values in Action] [Description: Description: Facebook]<http://www.facebook.com/metronorthhhs> [Description: Description: Twitter] <http://www.twitter.com/MetroNorthHHS> [Description: Description: LinkedIn] <http://www.linkedin.com/company/metro-north-hospital-and-health-service> follow us on social media ********************************************************************************** Disclaimer: This email and any attachments may contain legally privileged or confidential information and may be protected by copyright. You must not use or disclose them other than for the purposes for which they were supplied. The privilege or confidentiality attached to this message and attachments is not waived by reason of mistaken delivery to you. If you are not the intended recipient, you must not use, disclose, retain, forward or reproduce this message or any attachments. If you receive this message in error, please notify the sender by return email or telephone and destroy and delete all copies. Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government. Queensland Health carries out monitoring, scanning and blocking of emails and attachments sent from or to addresses within Queensland Health for the purposes of operating, protecting, maintaining and ensuring appropriate use of its computer network. ********************************************************************************** |
|
From: Martin F. <mar...@po...> - 2020-09-28 11:44:07
|
On 25/09/2020 12:32, david.mblackburn--- via Hl7api-devel wrote:
>
> Hi All,
>
>
>
> I have been using HL7 HAPI for a while now but have been recently
> asked if we could restrict the server listener so that only designated
> ip addresses can connect, when invoking the server there doesn’t
> appear to be a way to do this unless I use an external firewall on the
> server machine, any thoughts?
>
I solved it by extending SimpleServer:
public class MyService extends SimpleServer
@Override public synchronized void newConnection(ActiveConnection c) {
String sourceAddress = c.getRemoteAddress().getHostAddress();
.... check sourceAddress
}
---
MyService service = new MyService(this.clientContext, port, false);
service.registerApplication(..)
service.start();
Wbr
Martin
|
|
From: Walter K. <wa...@co...> - 2020-09-25 12:16:59
|
Hi David;
I have not dug into the bowels of the HAPI Server implementation, so I could be
off base, but I’ll throw this our there nonetheless. I believe you have several options,
one of which you mention….using the firewall.
Other options
1) Programmatic: implement your own “baby application firewall”
a: allow the connection
b: before doing anything else, grab the connection socket
c: compare to a list of IPs that you’ll “accept” (assuming you know what they are)
d: if sourceIP Is not on your list, close the socket. If IP is allowed, then proceed as normal
2: Programmatic:
a: the server socket accept() can be overridden (if using Java)
b: perhaps the IP list can be checked there before establishing an actual connection
Some type of middleware:
2) add a load balancer. There are open source load balancers out (HAProxy, NGINX). It can do the
Ip Address filtering for you.
If you are worried about some type of DOS attack, you’ll certainly want to be auditing traffic to see
where its coming from.
Good Luck
Walter
> On Sep 25, 2020, at 6:32 AM, david.mblackburn--- via Hl7api-devel <hl7...@li...> wrote:
>
> Hi All,
>
> I have been using HL7 HAPI for a while now but have been recently asked if we could restrict the server listener so that only designated ip addresses can connect, when invoking the server there doesn’t appear to be a way to do this unless I use an external firewall on the server machine, any thoughts?
>
> Rgds
> DavidB.
>
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virus-free. www.avg.com <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> <x-msg://34/#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>_______________________________________________
> 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>
|
|
From: <dav...@bt...> - 2020-09-25 10:32:34
|
Hi All, I have been using HL7 HAPI for a while now but have been recently asked if we could restrict the server listener so that only designated ip addresses can connect, when invoking the server there doesn't appear to be a way to do this unless I use an external firewall on the server machine, any thoughts? Rgds DavidB. -- This email has been checked for viruses by AVG. https://www.avg.com |
|
From: Thea S. <the...@ho...> - 2020-09-13 10:40:00
|
Hi Martin!
Thanks a lot! This was the crucial note:
(note: <version> is the hapi version, not the message version. so for e.g. 2.5 messages, you need:
Now is works!
wbr
Thea
________________________________
Von: Martin Fleurke <mar...@po...>
Gesendet: Freitag, 11. September 2020 12:08
An: hl7...@li... <hl7...@li...>
Betreff: Re: [HAPI-devel] WG: Problem with ORM O01, Terser, ORDER
Hi Thea,
I can reproduce the problem for v2.3 messages :) But I found out why: I don't have the v2.3 code!
HAPI has a base jar, and for each message version an additional jar file. You need to include them in your project.
For maven, e.g.:
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v23</artifactId>
<version>2.3</version>
</dependency>
(note: <version> is the hapi version, not the message version. so for e.g. 2.5 messages, you need:
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v25</artifactId>
<version>2.3</version>
</dependency>
)
On 10/09/2020 12:28, Thea Schmidt wrote:
Hi Martin,
thanks for your response. It is definitly no problem with the endings, charset etc. I can read the message, parse it and access other fields via terser.
Tests like the following work:
assertEquals("3247", terser.get("PID-3-1-1"));
assertEquals("jmWo4", terser.get("ORC3-2-1-1"));
assertEquals("jmWo2", terser.get("ORC-2-1-1"));
assertEquals("jmWo4", terser.get("OBR3-2-1-1"));
assertEquals("jmWo2", terser.get("OBR-2-1-1"));
I can show you a snapshot from Eclipse. You can see there how the terser (or the finder) handels the segments.
[cid:par...@po...]
Its not a problem of the V2 Version. With 2.5 oder 2.7 it is the same.
Wbr
Thea
________________________________
Wbr
Martin Fleurke
|
|
From: Martin F. <mar...@po...> - 2020-09-11 10:09:08
|
Hi Thea,
I can reproduce the problem for v2.3 messages :) But I found out why: I
don't have the v2.3 code!
HAPI has a base jar, and for each message version an additional jar
file. You need to include them in your project.
For maven, e.g.:
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v23</artifactId>
<version>2.3</version>
</dependency>
(note: <version> is the hapi version, not the message version. so for
e.g. 2.5 messages, you need:
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v25</artifactId>
<version>2.3</version>
</dependency>
)
On 10/09/2020 12:28, Thea Schmidt wrote:
> Hi Martin,
>
> thanks for your response. It is definitly no problem with the endings,
> charset etc. I can read the message, parse it and access other fields
> via terser.
>
> Tests like the following work:
>
> assertEquals("3247", terser.get("PID-3-1-1"));
> assertEquals("jmWo4", terser.get("ORC3-2-1-1"));
> assertEquals("jmWo2", terser.get("ORC-2-1-1"));
> assertEquals("jmWo4", terser.get("OBR3-2-1-1"));
> assertEquals("jmWo2", terser.get("OBR-2-1-1"));
>
> I can show you a snapshot from Eclipse. You can see there how the
> terser (or the finder) handels the segments.
>
> Its not a problem of the V2 Version. With 2.5 oder 2.7 it is the same.
>
> Wbr
>
> Thea
>
> ------------------------------------------------------------------------
Wbr
Martin Fleurke
|
|
From: Thea S. <the...@ho...> - 2020-09-10 10:43:52
|
Hi Martin,
thanks for your response. It is definitly no problem with the endings, charset etc. I can read the message, parse it and access other fields via terser.
Tests like the following work:
assertEquals("3247", terser.get("PID-3-1-1"));
assertEquals("jmWo4", terser.get("ORC3-2-1-1"));
assertEquals("jmWo2", terser.get("ORC-2-1-1"));
assertEquals("jmWo4", terser.get("OBR3-2-1-1"));
assertEquals("jmWo2", terser.get("OBR-2-1-1"));
I can show you a snapshot from Eclipse. You can see there how the terser (or the finder) handels the segments.
[cid:0c2429df-2a06-43c5-8327-e82ec34ca084]
Its not a problem of the V2 Version. With 2.5 oder 2.7 it is the same.
Wbr
Thea
________________________________
Von: Martin Fleurke <mar...@po...>
Gesendet: Mittwoch, 9. September 2020 09:46
An: hl7...@li... <hl7...@li...>
Betreff: Re: [HAPI-devel] Problem with ORM O01, Terser, ORDER
Hi Thea,
Your code looks good to me (TestPanel app shows the same terser path), but you didn't post the "messageText = ... " part.
HL7 messages have carriage return line endings. Did you use that as well?
e.g.
String messageText = "MSH|........\r" +
"PID|....\r" + ...
On 08/09/2020 10:48, Thea Schmidt wrote:
Hello!
This is my sample message. It ist valid HL7 V2.3
MSH|^~\&|DPS|0|OPL|REHA|20200625075418||ORM^O01|0067164|P|2.3|||AL|NE
PID|1|3247|3247|92000333|Meyer^Jens^^^^^L|Meyer|19780312|M|||Rosenweg 1^^Bergdorf^^24612^DE||||DE|||||||||||||||
PV1|1|I|S2^Bett6^^PSY^K_KAP||||||^^^^^^^^^L||||||||||3247A1F1|||||||||||||||||||||||||201912031014|202002231430||||||
ORC|NW|jmWo2
OBR|1|jmWo2||FAN1^Fango^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo1
OBR|2|jmWo1||KG1^KG^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo4
OBR|3|jmWo4||Unbekannt^Warmluft^Heilmittelkatalog|||||||||||||||||||||||4^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo5
OBR|4|jmWo5||Ergo1^Ergo 1^Heilmittelkatalog|||||||||||||||||||||||2^^^^^^^^^C&1x pro Woche
This ist my code
String messageText = .....
PipeParser pipeParser = new PipeParser();
this.message = pipeParser.parse(messageText);
this.terser = new Terser(message);
.
.
.
.
assertEquals("3", terser.get("/ORDER(3)/ORDER_DETAIL/OBR-1"));
I only get an error: Can't find ORDER as a direct child
Does anybody know what the problem ist here?
Thanks for your help,
Thea
_______________________________________________
Hl7api-devel mailing list
Hl7...@li...<mailto:Hl7...@li...>
https://lists.sourceforge.net/lists/listinfo/hl7api-devel
Wbr
Martin Fleurke
|
|
From: Martin F. <mar...@po...> - 2020-09-09 07:47:14
|
Hi Thea,
Your code looks good to me (TestPanel app shows the same terser path),
but you didn't post the "messageText = ... " part.
HL7 messages have carriage return line endings. Did you use that as well?
e.g.
String messageText = "MSH|........\r" +
"PID|....\r" + ...
On 08/09/2020 10:48, Thea Schmidt wrote:
> Hello!
>
> This is my sample message. It ist valid HL7 V2.3
>
> MSH|^~\&|DPS|0|OPL|REHA|20200625075418||ORM^O01|0067164|P|2.3|||AL|NE
> PID|1|3247|3247|92000333|Meyer^Jens^^^^^L|Meyer|19780312|M|||Rosenweg
> 1^^Bergdorf^^24612^DE||||DE|||||||||||||||
> PV1|1|I|S2^Bett6^^PSY^K_KAP||||||^^^^^^^^^L||||||||||3247A1F1|||||||||||||||||||||||||201912031014|202002231430||||||
> ORC|NW|jmWo2
> OBR|1|jmWo2||FAN1^Fango^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x
> pro Woch.
> ORC|NW|jmWo1
> OBR|2|jmWo1||KG1^KG^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x
> pro Woch.
> ORC|NW|jmWo4
> OBR|3|jmWo4||Unbekannt^Warmluft^Heilmittelkatalog|||||||||||||||||||||||4^^^^^^^^^C&2x
> pro Woch.
> ORC|NW|jmWo5
> OBR|4|jmWo5||Ergo1^Ergo
> 1^Heilmittelkatalog|||||||||||||||||||||||2^^^^^^^^^C&1x pro Woche
>
> This ist my code
>
> String messageText = .....
> PipeParser pipeParser = new PipeParser();
> this.message = pipeParser.parse(messageText);
> this.terser = new Terser(message);
> .
> .
> .
> .
>
> assertEquals("3", terser.get("/ORDER(3)/ORDER_DETAIL/OBR-1"));
>
> I only get an error: Can't find ORDER as a direct child
>
> Does anybody know what the problem ist here?
>
> Thanks for your help,
>
> Thea
>
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
Wbr
Martin Fleurke
|
|
From: Thea S. <the...@ho...> - 2020-09-08 09:21:30
|
Hello!
This is my sample message. It ist valid HL7 V2.3
MSH|^~\&|DPS|0|OPL|REHA|20200625075418||ORM^O01|0067164|P|2.3|||AL|NE
PID|1|3247|3247|92000333|Meyer^Jens^^^^^L|Meyer|19780312|M|||Rosenweg 1^^Bergdorf^^24612^DE||||DE|||||||||||||||
PV1|1|I|S2^Bett6^^PSY^K_KAP||||||^^^^^^^^^L||||||||||3247A1F1|||||||||||||||||||||||||201912031014|202002231430||||||
ORC|NW|jmWo2
OBR|1|jmWo2||FAN1^Fango^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo1
OBR|2|jmWo1||KG1^KG^Heilmittelkatalog|||||||||||||||||||||||6^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo4
OBR|3|jmWo4||Unbekannt^Warmluft^Heilmittelkatalog|||||||||||||||||||||||4^^^^^^^^^C&2x pro Woch.
ORC|NW|jmWo5
OBR|4|jmWo5||Ergo1^Ergo 1^Heilmittelkatalog|||||||||||||||||||||||2^^^^^^^^^C&1x pro Woche
This ist my code
String messageText = .....
PipeParser pipeParser = new PipeParser();
this.message = pipeParser.parse(messageText);
this.terser = new Terser(message);
.
.
.
.
assertEquals("3", terser.get("/ORDER(3)/ORDER_DETAIL/OBR-1"));
I only get an error: Can't find ORDER as a direct child
Does anybody know what the problem ist here?
Thanks for your help,
Thea
|
|
From: Thea S. <the...@ho...> - 2020-09-08 09:16:41
|
Hello! This ist my Message: |
|
From: Nathaniel G. <nat...@ve...> - 2020-07-14 21:48:30
|
Hello, I am on a team that validates HL7 Messages. We have recently started using Hapi Testpanel and have a couple question regarding the tool. Current version we are using: 2.3 1. Tools->HL7 File Diff is not working. It used to show the difference in two HL7 files but now it says "comparison failed unexpectedly, this is probably a bug: Failed to parse message" 2. What is the use of Conformance->Profiles and Tables option? can it be used to store z-Segments and validated messages against the stored z segment messages? If yes, then how? 3. In HAPI Test Panel 2.3, Under Add Message, when you select version 2.3.1 , it does not show any of the standaradt ADT messages. the type panel lists CRM^C02* messages Any help on any or all these questions would be greatly appreciated. Thank you so much, Nathaniel Gurian Software Developer VetsEZ (845) 238-9707 Office Hours: 8:30AM - 5:00PM EST nat...@ve...<mailto:nat...@ve...> | nat...@va...<mailto:nat...@va...> http://vetsez.com |
|
From: srikanth c. <sri...@gm...> - 2020-06-04 17:40:11
|
Hi Saravanan, Thanks, I will consider purchasing a normative Database for one of the HL7 versions :), if there is no alternative way on how the code is generated. I didn't understand, the meaning of the HL7 Local chapter? Thank you, Srikanth. On Sun, Apr 26, 2020 at 5:17 PM Saravanan Subramanian < man...@ou...> wrote: > Hi Srikanth, > > I could be totally wrong on this but I vaguely recall that this being a > MIcrosoft Access database that was sold by the HL7 group and so, may not > freely available. > > You may want to check the HL7 store or your HL7 local chapter for more > details on getting access to this. > > Regards > > Saravanan > ------------------------------ > *From:* srikanth chadalavada <sri...@gm...> > *Sent:* Sunday, April 26, 2020 4:03:44 PM > *To:* hl7...@li... < > hl7...@li...> > *Subject:* [HAPI-devel] Hl7 DataBases > > I am trying to set up the Hapi project in my mac and I need to find the > database that was used to generate the source code. I've tried searching in > the hl7.org > <https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fhl7.org%2F&data=02%7C01%7C%7Cf17e9f8847794a06d56908d7ea2dce11%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637235354754704413&sdata=WIVVN9FrRGUMtpOWXtv7iqrfYDpfxI4uD4vQJtgWLAo%3D&reserved=0> and > I didn't find any. Could anyone provide me with the links to the databases? > > > Thank you, > > Srikanth. > |
|
From: Saravanan S. <man...@ou...> - 2020-04-26 22:17:56
|
Hi Srikanth, I could be totally wrong on this but I vaguely recall that this being a MIcrosoft Access database that was sold by the HL7 group and so, may not freely available. You may want to check the HL7 store or your HL7 local chapter for more details on getting access to this. Regards Saravanan ________________________________ From: srikanth chadalavada <sri...@gm...> Sent: Sunday, April 26, 2020 4:03:44 PM To: hl7...@li... <hl7...@li...> Subject: [HAPI-devel] Hl7 DataBases I am trying to set up the Hapi project in my mac and I need to find the database that was used to generate the source code. I've tried searching in the hl7.org<https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fhl7.org%2F&data=02%7C01%7C%7Cf17e9f8847794a06d56908d7ea2dce11%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637235354754704413&sdata=WIVVN9FrRGUMtpOWXtv7iqrfYDpfxI4uD4vQJtgWLAo%3D&reserved=0> and I didn't find any. Could anyone provide me with the links to the databases? Thank you, Srikanth. |
|
From: srikanth c. <sri...@gm...> - 2020-04-26 22:04:03
|
I am trying to set up the Hapi project in my mac and I need to find the database that was used to generate the source code. I've tried searching in the hl7.org and I didn't find any. Could anyone provide me with the links to the databases? Thank you, Srikanth. |
|
From: Gurian, N. J. (VetsEZ) <Nat...@va...> - 2020-04-09 16:29:49
|
Hello, I am new to HAPI and HL7 messaging in general. I am the developer on a contract for the VA and we are starting to transition to HAPI test panel for HL7 messaging. I have a few questions that my team has brought to me. I have not been able to find anything specific other than potentially writing custom functions. Any help or direction would be greatly appreciated. 1. Building z segment libraries/profiles in HAPI Test Panel 2. How can we get better error message from HAPI? 3. How to build/create a profile from scratch? Thank you so much for your time, Nathaniel Gurian Contractor Nat...@va...<mailto:Nat...@va...> 845-238-9707 |
|
From: Russell B. <ru...@wi...> - 2020-04-06 21:44:08
|
Oops, sorry James, I though I had that list. I will correct that for next time. Many thanks! On 4/6/20 12:38 PM, James Agnew wrote: > Hi Russell, > > FYI this is the HAPI-HL7v2 mailing list, it's probably better to ask > this question on the HAPI FHIR list at : > https://groups.google.com/forum/#!forum/hapi-fhir > > That said, there isn't a built-in way of applying XPath, but you might > look at FhirContext#newFluentPath() (renamed to newFhrPath on HAPI > FHIR 5.0.0-SNAPSHOT). This allows you to apply FHIRPath expressions to > FHIR resources. These are not exactly like xpath, but are just as > expressive. > > Cheers, > James > > On Mon, Apr 6, 2020 at 2:10 PM Russell Bateman <ru...@wi... > <mailto:ru...@wi...>> wrote: > > I wonder if there's a way to get an XPath within the source > document for any, given piece of information I'm able to get out > of the API. (Note that there is a way to do this using MDHT for > HL7 v3 work; this is why I ask.) I need to annotate data I extract > with the location where I found it in the original source document. > > For example, let's assume the following code: > > FhirContext context = FhirContext.forDstu3(); > IParser parser = context.newXmlParser(); > Patient patient = parser.parseResource( Patient.class, > getFhirRecord() ); > > List< HumanName > names = patient.getName(); > for( HumanName name : names ) > { > String family = name.getFamily(); > List< StringType > givenNames = name.getGiven(); > > for( StringType given : givenNames ) > { > String name = given.toString(); > String xpath = ?; // x marks the spot > } > } > > Neither by inspecting data structures in the debugger nor by > examining the Javadoc for /org.hl7.fhir.dstu3.model.Patient/ am I > able to find way to get back something like > > /Patient/contained[1]/Patient/name/given[1]/ > > for a given name at [x marks the spot above] . > > How are others solving this? Does anyone else need to solve this? > > Thanks > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > <mailto:Hl7...@li...> > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > |
|
From: James A. <jam...@gm...> - 2020-04-06 18:38:59
|
Hi Russell, FYI this is the HAPI-HL7v2 mailing list, it's probably better to ask this question on the HAPI FHIR list at : https://groups.google.com/forum/#!forum/hapi-fhir That said, there isn't a built-in way of applying XPath, but you might look at FhirContext#newFluentPath() (renamed to newFhrPath on HAPI FHIR 5.0.0-SNAPSHOT). This allows you to apply FHIRPath expressions to FHIR resources. These are not exactly like xpath, but are just as expressive. Cheers, James On Mon, Apr 6, 2020 at 2:10 PM Russell Bateman <ru...@wi...> wrote: > I wonder if there's a way to get an XPath within the source document for > any, given piece of information I'm able to get out of the API. (Note that > there is a way to do this using MDHT for HL7 v3 work; this is why I ask.) I > need to annotate data I extract with the location where I found it in the > original source document. > > For example, let's assume the following code: > > FhirContext context = FhirContext.forDstu3(); > IParser parser = context.newXmlParser(); > Patient patient = parser.parseResource( Patient.class, getFhirRecord() > ); > > List< HumanName > names = patient.getName(); > for( HumanName name : names ) > { > String family = name.getFamily(); > List< StringType > givenNames = name.getGiven(); > > for( StringType given : givenNames ) > { > String name = given.toString(); > String xpath = ?; // x marks the spot > } > } > > Neither by inspecting data structures in the debugger nor by examining the > Javadoc for *org.hl7.fhir.dstu3.model.Patient* am I able to find way to > get back something like > > *Patient/contained[1]/Patient/name/given[1]* > > for a given name at [x marks the spot above] . > > How are others solving this? Does anyone else need to solve this? > > Thanks > > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > |
|
From: Russell B. <ru...@wi...> - 2020-04-06 18:10:10
|
I wonder if there's a way to get an XPath within the source document for
any, given piece of information I'm able to get out of the API. (Note
that there is a way to do this using MDHT for HL7 v3 work; this is why I
ask.) I need to annotate data I extract with the location where I found
it in the original source document.
For example, let's assume the following code:
FhirContext context = FhirContext.forDstu3();
IParser parser = context.newXmlParser();
Patient patient = parser.parseResource( Patient.class,
getFhirRecord() );
List< HumanName > names = patient.getName();
for( HumanName name : names )
{
String family = name.getFamily();
List< StringType > givenNames = name.getGiven();
for( StringType given : givenNames )
{
String name = given.toString();
String xpath = ?; // x marks the spot
}
}
Neither by inspecting data structures in the debugger nor by examining
the Javadoc for /org.hl7.fhir.dstu3.model.Patient/ am I able to find way
to get back something like
/Patient/contained[1]/Patient/name/given[1]/
for a given name at [x marks the spot above] .
How are others solving this? Does anyone else need to solve this?
Thanks
|
|
From: Andrew R. <and...@ni...> - 2020-01-31 18:36:47
|
Thanks for calling that out.
+github contributors: What is the process for requesting a new release to
make this fix available?
On Thu, Jan 30, 2020 at 3:25 PM Ian Vowles <Ian...@he...>
wrote:
> Would advise in favour of adding default and invalid Obx2Type settings,
> having just had a problem with messages containing bad OBX segments.
>
>
>
>
> context.getPipeParser().getParserConfiguration().setDefaultObx2Type("ST");
>
>
> context.getPipeParser().getParserConfiguration().setInvalidObx2Type("ST");
>
>
>
> Watch out for MFNs if you get them. They have similar type assigning
> fields, which the HAPI 2.2 release seems to cope with, but the HAPI 2.3
> library is strict about but lacks a configuration for correcting them. The
> code base has a fix for it, but there hasn’t been a release containing it.
> I’m not game to try to do the entire build myself, so mostly use the 2.2
> release. One of our systems leaves the field containing the type blank, be
> aware David, since we both receive messages from that sender.
>
>
>
>
>
> *Ian Vowles*
>
> *Integration Specialist, Metro North Integration Centre*
> *Metro North IT*
> Citilink Lobby 1, Level 3
>
> 153 Campbell St, Bowen Hills QLD 4006
>
> P: 07 3646 2557
> E: *Ian...@he... <Ian...@he...>*
> metronorth.health.qld.gov.au
>
>
> [image: Description: Description: Putting people first]
> <http://qheps.health.qld.gov.au/metronorth/html/email-signature.htm>
>
> [image: Values in Action]
>
> [image: Description: Description: Facebook]
> <http://www.facebook.com/metronorthhhs> [image: Description:
> Description: Twitter] <http://www.twitter.com/MetroNorthHHS> [image:
> Description: Description: LinkedIn]
> <http://www.linkedin.com/company/metro-north-hospital-and-health-service>
> follow us on social media
>
>
>
>
>
>
>
>
>
> *From:* Andrew Ring via Hl7api-devel <hl7...@li...>
> *Sent:* Thursday, 30 January 2020 4:30 AM
> *To:* David Bunzli <Dav...@he...>
> *Cc:* hl7...@li...
> *Subject:* Re: [HAPI-devel] Parse MSH from arbitrary message
>
>
>
> Hi David, thanks for the response here. I did end up coming to a solution,
> which looks like:
>
>
>
> /**
> * Parse an hl7 message and extract the header (MSH) segment.
> *
> * @param hl7Message The hl7 message to parse.
> * @return The parsed MSH segment, or null on error.
> */
> public static MSH getHeader(final String hl7Message) {
> if (Objects.isNull(hl7Message)) return null;
>
> try {
> final HapiContext context = new DefaultHapiContext();
> // Parse the message in whatever hl7 version it is declared to
> be
> // This will validate the message structure, throwing an
> exception if invalid
> context.getPipeParser().parse(hl7Message);
>
> // Convert message into most recent version format, since
> they're backwards compatible
> final CanonicalModelClassFactory modelClassFactory = new
> CanonicalModelClassFactory(CANONICAL_VERSION);
> context.setModelClassFactory(modelClassFactory);
> // We disable validation because deprecated fields appear to
> cause parsing errors when
> // up-converting messages
> context.setValidationContext(new NoValidation());
>
> final Message parsedMesssage =
> context.getPipeParser().parse(hl7Message);
> final MSH msh = (MSH) parsedMesssage.get("MSH");
> return msh;
> } catch (ClassCastException | HL7Exception ex) {
> LOG.warn("Unable to parse header from hl7 message:\n{}",
> forPrinting(hl7Message));
> return null;
> }
> }
>
>
>
> I don't love this, since it requires turning off the validation when
> up-versioning, but it appears to work on all test inputs I've attempted.
>
>
>
> ~Andrew
>
>
>
> On Tue, Jan 28, 2020 at 6:28 PM David Bunzli <
> Dav...@he...> wrote:
>
> Hi Andrew,
>
> Is your concern about casting related to performance? Because, in general,
> solutions should be provisioned for the work they have to do. If you need
> more processing grunt, its often better to tackle that before 'optimising'
> your code.
>
> Aside from casting the whole message, you can cast the segment [eg
> (pseudo-code) MSH msh = (MSH) Terser.getSegment("MSH")] to get a proper MSH
> object. But this option is still casting.
>
> Another option is treating the message as a String eg...
> protected static String getMsh10(String input) {
> int startOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 10);
> int lengthOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 11) -
> startOfMsh10;
> return StringUtils.mid(
> input
> , startOfMsh10
> , lengthOfMsh10
> );
> }
>
> But that option brings me back to the first point - 'optimising' by String
> manipulation is convoluted. It'd have been better to wear the costs of
> parsing and casting the message and enjoy the benefits of using HAPI.
>
> Hope this helps,
> David
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 23 Jan 2020 18:13:11 -0800
> From: Andrew Ring <and...@ni...>
> To: hl7...@li...
> Subject: [HAPI-devel] Parse MSH from arbitrary message
> Message-ID:
> <CAE...@ma...>
> Content-Type: text/plain; charset="utf-8"
>
> I'm receiving HL7 messages of any type, and want to examine the MSH
> segment before having to cast the message to a particular type. I can't
> seem to find a mechanism to do this. I can get individual MSH fields using
> a Terser, but I would prefer to use well typed structures. Even getting the
> MSH segment using Terser.getSegment() does not appear to be able to be
> converted into an MSH object. Can anyone help?
>
> Thanks,
> Andrew Ring
> -------------- next part --------------
> An HTML attachment was scrubbed...
>
> ------------------------------
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
>
> ------------------------------
>
> End of Hl7api-devel Digest, Vol 144, Issue 5
> ********************************************
>
>
>
>
>
> ********************************************************************************
>
> This email, including any attachments sent with it, is confidential and
> for the sole use of the intended recipient(s). This confidentiality is not
> waived or lost, if you receive it and you are not the intended
> recipient(s), or if it is transmitted/received in error.
>
> Any unauthorised use, alteration, disclosure, distribution or review of
> this email is strictly prohibited. The information contained in this email,
> including any attachment sent with it, may be subject to a statutory duty
> of confidentiality if it relates to health service matters.
>
> If you are not the intended recipient(s), or if you have received this
> email in error, you are asked to immediately notify the sender by telephone
> collect on Australia +61 1800 198 175 or by return email. You should also
> delete this email, and any copies, from your computer system network and
> destroy any hard copies produced.
>
> If not an intended recipient of this email, you must not copy, distribute
> or take any action(s) that relies on it; any form of disclosure,
> modification, distribution and/or publication of this email is also
> prohibited.
>
> Although Queensland Health takes all reasonable steps to ensure this email
> does not contain malicious software, Queensland Health does not accept
> responsibility for the consequences if any person's computer inadvertently
> suffers any disruption to services, loss of information, harm or is
> infected with a virus, other malicious computer programme or code that may
> occur as a consequence of receiving this email.
>
> Unless stated otherwise, this email represents only the views of the
> sender and not the views of the Queensland Government.
>
>
> **********************************************************************************
>
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
>
>
>
>
>
> ********************************************************************************
>
> This email, including any attachments sent with it, is confidential and
> for the sole use of the intended recipient(s). This confidentiality is not
> waived or lost, if you receive it and you are not the intended
> recipient(s), or if it is transmitted/received in error.
>
> Any unauthorised use, alteration, disclosure, distribution or review of
> this email is strictly prohibited. The information contained in this email,
> including any attachment sent with it, may be subject to a statutory
> duty of confidentiality if it relates to health service matters.
>
> If you are not the intended recipient(s), or if you have received this
> email in error, you are asked to immediately notify the sender by telephone
> collect on Australia +61 1800 198 175 or by return email. You should also
> delete this email, and any copies, from your computer system network and
> destroy any hard copies produced.
>
> If not an intended recipient of this email, you must not copy, distribute
> or take any action(s) that relies on it; any form of disclosure,
> modification, distribution and/or publication of this email is also
> prohibited.
>
> Although Queensland Health takes all reasonable steps to ensure this email
> does not contain malicious software, Queensland Health does not accept
> responsibility for the consequences if any person's computer inadvertently
> suffers any disruption to services, loss of information, harm or is
> infected with a virus, other malicious computer programme or code that may
> occur as a consequence of receiving this email.
>
> Unless stated otherwise, this email represents only the views of the
> sender and not the views of the Queensland Government.
>
>
> **********************************************************************************
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
|
|
From: Ian V. <Ian...@he...> - 2020-01-30 23:24:52
|
Would advise in favour of adding default and invalid Obx2Type settings, having just had a problem with messages containing bad OBX segments.
context.getPipeParser().getParserConfiguration().setDefaultObx2Type("ST");
context.getPipeParser().getParserConfiguration().setInvalidObx2Type("ST");
Watch out for MFNs if you get them. They have similar type assigning fields, which the HAPI 2.2 release seems to cope with, but the HAPI 2.3 library is strict about but lacks a configuration for correcting them. The code base has a fix for it, but there hasn’t been a release containing it. I’m not game to try to do the entire build myself, so mostly use the 2.2 release. One of our systems leaves the field containing the type blank, be aware David, since we both receive messages from that sender.
Ian Vowles
Integration Specialist, Metro North Integration Centre
Metro North IT
Citilink Lobby 1, Level 3
153 Campbell St, Bowen Hills QLD 4006
P: 07 3646 2557
E: Ian...@he...<mailto:Ian...@he...>
metronorth.health.qld.gov.au<https://metronorth.health.qld.gov.au/>
[Description: Description: Putting people first]<http://qheps.health.qld.gov.au/metronorth/html/email-signature.htm>
[Values in Action]
[Description: Description: Facebook]<http://www.facebook.com/metronorthhhs> [Description: Description: Twitter] <http://www.twitter.com/MetroNorthHHS> [Description: Description: LinkedIn] <http://www.linkedin.com/company/metro-north-hospital-and-health-service> follow us on social media
From: Andrew Ring via Hl7api-devel <hl7...@li...>
Sent: Thursday, 30 January 2020 4:30 AM
To: David Bunzli <Dav...@he...>
Cc: hl7...@li...
Subject: Re: [HAPI-devel] Parse MSH from arbitrary message
Hi David, thanks for the response here. I did end up coming to a solution, which looks like:
/**
* Parse an hl7 message and extract the header (MSH) segment.
*
* @param hl7Message The hl7 message to parse.
* @return The parsed MSH segment, or null on error.
*/
public static MSH getHeader(final String hl7Message) {
if (Objects.isNull(hl7Message)) return null;
try {
final HapiContext context = new DefaultHapiContext();
// Parse the message in whatever hl7 version it is declared to be
// This will validate the message structure, throwing an exception if invalid
context.getPipeParser().parse(hl7Message);
// Convert message into most recent version format, since they're backwards compatible
final CanonicalModelClassFactory modelClassFactory = new CanonicalModelClassFactory(CANONICAL_VERSION);
context.setModelClassFactory(modelClassFactory);
// We disable validation because deprecated fields appear to cause parsing errors when
// up-converting messages
context.setValidationContext(new NoValidation());
final Message parsedMesssage = context.getPipeParser().parse(hl7Message);
final MSH msh = (MSH) parsedMesssage.get("MSH");
return msh;
} catch (ClassCastException | HL7Exception ex) {
LOG.warn("Unable to parse header from hl7 message:\n{}", forPrinting(hl7Message));
return null;
}
}
I don't love this, since it requires turning off the validation when up-versioning, but it appears to work on all test inputs I've attempted.
~Andrew
On Tue, Jan 28, 2020 at 6:28 PM David Bunzli <Dav...@he...<mailto:Dav...@he...>> wrote:
Hi Andrew,
Is your concern about casting related to performance? Because, in general, solutions should be provisioned for the work they have to do. If you need more processing grunt, its often better to tackle that before 'optimising' your code.
Aside from casting the whole message, you can cast the segment [eg (pseudo-code) MSH msh = (MSH) Terser.getSegment("MSH")] to get a proper MSH object. But this option is still casting.
Another option is treating the message as a String eg...
protected static String getMsh10(String input) {
int startOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 10);
int lengthOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 11) - startOfMsh10;
return StringUtils.mid(
input
, startOfMsh10
, lengthOfMsh10
);
}
But that option brings me back to the first point - 'optimising' by String manipulation is convoluted. It'd have been better to wear the costs of parsing and casting the message and enjoy the benefits of using HAPI.
Hope this helps,
David
----------------------------------------------------------------------
Message: 1
Date: Thu, 23 Jan 2020 18:13:11 -0800
From: Andrew Ring <and...@ni...<mailto:and...@ni...>>
To: hl7...@li...<mailto:hl7...@li...>
Subject: [HAPI-devel] Parse MSH from arbitrary message
Message-ID:
<CAE...@ma...<mailto:Ge...@ma...>>
Content-Type: text/plain; charset="utf-8"
I'm receiving HL7 messages of any type, and want to examine the MSH segment before having to cast the message to a particular type. I can't seem to find a mechanism to do this. I can get individual MSH fields using a Terser, but I would prefer to use well typed structures. Even getting the MSH segment using Terser.getSegment() does not appear to be able to be converted into an MSH object. Can anyone help?
Thanks,
Andrew Ring
-------------- next part --------------
An HTML attachment was scrubbed...
------------------------------
------------------------------
Subject: Digest Footer
_______________________________________________
Hl7api-devel mailing list
Hl7...@li...<mailto:Hl7...@li...>
https://lists.sourceforge.net/lists/listinfo/hl7api-devel
------------------------------
End of Hl7api-devel Digest, Vol 144, Issue 5
********************************************
********************************************************************************
This email, including any attachments sent with it, is confidential and for the sole use of the intended recipient(s). This confidentiality is not waived or lost, if you receive it and you are not the intended recipient(s), or if it is transmitted/received in error.
Any unauthorised use, alteration, disclosure, distribution or review of this email is strictly prohibited. The information contained in this email, including any attachment sent with it, may be subject to a statutory duty of confidentiality if it relates to health service matters.
If you are not the intended recipient(s), or if you have received this email in error, you are asked to immediately notify the sender by telephone collect on Australia +61 1800 198 175 or by return email. You should also delete this email, and any copies, from your computer system network and destroy any hard copies produced.
If not an intended recipient of this email, you must not copy, distribute or take any action(s) that relies on it; any form of disclosure, modification, distribution and/or publication of this email is also prohibited.
Although Queensland Health takes all reasonable steps to ensure this email does not contain malicious software, Queensland Health does not accept responsibility for the consequences if any person's computer inadvertently suffers any disruption to services, loss of information, harm or is infected with a virus, other malicious computer programme or code that may occur as a consequence of receiving this email.
Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government.
**********************************************************************************
_______________________________________________
Hl7api-devel mailing list
Hl7...@li...<mailto:Hl7...@li...>
https://lists.sourceforge.net/lists/listinfo/hl7api-devel
********************************************************************************
This email, including any attachments sent with it, is confidential and for the sole use of the intended recipient(s). This confidentiality is not waived or lost, if you receive it and you are not the intended recipient(s), or if it is transmitted/received in error.
Any unauthorised use, alteration, disclosure, distribution or review of this email is strictly prohibited. The information contained in this email, including any attachment sent with it, may be subject to a statutory duty of confidentiality if it relates to health service matters.
If you are not the intended recipient(s), or if you have received this email in error, you are asked to immediately notify the sender by telephone collect on Australia +61 1800 198 175 or by return email. You should also delete this email, and any copies, from your computer system network and destroy any hard copies produced.
If not an intended recipient of this email, you must not copy, distribute or take any action(s) that relies on it; any form of disclosure, modification, distribution and/or publication of this email is also prohibited.
Although Queensland Health takes all reasonable steps to ensure this email does not contain malicious software, Queensland Health does not accept responsibility for the consequences if any person's computer inadvertently suffers any disruption to services, loss of information, harm or is infected with a virus, other malicious computer programme or code that may occur as a consequence of receiving this email.
Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government.
**********************************************************************************
|
|
From: Andrew R. <and...@ni...> - 2020-01-29 18:30:46
|
Hi David, thanks for the response here. I did end up coming to a solution,
which looks like:
/**
* Parse an hl7 message and extract the header (MSH) segment.
*
* @param hl7Message The hl7 message to parse.
* @return The parsed MSH segment, or null on error.
*/
public static MSH getHeader(final String hl7Message) {
if (Objects.isNull(hl7Message)) return null;
try {
final HapiContext context = new DefaultHapiContext();
// Parse the message in whatever hl7 version it is declared to
be
// This will validate the message structure, throwing an
exception if invalid
context.getPipeParser().parse(hl7Message);
// Convert message into most recent version format, since
they're backwards compatible
final CanonicalModelClassFactory modelClassFactory = new
CanonicalModelClassFactory(CANONICAL_VERSION);
context.setModelClassFactory(modelClassFactory);
// We disable validation because deprecated fields appear to
cause parsing errors when
// up-converting messages
context.setValidationContext(new NoValidation());
final Message parsedMesssage =
context.getPipeParser().parse(hl7Message);
final MSH msh = (MSH) parsedMesssage.get("MSH");
return msh;
} catch (ClassCastException | HL7Exception ex) {
LOG.warn("Unable to parse header from hl7 message:\n{}",
forPrinting(hl7Message));
return null;
}
}
I don't love this, since it requires turning off the validation when
up-versioning, but it appears to work on all test inputs I've attempted.
~Andrew
On Tue, Jan 28, 2020 at 6:28 PM David Bunzli <Dav...@he...>
wrote:
> Hi Andrew,
>
> Is your concern about casting related to performance? Because, in general,
> solutions should be provisioned for the work they have to do. If you need
> more processing grunt, its often better to tackle that before 'optimising'
> your code.
>
> Aside from casting the whole message, you can cast the segment [eg
> (pseudo-code) MSH msh = (MSH) Terser.getSegment("MSH")] to get a proper MSH
> object. But this option is still casting.
>
> Another option is treating the message as a String eg...
> protected static String getMsh10(String input) {
> int startOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 10);
> int lengthOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 11) -
> startOfMsh10;
> return StringUtils.mid(
> input
> , startOfMsh10
> , lengthOfMsh10
> );
> }
>
> But that option brings me back to the first point - 'optimising' by String
> manipulation is convoluted. It'd have been better to wear the costs of
> parsing and casting the message and enjoy the benefits of using HAPI.
>
> Hope this helps,
> David
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 23 Jan 2020 18:13:11 -0800
> From: Andrew Ring <and...@ni...>
> To: hl7...@li...
> Subject: [HAPI-devel] Parse MSH from arbitrary message
> Message-ID:
> <CAE...@ma...>
> Content-Type: text/plain; charset="utf-8"
>
> I'm receiving HL7 messages of any type, and want to examine the MSH
> segment before having to cast the message to a particular type. I can't
> seem to find a mechanism to do this. I can get individual MSH fields using
> a Terser, but I would prefer to use well typed structures. Even getting the
> MSH segment using Terser.getSegment() does not appear to be able to be
> converted into an MSH object. Can anyone help?
>
> Thanks,
> Andrew Ring
> -------------- next part --------------
> An HTML attachment was scrubbed...
>
> ------------------------------
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
>
> ------------------------------
>
> End of Hl7api-devel Digest, Vol 144, Issue 5
> ********************************************
>
>
>
>
>
> ********************************************************************************
>
> This email, including any attachments sent with it, is confidential and
> for the sole use of the intended recipient(s). This confidentiality is not
> waived or lost, if you receive it and you are not the intended
> recipient(s), or if it is transmitted/received in error.
>
> Any unauthorised use, alteration, disclosure, distribution or review of
> this email is strictly prohibited. The information contained in this email,
> including any attachment sent with it, may be subject to a statutory duty
> of confidentiality if it relates to health service matters.
>
> If you are not the intended recipient(s), or if you have received this
> email in error, you are asked to immediately notify the sender by telephone
> collect on Australia +61 1800 198 175 or by return email. You should also
> delete this email, and any copies, from your computer system network and
> destroy any hard copies produced.
>
> If not an intended recipient of this email, you must not copy, distribute
> or take any action(s) that relies on it; any form of disclosure,
> modification, distribution and/or publication of this email is also
> prohibited.
>
> Although Queensland Health takes all reasonable steps to ensure this email
> does not contain malicious software, Queensland Health does not accept
> responsibility for the consequences if any person's computer inadvertently
> suffers any disruption to services, loss of information, harm or is
> infected with a virus, other malicious computer programme or code that may
> occur as a consequence of receiving this email.
>
> Unless stated otherwise, this email represents only the views of the
> sender and not the views of the Queensland Government.
>
>
> **********************************************************************************
>
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7...@li...
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
|
|
From: David B. <Dav...@he...> - 2020-01-29 02:28:16
|
Hi Andrew,
Is your concern about casting related to performance? Because, in general, solutions should be provisioned for the work they have to do. If you need more processing grunt, its often better to tackle that before 'optimising' your code.
Aside from casting the whole message, you can cast the segment [eg (pseudo-code) MSH msh = (MSH) Terser.getSegment("MSH")] to get a proper MSH object. But this option is still casting.
Another option is treating the message as a String eg...
protected static String getMsh10(String input) {
int startOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 10);
int lengthOfMsh10 = StringUtils.ordinalIndexOf(input, "|", 11) - startOfMsh10;
return StringUtils.mid(
input
, startOfMsh10
, lengthOfMsh10
);
}
But that option brings me back to the first point - 'optimising' by String manipulation is convoluted. It'd have been better to wear the costs of parsing and casting the message and enjoy the benefits of using HAPI.
Hope this helps,
David
----------------------------------------------------------------------
Message: 1
Date: Thu, 23 Jan 2020 18:13:11 -0800
From: Andrew Ring <and...@ni...>
To: hl7...@li...
Subject: [HAPI-devel] Parse MSH from arbitrary message
Message-ID:
<CAE...@ma...>
Content-Type: text/plain; charset="utf-8"
I'm receiving HL7 messages of any type, and want to examine the MSH segment before having to cast the message to a particular type. I can't seem to find a mechanism to do this. I can get individual MSH fields using a Terser, but I would prefer to use well typed structures. Even getting the MSH segment using Terser.getSegment() does not appear to be able to be converted into an MSH object. Can anyone help?
Thanks,
Andrew Ring
-------------- next part --------------
An HTML attachment was scrubbed...
------------------------------
------------------------------
Subject: Digest Footer
_______________________________________________
Hl7api-devel mailing list
Hl7...@li...
https://lists.sourceforge.net/lists/listinfo/hl7api-devel
------------------------------
End of Hl7api-devel Digest, Vol 144, Issue 5
********************************************
********************************************************************************
This email, including any attachments sent with it, is confidential and for the sole use of the intended recipient(s). This confidentiality is not waived or lost, if you receive it and you are not the intended recipient(s), or if it is transmitted/received in error.
Any unauthorised use, alteration, disclosure, distribution or review of this email is strictly prohibited. The information contained in this email, including any attachment sent with it, may be subject to a statutory duty of confidentiality if it relates to health service matters.
If you are not the intended recipient(s), or if you have received this email in error, you are asked to immediately notify the sender by telephone collect on Australia +61 1800 198 175 or by return email. You should also delete this email, and any copies, from your computer system network and destroy any hard copies produced.
If not an intended recipient of this email, you must not copy, distribute or take any action(s) that relies on it; any form of disclosure, modification, distribution and/or publication of this email is also prohibited.
Although Queensland Health takes all reasonable steps to ensure this email does not contain malicious software, Queensland Health does not accept responsibility for the consequences if any person's computer inadvertently suffers any disruption to services, loss of information, harm or is infected with a virus, other malicious computer programme or code that may occur as a consequence of receiving this email.
Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government.
**********************************************************************************
|
|
From: Andrew R. <and...@ni...> - 2020-01-24 02:14:04
|
I'm receiving HL7 messages of any type, and want to examine the MSH segment before having to cast the message to a particular type. I can't seem to find a mechanism to do this. I can get individual MSH fields using a Terser, but I would prefer to use well typed structures. Even getting the MSH segment using Terser.getSegment() does not appear to be able to be converted into an MSH object. Can anyone help? Thanks, Andrew Ring |
|
From: Andrew R. <and...@ni...> - 2020-01-16 16:04:42
|
I did some further testing, and parsing ACK messages generated by HAPI, dcm4che, and 7Edit all works correctly. I haven't dug into standards enough to determine if the HL7 Soup ACK is well formed within the standard, or not, as yet. On Wed, Jan 15, 2020, 9:01 PM Ian Vowles <Ian...@he...> wrote: > I think having the 3rd component in MSH-9 makes the parse create the > message type specified there. > > > > Is it possible to omit the MDM_T01 in MSH-9? > > > > > > *Ian Vowles* > > *Integration Specialist, Metro North Integration Centre* > *Metro North IT* > Citilink Lobby 1, Level 3 > > 153 Campbell St, Bowen Hills QLD 4006 > > P: 07 3646 2557 > E: *Ian...@he... <Ian...@he...>* > metronorth.health.qld.gov.au > > > [image: Description: Description: Putting people first] > <http://qheps.health.qld.gov.au/metronorth/html/email-signature.htm> > > [image: Values in Action] > > [image: Description: Description: Facebook] > <http://www.facebook.com/metronorthhhs> [image: Description: > Description: Twitter] <http://www.twitter.com/MetroNorthHHS> [image: > Description: Description: LinkedIn] > <http://www.linkedin.com/company/metro-north-hospital-and-health-service> > follow us on social media > > > > > > > > > > *From:* Andrew Ring via Hl7api-devel <hl7...@li...> > *Sent:* Wednesday, 15 January 2020 3:28 PM > *To:* hl7...@li... > *Subject:* [HAPI-devel] Error parsing ACK message > > > > I'm new to hapi, and am trying to check the ACK response from having sent > a message. The message is received properly, and the response appears well > formed, however when I attempt to parse the ACK message, it's being > interpreted as the type of the original message. (NB: The original message, > as well as the response, are generated by HL7 Soup) > > > > final Message response = initiator.sendAndReceive(message); > > > > // Convert message into most recent version format, since they're backwards > > // compatible > > final HapiContext versionedContext = new DefaultHapiContext(); > > final CanonicalModelClassFactory modelClassFactory = new > CanonicalModelClassFactory("2.8.1"); > > versionedContext.setModelClassFactory(modelClassFactory); > > final Message versionedResponse = > versionedContext.getPipeParser().parse(response.toString()); > > if (!(versionedResponse instanceof ACK)) { > > final String errorMessage = String.format("Response invalid message > type;\n expected %s\n found %s:\n%s", > > ACK.class.getName(), > versionedResponse.getClass().getName(), HL7Utils.forPrinting(versionedResponse)); > > recordSendAttempt(hl7DestinationInfo, false, errorMessage); > > } > > > > results in > > > > Error sending hl7 message with id '8': Response invalid message type; > > expected ca.uhn.hl7v2.model.v281.message.ACK > > found ca.uhn.hl7v2.model.v281.message.MDM_T01: > > > MSH|^~\&|HL7Soup|Instance2|HL7Soup|Instance1|200911021022||ACK^T01^MDM_T01|64322|P|2.5.1 > > MSA|AA|64322 > > > > Can anyone point out what I'm doing wrong? > > > > Thanks, > > Andrew > > > > > > > ******************************************************************************** > > This email, including any attachments sent with it, is confidential and > for the sole use of the intended recipient(s). This confidentiality is not > waived or lost, if you receive it and you are not the intended > recipient(s), or if it is transmitted/received in error. > > Any unauthorised use, alteration, disclosure, distribution or review of > this email is strictly prohibited. The information contained in this email, > including any attachment sent with it, may be subject to a statutory > duty of confidentiality if it relates to health service matters. > > If you are not the intended recipient(s), or if you have received this > email in error, you are asked to immediately notify the sender by telephone > collect on Australia +61 1800 198 175 or by return email. You should also > delete this email, and any copies, from your computer system network and > destroy any hard copies produced. > > If not an intended recipient of this email, you must not copy, distribute > or take any action(s) that relies on it; any form of disclosure, > modification, distribution and/or publication of this email is also > prohibited. > > Although Queensland Health takes all reasonable steps to ensure this email > does not contain malicious software, Queensland Health does not accept > responsibility for the consequences if any person's computer inadvertently > suffers any disruption to services, loss of information, harm or is > infected with a virus, other malicious computer programme or code that may > occur as a consequence of receiving this email. > > Unless stated otherwise, this email represents only the views of the > sender and not the views of the Queensland Government. > > > ********************************************************************************** > _______________________________________________ > Hl7api-devel mailing list > Hl7...@li... > https://lists.sourceforge.net/lists/listinfo/hl7api-devel > |
|
From: Ian V. <Ian...@he...> - 2020-01-16 05:01:18
|
I think having the 3rd component in MSH-9 makes the parse create the message type specified there. Is it possible to omit the MDM_T01 in MSH-9? Ian Vowles Integration Specialist, Metro North Integration Centre Metro North IT Citilink Lobby 1, Level 3 153 Campbell St, Bowen Hills QLD 4006 P: 07 3646 2557 E: Ian...@he...<mailto:Ian...@he...> metronorth.health.qld.gov.au<https://metronorth.health.qld.gov.au/> [Description: Description: Putting people first]<http://qheps.health.qld.gov.au/metronorth/html/email-signature.htm> [Values in Action] [Description: Description: Facebook]<http://www.facebook.com/metronorthhhs> [Description: Description: Twitter] <http://www.twitter.com/MetroNorthHHS> [Description: Description: LinkedIn] <http://www.linkedin.com/company/metro-north-hospital-and-health-service> follow us on social media From: Andrew Ring via Hl7api-devel <hl7...@li...> Sent: Wednesday, 15 January 2020 3:28 PM To: hl7...@li... Subject: [HAPI-devel] Error parsing ACK message I'm new to hapi, and am trying to check the ACK response from having sent a message. The message is received properly, and the response appears well formed, however when I attempt to parse the ACK message, it's being interpreted as the type of the original message. (NB: The original message, as well as the response, are generated by HL7 Soup) final Message response = initiator.sendAndReceive(message); // Convert message into most recent version format, since they're backwards // compatible final HapiContext versionedContext = new DefaultHapiContext(); final CanonicalModelClassFactory modelClassFactory = new CanonicalModelClassFactory("2.8.1"); versionedContext.setModelClassFactory(modelClassFactory); final Message versionedResponse = versionedContext.getPipeParser().parse(response.toString()); if (!(versionedResponse instanceof ACK)) { final String errorMessage = String.format("Response invalid message type;\n expected %s\n found %s:\n%s", ACK.class.getName(), versionedResponse.getClass().getName(), HL7Utils.forPrinting(versionedResponse)); recordSendAttempt(hl7DestinationInfo, false, errorMessage); } results in Error sending hl7 message with id '8': Response invalid message type; expected ca.uhn.hl7v2.model.v281.message.ACK found ca.uhn.hl7v2.model.v281.message.MDM_T01: MSH|^~\&|HL7Soup|Instance2|HL7Soup|Instance1|200911021022||ACK^T01^MDM_T01|64322|P|2.5.1 MSA|AA|64322 Can anyone point out what I'm doing wrong? Thanks, Andrew ******************************************************************************** This email, including any attachments sent with it, is confidential and for the sole use of the intended recipient(s). This confidentiality is not waived or lost, if you receive it and you are not the intended recipient(s), or if it is transmitted/received in error. Any unauthorised use, alteration, disclosure, distribution or review of this email is strictly prohibited. The information contained in this email, including any attachment sent with it, may be subject to a statutory duty of confidentiality if it relates to health service matters. If you are not the intended recipient(s), or if you have received this email in error, you are asked to immediately notify the sender by telephone collect on Australia +61 1800 198 175 or by return email. You should also delete this email, and any copies, from your computer system network and destroy any hard copies produced. If not an intended recipient of this email, you must not copy, distribute or take any action(s) that relies on it; any form of disclosure, modification, distribution and/or publication of this email is also prohibited. Although Queensland Health takes all reasonable steps to ensure this email does not contain malicious software, Queensland Health does not accept responsibility for the consequences if any person's computer inadvertently suffers any disruption to services, loss of information, harm or is infected with a virus, other malicious computer programme or code that may occur as a consequence of receiving this email. Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government. ********************************************************************************** |