[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.ohf] Re: OHF Bridge 0.3.0 problems

Robert,

I'll try and cover the questions that Sarah didn't get to.

First let me give a quick note. The OHF Bridge is *NOT* "an IHE interface". It's not designed to be interfaced by an IHE actor. (including the xdstest2 tool). Its purpose is strictly to enable non-Java implementations to use the OHF components for IHE support. The Bridge uses what amounts to be a proprietary / custom interface to simplify this support. It does not implement any of the Web services specified in the IHE Technical Framework nor should anyone try to point an IHE actor at it. Its existence is a simplification layer on top of the existing OHF plugins.

> 2. If I use the bridge.war in Tomcat, and I want to utilize that
> bridge to point to my backend WS, I need to implement all the WSDL
> that the bridge exposes, correct?

Correct. As stated above, the Bridge WSDL does not specify an IHE interface. It is a custom interface designed to simplify / enable use of the OHF components by non-Java applications. When you generate client stubs from the Bridge WSDL, do they do not represent any IHE constructs. It's a relatively simple, custom API that transforms calls to the Bridge into the appropriate calls to the OHF PIX, PDQ, XDS, and ATNA plugins.

Here's a code snippet from the Bridge that will XDS stored query for documents by a patient id. Note that I am calling the Bridge API directly in Java here (as a POJO) but in reality this would be called using a Web service proxy.

PatientIdType idType = new PatientIdType("cc7b3bf3bd964e0");
idType.getAssigningAuthorityType().setUniversalId("1.3.6.1.4.1.21367.2005.3.7"); idType.getAssigningAuthorityType().setUniversalIdType("ISO");


// set up query preferences
DocumentQueryPreferencesType queryPreferences = new DocumentQueryPreferencesType();
queryPreferences.setReturnReferencesOnly(false);
queryPreferences.setStoredQuery(true);


SessionContext sessionContext = new SessionContext();
sessionContext.setRhioName("rhio name");
sessionContext.setInitiatingUser("tester");

OHFBridge bridge = new OHFBridge();
QueryDocumentsResponseType response = bridge.QueryDocumentsByPatientId(sessionContext, idType, queryPreferences);


(note that calling bridge.QueryDocumentsByPatientId would call your Web service proxy in an instance where you're using the Bridge as a Web service)

This code snippet would call the OHF Bridge. The Bridge would use the information provided (such as the RHIO name) to setup the OHF XDS Consumer and invoke a stored query. The XDS Consumer creates the ebXML request, sends to the registry, and parses the response. The Bridge decodes the response and returns a list of metadata.


> 3. Suppose I have the bridge.war in question 2, is there a tag so that > I can pull all the source from CVS and build it myself, or must I > always pull trunk (buggy at best)?

The code that was tested at Connectathon by several vendors is tagged "OHE_IHE_POST_2008NACTHON".

> 4. If I decide to write my own code to hanlde consider writing code
> like the Sample Code in http://wiki.eclipse.org/OHF_Using_XDS.b but
> not using OHF, is it likely to be a large effort compared to using
> OHF?  (I am not referring to the Bridge here).

We've been working on our implementation for over 2 years now :) The amount of work / time needed will vary based on prerequisite understanding of the IHE Technical Framework for XDS, PIX, PDQ, and ATNA. This includes knowing ebXML 2.1/3.0 and HL7 v2.x. Plenty of people write their own, although OHF use has continued to increase.

> 5. If I want to fully understand the best way to test (Mesa test?) XDS
> and OHF with or without the Bridge, what is the total set of packages
> I should pull from CVS?

Will clarify Sarah's response here. To build OHF from source, you will need all of the org.eclipse.ohf.ihe.* projects from CVS (minus a few that are no longer used). Additionally, you will need the org.eclipse.ohf.hl7v2.core and org.eclipse.ohf.utilities project. Most of the non-org.eclipse.ohf.* projects will also be needed. I have attached an Eclipse team project set here that lists all of the dependencies.

Again I hope this helps.

-Matt


Sarah Knoop wrote:
Hi Robert,

I'll take a stab at some of your questions below and leave the rest for Matt. As noted - we were out of the country and were slow to respond to your posts. Thank you for posting to the newsgroup ... we do our best to keep up with you guys ... now that we are more popular (a good thing) :-). It's also great to see our community stepping up to answer questions too - THANKS JESSE!

I agree with your point about the xdstest2 tool. I was, too, horribly confused about it's use the first time I did MESA tests. I too spent a lot of time trying to get them to work with the client side of XDS - to no avail. There is an intitiative in IHE to come up with a more consolidated set of testing tools. This group met at HIMSS - which I regret not being able to make it too. This group does know about OHF and as the year progresses we hope to interact more with them.

Now for your questions -
1/5. We have 'MESA' JUNIT tests for the bridge and each of the underlying IHE actor plugins. These can be found in <plugin>/src_test/org.eclipse.ohf.ihe.<profile>.<actor>.test.mesa. The underlying plugins use a TestConfiguration.java file as well as some supporting files to run. These are documented in the javadoc. We have MESA tests for the Bridge as well - org.eclipse.ohf.bridge.ws/src_tests/org.eclipse.ohf.bridge.ws.tests.mesa


6. we have a light weight php application that can sit ontop of the bridge - org.eclipse.ohf.bridge.client

Regards,
- Sarah


Robert Alkire wrote:
Thanks for all your feedback, I slowly came around to the conclusion that xdstest2 tool was not really intended to work directly in that fashion.
I don't really understand why not though. The bridge API is exactly what that tool should be talking to IMHO. Each of the tests is doing basic XDS operations that are supportable through the bridge, regardless of the destination that implements the WS calls. Perhaps someone can spend the time to interface the two of them together with a layer, alas I don't have that time...


" For example, if you want to query for and retrieve a document using XDS,
you can do so with the OHF Bridge API. Likewise if you want to submit a
document to an XDS repository, you could use OHF to create the
transaction and send it to the repository."


Could you point to a good source (even unit tests) that serve as examples of how to utilize OHF to do exactly these things. I only wanted to use the testing tool to drive OHF attempting to avoid coding. Assuming I had a handler of the WS on the back end I can alter the RHIO configuration to point to my implementations rather than NIST rather easily. That is the whole point of the Bridge. Just starting to attempt to use it some things aren't very clear to me yet.
1. How did OHF Bridge show passing MESA tests? (where is the code that drove those tests)


2. If I use the bridge.war in Tomcat, and I want to utilize that bridge to point to my backend WS, I need to implement all the WSDL that the bridge exposes, correct?

3. Suppose I have the bridge.war in question 2, is there a tag so that I can pull all the source from CVS and build it myself, or must I always pull trunk (buggy at best)?

4. If I decide to write my own code to hanlde consider writing code like the Sample Code in http://wiki.eclipse.org/OHF_Using_XDS.b but not using OHF, is it likely to be a large effort compared to using OHF? (I am not referring to the Bridge here).

5. If I want to fully understand the best way to test (Mesa test?) XDS and OHF with or without the Bridge, what is the total set of packages I should pull from CVS? And what are all the dependencies? I've sent for example http://wiki.eclipse.org/images/2/26/OHF_XDS_Document_Consumer.pdf; I am referring to a more comprehensive OHF with the Bridge and all dependencies to enable me to run the gammit of XDS Mesa tests.

6. Is there any UI tools that will make this work easier, such as one that lists XDS documents retrived from a query that can then be pulled from the repository?

Thanks...

"Matthew Davis" <mattadav@xxxxxxxxxx> wrote in message news:fsbv4d$6d6$1@xxxxxxxxxxxxxxxxxxxx

Hi Robert,

First - I'm very sorry about the delay in getting back to you. Sarah and I were traveling internationally last week and it appears her original email did not get through to you. However, I hope I can be of help now. Also, I'm sorry I did not get to your newsgroup posts until now.

1.

[DEBUG][13:15:40][.builder.RhioConfigManagerImpl] Got rhio config

file from

C:\Apache\Tomcat 6.0\conf\rhioConfig.xml
[DEBUG][13:15:40][.builder.RhioConfigManagerImpl] loading EMF from
C:\Apache\Tomcat 6.0\conf\rhioConfig.xml
org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Feature

'mllp'

not found. (http://config.common.ihe.ohf.eclipse.org, 64, 15)

You are absolutely correct. We did make a major change in refactoring the RHIO Configuration API and the installation package did not get fully updated - that is, the rhioConfig.xml shipped in org.eclipse.ohf.bridge.install did not get updated to reflect the new updates. I will make that fix and update this afternoon.


2.

On 11710 changed endpoint to
http://localhost:8080/bridge/services/ohf-bridge and now get the
following:
ov.nist.registry.xdstest2.StepContext
  step_id : submit
ov.nist.registry.xdstest2.PlanContext
  RegistryEndpoint : http://localhost:8080/bridge/services/ohf-bridge
  transaction : gov.nist.registry.xdstest2.SimpleTransaction@1b383e9
Fatal Error: Exception thrown:
gov.nist.registry.common2.exception.XdsInternalException
xisFault thrown: No such operation 'hello'
rg.apache.axis2.AxisFault: No such operation 'hello'
ov.nist.registry.common2.exception.XdsInternalException: AxisFault
thrown:
No such operation 'hello'
rg.apache.axis2.AxisFault: No such operation 'hello'

I believe test 11710 is the configuration only test and should be invoked using the xdstest2 tool against the NIST registry - it's simply so Bill's system can identify the vendor that is testing from a set of IP addresses for correlation with MESA. OHF or the Bridge should not be used in this test.



3.

<TestResults


status="Fail"><Xdstest2_version>1.9</Xdstest2_version><Xdstest2_args>--actorconfig



C:\xdstest2tool\actors.xml --testmgmt C:\xdstest2tool\mgmt


</Xdstest2_args><Test>11733/submit</Test><RegistryEndpoint>http://localhost:8080/bridge/services</RegistryEndpoint><TestStep



id="submit"><ExpectedStatus>Success</ExpectedStatus><RegisterTransaction><Xdsa



/><MetadataFile>./single_doc.xml</MetadataFile><RegistryEndpoint>http://localhost:8080/bridge/services</RegistryEndpoint><AssignedPatientId><Assign



It looks like you're trying to run 11733 here - which is a Document Registry MESA test. It uses xdstest2 to test the syntax/construction of the document registry, so the test should target the Web service endpoint of a registry directly and not the OHF Bridge. As Jesse mentioned before, the Bridge isn't a document registry or a server-side IHE actor, it's an implementation of client-side IHE actors.


4.

For test 11746:
org.eclipse.ohf.bridge.install_0.3.0.v20080313073042.zip contains the
Eclipse Equinox/OSGi server-side Servlet (WAR file) but received this error:
Mar 25, 2008 12:43:21 AM org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Servlet.service() for servlet equinoxbridgeservlet threw >
exception
java.lang.RuntimeException: No support for attachments

...

<FatalError>Exception thrown by xdstest2: Exception thrown:
java.lang.Exception
Reply is not SOAP Envelope

Not 100% sure what's going on here, but it appears that you maybe tried to run test 11746 (document source) from xdstest2 against the Bridge? This should be targeted at a document repository's endpoint, not the Bridge.



I hope I caught all the questions from the previous posts here. Again please remember that the Bridge is not a server-side/infrastructure actor, it is simply an aggregation of the OHF IHE client-side actors (PIX Source, PIX Consumer, PDQ Consumer, XDSa/b Source, XDSa/b Consumer, ATNA) into a single interface that is accessible via a Web service. The RHIO Configuration acts as a simplification mechanism on top of that. For example, if you want to query for and retrieve a document using XDS, you can do so with the OHF Bridge API. Likewise if you want to submit a document to an XDS repository, you could use OHF to create the transaction and send it to the repository. OHF also can be used to perform PIX and PDQ queries as well as submitting new patient info using PIX Source.


-Matt




<?xml version="1.0" encoding="UTF-8"?>
<psf version="2.0">
<provider id="org.eclipse.team.cvs.core.cvsnature">
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.axis2,org.apache.axis2"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.batik,org.apache.batik"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.commons,org.apache.commons"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.commons.codec,org.apache.commons.codec"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.commons.lang,org.apache.commons.lang"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.log4j,org.apache.log4j"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.apache.xerces,org.apache.xerces"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge,org.eclipse.ohf.bridge"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge.client,org.eclipse.ohf.bridge.client"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge.ihe,org.eclipse.ohf.bridge.ihe"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge.ihe.pixpdq,org.eclipse.ohf.bridge.ihe.pixpdq"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge.install,org.eclipse.ohf.bridge.install"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.bridge.ws,org.eclipse.ohf.bridge.ws"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.hl7v2.core,org.eclipse.ohf.hl7v2.core"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.hl7v2.ui,org.eclipse.ohf.hl7v2.ui"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.atna.agent,org.eclipse.ohf.ihe.atna.agent"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.atna.audit,org.eclipse.ohf.ihe.atna.audit"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.atna.transport,org.eclipse.ohf.ihe.atna.transport"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.atna,org.eclipse.ohf.ihe.common.atna"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.cdar2,org.eclipse.ohf.ihe.common.cdar2"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.config,org.eclipse.ohf.ihe.common.config"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.ebXML._2._1,org.eclipse.ohf.ihe.common.ebXML._2._1"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.ebXML._3._0,org.eclipse.ohf.ihe.common.ebXML._3._0"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.hl7v2,org.eclipse.ohf.ihe.common.hl7v2"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.hl7v2.client,org.eclipse.ohf.ihe.common.hl7v2.client"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.mllp,org.eclipse.ohf.ihe.common.mllp"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.common.ws.axis2,org.eclipse.ohf.ihe.common.ws.axis2"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.pdq.consumer,org.eclipse.ohf.ihe.pdq.consumer"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.pix.consumer,org.eclipse.ohf.ihe.pix.consumer"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.pix.source,org.eclipse.ohf.ihe.pix.source"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds,org.eclipse.ohf.ihe.xds"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.consumer,org.eclipse.ohf.ihe.xds.consumer"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.metadata,org.eclipse.ohf.ihe.xds.metadata"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.metadata.extract,org.eclipse.ohf.ihe.xds.metadata.extract"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.metadata.extract.cdar2,org.eclipse.ohf.ihe.xds.metadata.extract.cdar2"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.metadata.transform,org.eclipse.ohf.ihe.xds.metadata.transform"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.soap,org.eclipse.ohf.ihe.xds.soap"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.ihe.xds.source,org.eclipse.ohf.ihe.xds.source"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.eclipse.ohf.utilities,org.eclipse.ohf.utilities"/>
<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/technology,org.eclipse.ohf/plugins/org.xmlpull.v1,org.xmlpull.v1"/>
</provider>
</psf>