GithubHelp home page GithubHelp logo

oehf / ipf Goto Github PK

View Code? Open in Web Editor NEW
167.0 40.0 64.0 56.01 MB

Open eHealth Integration Platform

Home Page: http://oehf.github.io/ipf-docs

License: Apache License 2.0

Groovy 5.06% Java 92.23% Shell 0.01% XSLT 2.24% HTML 0.05% XQuery 0.06% Batchfile 0.01% Kotlin 0.35%
ehealth ihe-iti hl7 camel fhir java xds

ipf's Introduction

Open eHealth Integration Platform

Build Status Maven Central

IPF Overview

The eHealth Integration Framework (IPF) is an extension of the Apache Camel routing and mediation engine and comes with comprehensive support for message processing and connecting information systems in the healthcare sector. It is available under the Apache License version 2.0.

IPF focuses on a domain-specific language (DSL) to implement Enterprise Integration Patterns (EIPs) in integration solutions. IPF is based on the Java and Groovy programming languages for application development and for designing project-specific DSLs.

IPF provides highl-level building blocks for implementing IHE profiles such as XDS, PIX, PDQ or XCPD. Other supported standards are HL7v2 and HL7v3 (CDA and CCD) for which IPF provides domain-specific languages (DSLs) for creation, parsing, rendering, navigation and modification.

Documentation

The IPF documentation is available via Github Pages. This is a revamp of the existing documentation that is still available here, with some content yet to be written.

There's also a somewhat outdated Introductory article.

Mailing Lists

ipf's People

Contributors

4effo avatar clayseag avatar davidbuccola avatar eugenfischer avatar ipf-build avatar jakesmolka avatar jurrianfahner avatar kilianlorenz avatar krasserm avatar milzor avatar mit-ko avatar nick-mpampamis avatar ohr avatar oliveregger avatar qligier avatar rsteppac avatar snyk-bot avatar stalbrecht avatar stanojevic-boris avatar thopap avatar tmonning-xt avatar unixoid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ipf's Issues

IHE ITI Ballots 19, 20 and 21

UPD2: Considered Ballots 22 and 203.
UPD: Considered votes on Ballot 21, updated URLs.

The following change proposals from Ballots 19, 20, 21 are accepted by IHE:

  • 657 -- Optionality of HD and CX components in PIXv2 -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_19//CP-ITI-657-04.docx
  • 730 -- ATNA audit for ITI-41 -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_20/CP-ITI-730-01.doc (relevant only for XDM and XDR profiles, not for the "classic" XDS)
  • 731 -- DICOM XML schema for ATNA audit -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_20/CP-ITI-731-01.doc
  • 711 -- New XDS metadata field "limitedMetadata" -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_21/CP-ITI-711-06.doc (although we don't claim to support XDR or XDM...)
  • 743 -- XDS DocumentEntry.availabilityStatus shall be excluded from validation in ITI-41, ITI-42 -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_21/CP-ITI-743-00.doc

Added on 6-Oct-2014

  • 493 -- Each actor of document retrieve transactions (ITI-43, ITI-39, RAD-69?, RAD-75?) shall generate up to two audit messages -- one for successfully retrieved files, and one for failed ones -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_22/CP-ITI-493-02.doc
  • 533 -- New error code for XDR -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_22/CP-ITI-543-03.doc
  • 763 -- In ATNA Audit: Network access points for humans (do we need it?) -- ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2014/CPs/3_FinalText/From_Ballot_22/CP-ITI-763-01.doc

org.openehealth.ipf.commons.ihe.xds.core.metadata.PatientInfo ids (PID-3) implementation not spec conform

In spec documentation
http://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_TF_Vol3.pdf
Page 67 ( search 1715) sourcePatientInfo the PID 3 is defined as source patient identifier list. A list that uses the repetition separator.
The actual implementation produces a list of Identifiable instead of a list that uses the repetition separator which leads to following
XML:
<ns9:Slot name="sourcePatientInfo">
ns9:ValueList
ns9:ValuePID-3|13278^^^&1.3.6.1.4.1.21367.2005.1.1&ISO/ns9:Value
ns9:ValuePID-3|02777^^^&1.3.6.1.4.1.21367.2005.1.2&ISO/ns9:Value
ns9:ValuePID-3|5555^^^&1.3.6.1.4.1.21367.2005.1.1&ISO/ns9:Value
ns9:ValuePID-5|Russel/ns9:Value
/ns9:ValueList
/ns9:Slot
but should produce
<ns9:Slot name="sourcePatientInfo">
ns9:ValueList
ns9:ValuePID-3|13278^^^&1.3.6.1.4.1.21367.2005.1.1&ISO~ 02777^^^&1.3.6.1.4.1.21367.2005.1.2&ISO~5555^^^&1.3.6.1.4.1.21367.2005.1.1&ISO/ns9:Value
ns9:ValuePID-5|Russel/ns9:Value
/ns9:ValueList
/ns9:Slot

XUA option PurposeOfUse in ATNA Audit

IHE ITI TF rel. 10 unifies XUA with XUA++, and in that way introduces the option PurposeOfUse (see ITI TF-2b:3.40.4.1.2.3), which should be considered by IPF while performing ATNA Audit.

But it is not clear which ATNA Audit record element is actually affected, and the related CP-ITI-689 (ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2013/CPs/Assigned/CP-ITI-689-00.doc) is a placeholder.

Awaiting...

Casting problem for User Defined Outgoing Soap Headers

I found this issue in IPF 2.6.0 release, I found this same issue in my 2.7.x code base synced back in mid Feb.

In HeaderUtiles.java (line 177 of processUserDefinedOutgoingSoapHeaders method),
the cast type should be Map.class instead of List.class.

It is because, the message header is generally defined as a Map not a List. I ran into cast failure when I added user defined outgoing SOAP HEADER as a Map in my CXF/Camel flow.

The corresponding processUserDefinedOutgoingHttpHeaders() method has the correct casting type of Map.class in line 235.

I could fix and deliver this problem if this is confirmed to be a problem.

Thanks

IHE ITI Ballot #16

see ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2012/CPs/Ballots/Ballot-16/ for details

PDQv3 response error locations remain empty

The PDQv3 response error locations may remain empty under certain circumstances.

A HL7v2 PDQ response
ERR||QPD^0^8^0|204^Unknown key identifier^HL70357|E
is not correctly translated, because of the "0" in ERR-2-2 (the translator expects a "1")

IHE ITI Ballot #17

ftp://ftp.ihe.net/IT_Infrastructure/TF_Maintenance-2013/CPs/Ballots/ballot-17/

The ballot is not yet voted, so this issue is a reminted to take a look somewhere in the Midsummer. In particular, the following CPs will require attention if they will be accepted:

  • CP-659 --- new XDS option and query type.
  • CP-686 --- coded authorRole and authorSpecialty attributes in XDS metadata.

BTW, in CP-686 I did not understand why data type CX is used and not CE/CWE --- I asked this question in [email protected].

Investigate problem with embedded tomcat deployment and latest CXF

Running the IPF-ws-based components (CxfServlet required) deployed in a standalone application with embedded tomcat provides an error:

Caused by: java.lang.NullPointerException
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.destroy(CXFNonSpringServlet.java:171)
at org.apache.cxf.transport.servlet.CXFServlet.onApplicationEvent(CXFServlet.java:175)
at org.apache.cxf.transport.servlet.CXFServlet.onApplicationEvent(CXFServlet.java:43)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:327)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:941)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:475)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
at org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228)
at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)
... 28 more

Update HL7 support

The current HAPI version is 2.2, including a number of new features that either make existing IPF HL7 extensions obsolete or demand for a number of refactorings. This particularly affects HL7v2 validation.

Java 8 runtime compatibility

IPF shall compile and run with Java 8, without using Java 8 APIs and language features so the target platform is Java 7 (or even still Java 6).
Due to dependencies, this goes along with other 3rd party upgrades, e.g. Spring 4 and Hibernate 4 (Flow Manager) and Groovy 2.3.

error installing ipf in karaf

I am getting following errors while installing ipf in karaf

karaf@root> features:install ipf
19:37:03,033 | ERROR | l Console Thread | FeaturesServiceImpl | 22 - org.apache.karaf.f
eatures.core - 2.3.0.redhat-60024 | URL [mvn:org.springframework/org.springframework.core/4.0.3.RELE
ASE] could not be resolved.
19:37:03,079 | INFO | l Console Thread | Console | 15 - org.apache.karaf.s
hell.console - 2.3.0.redhat-60024 | Exception caught while executing command
java.lang.RuntimeException: URL [mvn:org.springframework/org.springframework.core/4.0.3.RELEASE] cou
ld not be resolved.

I tried to add following to my settings.xml , but it still cannot download the correct artifacts, the artifact id is always spring-core instead of org.springframework.core

com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases http://repository.springsource.com/maven/bundles/release
<repository>
  <id>com.springsource.repository.bundles.external</id>
  <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
  <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>

thanks

Hank

Enhance the downloadable IPF-<version>-bin.zip to be Karaf-Ready

As a part of a IPF release process we are creating a downloadable IPF--bin.zip archive with all pom.xml transitive dependencies. We can enhance this archive to contain also the bundles referenced in IPF-karaf-feature.xml in order to provide a Karaf-ready local bundles set.

Support for io.dropwizard.metrics

Support for optional runtime metrics from io.dropwizard.metrics by providing interceptors for

  • MLLP and CXF endpoints for IHE transactions
  • potentially some histograms based on received requests (e.g. HL7v2: group by message type, sending application)

Use Gazelle IHE HL7v2 Profiles for validating MLLP transactions

The Gazelle EVS client publishes HL7v2 Message profiles to enable validation of IHE transaction messages under the ASLv2 license. Given that HAPI handles this well in the meantime, we should reuse them and drop our custom validation schemes.

Maybe download them (by OID) during the build? Or download them once at runtime? Or replicate in the IPF sources (needs synchronization). Comments welcome.

Camel's Mllp Decoder leaks memory - provide temporary replacement in IPF

The HL7MLLPDecoder class in Camel leaks memory - the input buffer is not reset properly, so new messages are always appended (at least as long as the Mina session does not idle out).

Until the fix is released in the next Camel versions, we should temporarily provide it in IPF (2.6 branch specifically) and allow its use in IPF's MllpComponent.

Race condition in Interceptor2ProducerAdapter objects created by MllpEndpoint

The org.openehealth.ipf.platform.camel.ihe.mllp.core.MllpEndpoint.createProducer() method creates an Interceptor2ProducerAdapter with a new Mina2Producer and a lazily initialized interceptor chain. The chain is also modified so that each interceptor delegates to the next interceptor with the last one delegating to the created Mina2Producer.
If a MllpEndpoint object creates multiple producers (adapters) they share the same interceptor chain, which delegates to the Mina2Producer created by the last createProducer call on this MllpEndpoint object.

As the adapters are different objects camel's producer cache will allow concurrent access on them. This can cause concurrent access on the process method of the same Mina2Producer object which is not thread-safe.

The correct behavior would probably be creating a new interceptor chain for each createProducer call instead of the lazy initialization.

Update MDHT to 1.2.0

Check out Facade API, too.
Look out for other oppotunities to make the API more accessible.

Upgrade to Camel-2.12.0

Upgrade to Camel-2.12.0 and also upgrade all other necessary dependencies (cxf, spring...)

Add "isSnapshot" relationship to XDS simplified data model

The XDS Metadata Update supplement defines a new document relationship type "isSnapshotOf" in section 4.1.6.4.1.3, which is used in the On-Demand Document supplement.

This new type should be supported by the XDS simplified data model (i.e. by org.openehealth.ipf.commons.ihe.xds.core.metadata.AssociationType, validators and the like).

Issue with the hl7dsl module

There is a problem with the "ipf-modules-hl7dsl" project. It will not compile because of an error in the Groovy file "GroupAdapterIterator.groovy". Eclipse error: "Can't have an abstract method in a non-abstract class". The jUnit test fails. A quick fix by declaring the class as 'abstract' doesn't work because it causes other errors. Please review.

Use Groovy 2.0 extension modules for extension methods

Instead of doing MetaClass extensions, use the Groovy 2.0 extension modules mechnism

Problems:

some MetaClass extensions carry context (e.g. a ModelClassFactory or MappingService instance). This context information must be externalized into a (global) IPFContext, which needs to be accessible from static methods of the extension class.

not sure how this works with OSGi

Extensions available in commons-map, modules-hl7, platform-camel-core, platform-camel-hl7, platform-camel-cda, platform-camel-flow, platform-camel-test

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.