IPF tutorial on Spring Boot

417 views
Skip to first unread message

Tomasz Judycki

unread,
Apr 3, 2020, 7:28:07 PM4/3/20
to ipf-user
Hi!

tl;dr Lets prepare a complete IPF tutorial on Spring Boot

Looking for a document repository that supports IHE XDS profile I’ve found IPF. I’ve checked tutorials and have XDS server up and running within minutes. This is VERY impressive!

However what I really need is a regular Spring Boot application that I could pack to JAR, WAR or simply run on build-in Tomcat. Then combine with my other software, add database support etc. For me it’s really difficult to figure out how to do it. I browse through documentation, I see Spring Boot starters but still can’t start. I guess I’m not alone with such problem.

Lets prepare a complete, working tutorial example based on Spring Boot. It would help getting started:
mvn spring-boot:run - to have it running on build-in Tomcat
mvn install - to build executable JAR
etc.

I would love to take part in that. I know Java, Maven, SpringBoot, Hibernate, PostgreSQL, Tomcat etc. but not Groovy. If we manage to have XDS demo repository I could also add database support: rewrite DataStore in Java using Hibernate + PostgreSQL.

What do you think?

Regards,

Thomas

Tomasz Judycki

unread,
Apr 4, 2020, 8:25:28 PM4/4/20
to ipf-user

Hi again!


I’m trying to start but need some directions. Find attached project, after unpacking change directory to tutorialxds and execute:

mvn spring-boot:run


In pom.xml there is ipf-xds-spring-boot-starter, Tomcat is running, Camel is running.


How can I use examples from "XDS tutorial" https://github.com/oehf/ipf/tree/master/tutorials/xds ? Where shall I put groovy files and how to define a configuration to make it running?


Regards,


Thomas

tutorialxds.zip

Christian Ohr

unread,
Apr 7, 2020, 6:09:22 AM4/7/20
to ipf-...@googlegroups.com
Yes, it would definitely cool to have a Spring Boot-based update on the XDS tutorial - which in fact more an example than a tutorial.
This example has been written a very long time ago, basically as a proof on concept for various things (XDS classes, Camel Groovy extensions, ...). 
Particularly this was not intended to be "production-ready" in any way.
My enthusiasm for Groovy has cooled down a bit - personally I'm using it mainly for HL7v2 DSL and for XML parsing and rendering. 
So there is definitely no need to implement an Spring Boot XDS example in Groovy, especially if you're not familiar with it!

We're also in the process of making a JDK11+ version of IPF public (IPF 4, basically a milestone for testing) - it might also be a good thing to give this a test drive!

best regards
Christian


--
You received this message because you are subscribed to the Google Groups "ipf-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/a9b1c0c1-ea8d-48a9-8e73-2c17c53e5c0b%40googlegroups.com.

Quentin

unread,
Apr 7, 2020, 12:32:03 PM4/7/20
to ipf-user
Hi,

I also had trouble getting started with IPF and Spring Boot. I've created a simple app, Spring Boot-based and without Groovy that can run either as a JAR or a WAR.

I hope this will help you.

Kind regards,
Quentin
To unsubscribe from this group and stop receiving emails from it, send an email to ipf-...@googlegroups.com.

Jens Villadsen

unread,
Apr 18, 2020, 5:06:45 PM4/18/20
to ipf-user
It helped me ;)

Oliver Egger

unread,
Apr 19, 2020, 3:48:25 PM4/19/20
to ipf-...@googlegroups.com
Hi Jens and Quentin and ipf-users

the world is small :-)

Has somebody worked on a pirm (pixm) to pixv3 or mhd to xds example yet? i have quentins sample adapted to use it within a hapi environment and ipf xds consumer but
I need to figure out how to best marry hapi-fhir - ipf directly for pixm, mhd, so any tips or ideas appreciated! The project I'm working on will be open source.

Best regards,
Oliver

mobile: +41765795005
twitter: @oliveregger

ahdis ag
c/o The Hub Zürich Association
Sihlquai 131
8005 Zürich
Switzerland


To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/98422fbb-2ca6-48f3-bae6-a562787dd76e%40googlegroups.com.

Jens Villadsen

unread,
Apr 19, 2020, 4:06:32 PM4/19/20
to ipf-user
Very small indeed ;)

I've looked for the MHD to XDS before without luck, but that was about 2 years ago.


On Sunday, April 19, 2020 at 9:48:25 PM UTC+2, Oliver Egger wrote:
Hi Jens and Quentin and ipf-users

the world is small :-)

Has somebody worked on a pirm (pixm) to pixv3 or mhd to xds example yet? i have quentins sample adapted to use it within a hapi environment and ipf xds consumer but
I need to figure out how to best marry hapi-fhir - ipf directly for pixm, mhd, so any tips or ideas appreciated! The project I'm working on will be open source.

Best regards,
Oliver

Tomasz Judycki

unread,
Apr 19, 2020, 5:40:12 PM4/19/20
to ipf-user
Hi!

First of all thanks for answers and support, both here and off-line. I’ve got my project up and running, no Groovy, just Java + Spring-boot.

I could prepare and publish a first draft of XDS tutorial, very simple and basic. Is it worth waiting for JDK11/IPF4?

Regards,

Thomas
To unsubscribe from this group and stop receiving emails from it, send an email to ipf-...@googlegroups.com.

druidking

unread,
Apr 19, 2020, 7:01:37 PM4/19/20
to ipf-user
I am using Quentin's project. That Tutorial is helping me implement XCDP.  Thanks again Quentin! Should be added into the tutorial list.
Message has been deleted

druidking

unread,
Apr 19, 2020, 7:12:27 PM4/19/20
to ipf-user
I would love to see this project as well.

Jens Villadsen

unread,
Apr 20, 2020, 3:06:29 AM4/20/20
to ipf-user
When is IPF4 scheduled for?

Christian Ohr

unread,
Apr 20, 2020, 3:45:44 AM4/20/20
to ipf-...@googlegroups.com
Hi Jens,
please don't hijack threads :-)

There's no fixed release schedule - yet. 
However, we recently moved the IPF 4 development over to master and probably we will make a milestone soon.

hope this helps
Christian





To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/7e852041-fe9c-4f70-882d-a9bedece45c0%40googlegroups.com.

Jens Villadsen

unread,
Apr 20, 2020, 5:55:28 AM4/20/20
to ipf-user
sorry - no hijacking intended

Oliver Egger

unread,
Apr 30, 2020, 5:46:16 PM4/30/20
to ipf-...@googlegroups.com
Hello ipf-users

Built upon Quentins ipf-example and IPF fhir-tutorial I have a first preliminary ipf hapi-fhir springboot mock

I needed to add @ComponentScan to get the routes defined in pixpdq work also in a spring book environment.

If you have any feedback do not hesitate to contact me.

Best regards
Oliver

mobile: +41765795005
twitter: @oliveregger

ahdis ag
c/o The Hub Zürich Association
Sihlquai 131
8005 Zürich
Switzerland

Tomasz Judycki

unread,
May 2, 2020, 6:25:18 PM5/2/20
to ipf-user
Hello!

Now my turn :-) I’ve prepared a first version of XDS example https://github.com/tjudycki/xds-example  with instruction how to run and test it.

I’m trying to start possibly small tutorial:
- XDS ITI-41 to provide and register documents
- XDS ITI-18 to query and retrieve documents

It seems that I’m still not good enough in IHE and/or IPF. I’ve got some problems and can’t go to:

1. I can't create an ITI18 answer that would pass iti18ResponseValidator(). Can anyone uncomment this validation in XdsRouteBuilder and modify Iti18Processor to prepare proper answer?

2. Look at Iti18Processor - is it proper way of returning documents? Shall we use MTOM instead of base64 encoding? How to change it?

3. I can't prepare proper request in SoapUI for Provide'n'register DocumentSet that would contain a document. I’ve checked examples from https://wiki.ihe.net/index.php/XDS.b_Implementation#More_on_MTOM_vs_MTOM.2FXOP and https://wiki.ihe.net/index.php/XDS.b_Implementation#Example_Provide_and_Register_Document_Set-b_transaction with no effect.

Could you please help me go on?

To make this tutorial more complete I would like to implement:
- PIX ITI8 Patient Identity Feed to add/update patient data
- PIX ITI8 PIX Query to query for patient

Then it would be nice to add BPPC for patient privacy and ATNA to check it.

Meanwhile I could add database access with basic structure to support storage for patients and documents.

I will also add instruction how to run this project as executable JAR and how to build a WAR.  

Regards,

Thomas

Quentin

unread,
May 3, 2020, 4:58:27 AM5/3/20
to ipf-user
Hi Tomasz,

1. The validator error message tells you what's wrong, by example: "Slot contains incorrect amount of values. Slot = sourcePatientId, allowed = [ 1-  1], Was =    0".
In your ITI-18 processor, you're missing a few mandatory attributes: sourcePatientId, entryUUID, classCode, typeCode, objectType, practiceSettingCode and healthcareFacilityTypeCode. Section 4.3.2.1 of IHE ITI TF-3 is a good starting point to list the requirements on attributes. To activate the validator, you also have to fix the following point.

2. You can't return the actual document content in an ITI-18 response, you must implement the ITI-43 transaction for that. MTOM is also already enabled but I'm not sure what its trigger is (ITI-43 response or large document?).

3. Does it work with this example? ftp://ftp.ihe.net/TF_Implementation_Material/ITI/examples/XDS.b/

Kind regards,
Quentin

Dmytro Rud

unread,
May 3, 2020, 5:28:31 AM5/3/20
to ipf-...@googlegroups.com
Hi Tomasz

Just an addendum to Quentin's response: If you really need to query document metadata and contents in the same call, look at ITI-63 (Cross-Community Fetch).

And MTOM is always activated for ITI-43, independently from the document size.

Best regards
Dmytro


To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/cbe9c24f-1019-4568-a585-3268372888de%40googlegroups.com.

Tomasz Judycki

unread,
May 3, 2020, 10:38:52 AM5/3/20
to ipf-user
Quentin & Dmytro, thanks for your help!

1 &2. I’ve tried to check every error message and correct my code but it seems that adding a document content was the real problem. I will try to implement ITI-43.

"OID contains invalid characters: 3670984664"
So I’ve modified "3670984664" to "1.3.4.5.2" (i.e. anything that looks like OID) and then:
"Unsupported association type"
I’ve removed Association node and finally got first document! :-)

Regards,

Thomas


W dniu niedziela, 3 maja 2020 11:28:31 UTC+2 użytkownik Dmytro Rud napisał:
Hi Tomasz

Just an addendum to Quentin's response: If you really need to query document metadata and contents in the same call, look at ITI-63 (Cross-Community Fetch).

And MTOM is always activated for ITI-43, independently from the document size.

Best regards
Dmytro


Tomasz Judycki

unread,
May 3, 2020, 7:06:09 PM5/3/20
to ipf-user

Hi again!

 

Work goes on, I’ve implemented ITI-43 and prepared sample requests with attachments (MTOM) and inline (base64). I’ll clean up my code, update description and publish it soon.

 

However I’ve got a question concerning possible next step. To prepare a semi-complete service for document repository we need also patient data. Is PIX not supported on SOAP? If not then what is the best transport/message to have both XDS and PIX?

 

Regards,

 

Thomas


W dniu niedziela, 3 maja 2020 11:28:31 UTC+2 użytkownik Dmytro Rud napisał:
Hi Tomasz

Just an addendum to Quentin's response: If you really need to query document metadata and contents in the same call, look at ITI-63 (Cross-Community Fetch).

And MTOM is always activated for ITI-43, independently from the document size.

Best regards
Dmytro


Nimish Telang

unread,
May 3, 2020, 7:15:13 PM5/3/20
to ipf-...@googlegroups.com

Hi all,

 

This is a great start. When we started with XDS/XCA we used the groovy ones in here: https://github.com/oehf/ipf/tree/master/tutorials/xds

 

You can see a full implementation of a document registry as well.

 

XCPD, which mostly corresponds to PIX, is not there, and you have to generate your own response body from xml – so groovy makes a lot more sense than java unless you can shove in types via jaxb or something.

 

Nimish

To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/e4ed7c9f-6058-48ec-a7ea-65adae4f7ba8%40googlegroups.com.

Tomasz Judycki

unread,
May 3, 2020, 7:59:42 PM5/3/20
to ipf-user
I don’t know Groovy. I’d rather deal with jaxb then learn Groovy.

I see that "ITI-44 Patient Identity Feed v3" and "ITI-45 PIX Query v3" are implemented on SOAP. May be it would be a better way. Does anybody has a working example?

Regards,

Thomas

Dmytro Rud

unread,
May 3, 2020, 9:25:16 PM5/3/20
to ipf-...@googlegroups.com
Hello Thomasz

IPF supports PIX/PDQ in all flavours -- HL7 v2 (ITI-8, 9, 21), HL7 v3 (ITI-44, 45, 47) and FHIR (ITI-83, 78).

Specially for HL7 v3: IPF does not contain any model classes for the messages, you have to provide the request as a String and will receive the response as a String.  Which technology do you use for constructing and parsing the messages (JAXB, EMF, Apache Velocity, XSLT, ...) -- is your choice.  We in IPF team use Groovy XML builder and slurper (https://groovy-lang.org/processing-xml.html), see for example unit tests and the classes in https://github.com/oehf/ipf/tree/master/commons/ihe/hl7v3/src/main/groovy/org/openehealth/ipf/commons/ihe/hl7v3/translation.

Best regards
Dmytro



To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/b319b287-4ecf-4097-8c82-50762b277e7b%40googlegroups.com.

druidking

unread,
May 6, 2020, 7:41:51 PM5/6/20
to ipf-user
Hi Tomasz,

   I followed an approach on another post I saw in here and downloaded the CONNECT lib off github and use that. Not sure if it will work for you but the idea is out there.

Tomasz Judycki

unread,
May 6, 2020, 7:54:33 PM5/6/20
to ipf-user
Do you mean https://github.com/nextgenhealthcare/connect ? This is former Mirth. Before I switch to another toolkit I will give a chance to IPF :-)

Tomasz Judycki

unread,
May 6, 2020, 7:56:15 PM5/6/20
to ipf-user

I’ve just published new version of tutorial https://github.com/tjudycki/xds-example that supports:

- ITI-41 Provide and Register

- ITI-18 Stored Query

- ITI-43 Retrieve

I’ve prepared a set of examples for testing.

 

Still don’t know how to start with PIX but with enormous help from all of you I will manage that :-)

 

Meanwhile I could add something that I’m familiar with. Would you like database support (JPA/Hibernate/PostgreSQL) with simple repository to store document entries and patient data?

 

Regards,

 

Thomas

druidking

unread,
May 6, 2020, 9:23:08 PM5/6/20
to ipf-user
I am working on ITI-55, ITI-38 and ITI-39

I tore apart and using some code from: https://github.com/sirrinki/CONNECT-Legacy/tree/9b3b820bd151be403ba5e165dbf560061ccc5d6f

there is a newer release as well: https://github.com/CONNECT-Solution/CONNECT

But it has java/jaxb usage. I am not fluent in groovy so I went more java route.

druidking

unread,
May 6, 2020, 9:24:51 PM5/6/20
to ipf-user
No, but I do use this to do some testing, out side of SOAP UI though acting like a client calling IPF with the full XML call in a destination. Added the CONNECT links in the other post. 

Tomasz Judycki

unread,
May 7, 2020, 6:51:46 AM5/7/20
to ipf-user
Are you able to prepare a client application to test my project? It would be nice to make testing from pure Java, not via SoapUI. It would be also very helpful for a software vendors who need to implement IHE client in their products. 

Tomasz Judycki

unread,
Jun 7, 2020, 11:48:20 AM6/7/20
to ipf-user
Hi Olivier!

Have you managed to add @ComponentScan to IPF/SpringBoot? Will you, please, share your solution?

Regards,

Thomas


W dniu czwartek, 30 kwietnia 2020 23:46:16 UTC+2 użytkownik Oliver Egger napisał:
Hello ipf-users

Built upon Quentins ipf-example and IPF fhir-tutorial I have a first preliminary ipf hapi-fhir springboot mock

I needed to add @ComponentScan to get the routes defined in pixpdq work also in a spring book environment.

If you have any feedback do not hesitate to contact me.

Best regards
Oliver

twitter: @oliveregger

ahdis ag
c/o The Hub Zürich Association
Sihlquai 131
8005 Zürich
Switzerland
On Sun, 19 Apr 2020 at 21:45, Oliver Egger <olive...@ahdis.ch> wrote:
Hi Jens and Quentin and ipf-users

the world is small :-)

Has somebody worked on a pirm (pixm) to pixv3 or mhd to xds example yet? i have quentins sample adapted to use it within a hapi environment and ipf xds consumer but
I need to figure out how to best marry hapi-fhir - ipf directly for pixm, mhd, so any tips or ideas appreciated! The project I'm working on will be open source.

Best regards,
Oliver

Tomasz Judycki

unread,
Jun 7, 2020, 12:36:03 PM6/7/20
to ipf-user
Sorry... There is a regular @SpringBootApplication class so it's enough to add @ComponentScan there.

Oliver Egger

unread,
Jun 8, 2020, 7:11:35 AM6/8/20
to ipf-...@googlegroups.com
Hi Tomasz

and @ComponentScan(basePackages={"org.openehealth.ipf","ch.bfh.ti.i4mi.mag"}) is added directly below the SpringBootApplication annotation.

Best regards,
Oliver

_____________________________________________
01.07.2020 FHIR-Workshop und hands-on: online edition
_____________________________________________

ahdis ag
c/o The Hub Zürich Association
Sihlquai 131
8005 Zürich
Switzerland
To unsubscribe from this group and stop receiving emails from it, send an email to ipf-user+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ipf-user/a75f739a-589c-4a8b-ad0f-d0a929314b6fo%40googlegroups.com.

lijue zhu

unread,
Apr 13, 2021, 8:38:18 AM4/13/21
to ipf-user
hi  Oliveregger
      I am a newcomer in hl7v3, ipf, camel, I found the MobileAccessGateway you wrote on github, and it has been deployed locally. But I don't know how to access MobileAccessGateway.
      my question is :  What is the requested URL address?
      My local environment is mac + minikube + docker+jdk11, the following is my running effect, and related logs
ccc.jpg
      The following is the information after executing minikube service mobile-access-gateway-service on the terminal
aaa.jpg

But we visit http://127.0.0.1:52001 to report Whitelabel Error Page and got 404

bbb.jpg

Oliver Egger

unread,
Apr 16, 2021, 9:18:20 AM4/16/21
to ipf-...@googlegroups.com
hi  Oliveregger
      I am a newcomer in hl7v3, ipf, camel, I found the MobileAccessGateway you wrote on github, and it has been deployed locally. But I don't know how to access MobileAccessGateway.
      my question is :  What is the requested URL address?

The base address of the fhir server endpoint is


eg, getting the capability statement would be:


best regards,
Olvier

Reply all
Reply to author
Forward
0 new messages