Eclipse Open Healthcare Framework (OHF) Bridge
Using the OHF Bridge
What can the Bridge do for you?
As you already know, the OHF Bridge is a simplified reference implementation of the
IHE actors in the Eclipse OHF Project. The main idea / goal of the Bridge is to be a single
endpoint on which a Web service can be attached and invoked. Additionally, the single endpoint
can also be used as a standalone POJO to have simple access to the OHF IHE components. By
using the Bridge as a Web service, the IHE actors that would normally only be accessible only on a
Java platform can be accessed by all parties (.NET, LAMP, etc) and greatly broaden the
scope of those that can use OHF to achieve interoperability with IHE specifications.
The OHF Bridge has a centralized RHIO configuration handler, meaning it contains a configurable list
of IHE-compliant infrastructure servers that are based in centralized nodes. The benefit
here is that the client invoking the Web service need only know the name of the RHIO they want to
access and not a list of URLs and ports for the XDS registry, XDS repository, and PIX servers based
at that RHIO. A client can obtain a list of RHIOs supported by a Bridge install by calling the GetRhios Web service.
For more information about configuring the RHIO config in the Bridge, see the configuration page.
Configuring the Bridge
If you're running the Bridge locally (and not using the IBM Public Demo), then you'll want to make
some configuration changes. The Bridge has a few configuration points that control not only its
actions but the actions of the IHE and HL7v2 components as well, including security certificates and logging.
See the main document about configuring the bridge.
Using the Bridge API
The Bridge is intended to be a single point of access to the IHE actors in OHF. More
specifically, it consists of one public class (org.eclipse.ohf.bridge.ws.OHFBridge) and a
collection of data types (in org.eclipse.ohf.bridge.types.*, treated as serializable Beans)
that are used to perform actions and transfer data. All other code in the org.eclipse.ohf.bridge.*
packages should be considered "private".
The intention of this setup is to make a single endpoint for a Web service. However, the
simplicity of the setup also can allow for other uses of the Bridge.
The OHFBridge class provides the following methods (or Web service operations), grouped
by the associated IHE actor. A description of each and its parameters is in the
linked Javadoc.
For a more detailed explanation of some of the API operations and the transaction, please see the
OHF Bridge Documentation page
on the Wiki.
XDS Consumer
-
QueryDocumentsByPatientId(SessionContext sessionContext,
PatientIdType patientId,
DocumentQueryPreferencesType queryPreferences)
-
QueryDocumentsFind(SessionContext sessionContext,
FindDocumentQueryType queryDocumentQueryType,
DocumentQueryPreferencesType queryPreferences)
-
QueryDocumentsGet(SessionContext sessionContext,
GetDocumentQueryType getDocumentQueryType,
DocumentQueryPreferencesType queryPreferences)
-
RetrieveDocumentByUrl(SessionContext sessionContext,
String url)
(Preferred Usage)
-
RetrieveDocumentByUniqueId(SessionContext sessionContext,
String uniqueId)
(deprecated)
-
RetrieveDocumentByUUID(SessionContext sessionContext,
String UUID)
(deprecated)
XDS Source
-
SubmitDocument(SessionContext sessionContext,
String base64EncodedDocument,
DocumentSubmissionMetadataType metadata)
(Preferred Usage)
-
WrapInCdaAndSubmitDocument(SessionContext sessionContext,
XDSDocType doc)
PIX/PDQ Consumer
-
SearchPatient(SessionContext sessionContext,
PatientInfoType patientInfo,
PatientSearchPreferencesType queryPreferences)
PIX Source
-
AdmitInpatient(SessionContext sessionContext,
PatientInfoType patientInfo)
-
MergePatient(SessionContext sessionContext,
PatientInfoType patientInfoTarget,
String patientClassTarget,
PatientInfoType patientInfoMerge)
-
PreAdmitInpatient(SessionContext sessionContext,
PatientInfoType patientInfo)
-
RegisterOutpatient(SessionContext sessionContext,
PatientInfoType patientInfo)
-
UpdateInPatient(SessionContext sessionContext,
PatientInfoType patientInfo)
-
UpdateOutPatient(SessionContext sessionContext,
PatientInfoType patientInfo)
ATNA Audit
-
AuditActorStartEvent(SessionContext sessionContext,
int eventOutcome)
-
AuditActorStopEvent(SessionContext sessionContext,
int eventOutcome)
-
AuditPatientRecordCreateEvent(SessionContext sessionContext,
int eventOutcome,
PatientIdType patientId)
-
AuditPatientRecordDeleteEvent(SessionContext sessionContext,
int eventOutcome,
PatientIdType patientId)
-
AuditPatientRecordReadEvent(SessionContext sessionContext,
int eventOutcome,
PatientIdType patientId)
-
AuditPatientRecordUpdateEvent>(SessionContext sessionContext,
int eventOutcome,
PatientIdType patientId)
-
AuditPhiExport(SessionContext sessionContext,
int eventOutcome,
String dataRecipientId,
String exportedDataId,
PatientIdType patientId)
-
AuditPhiImport(SessionContext sessionContext,
int eventOutcome,
String dataSourceId,
PatientIdType[] patientIds,
String importedDataId)
-
AuditQueryEvent(SessionContext sessionContext,
int eventOutcome,
String registryID,
String queryText)
-
AuditUserAuthenticationLoginEvent(SessionContext sessionContext,
int eventOutcome,
String initiatingUserName,
String initiatingUserNodeIP,
String authenticatingNodeIP)
-
AuditUserAuthenticationLogoutEvent(SessionContext sessionContext,
int eventOutcome,
String initiatingUserName,
String initiatingUserNodeIP,
String authenticatingNodeIP)
Additional utility operations
-
GetMyLog(SessionContext sessionContext,
int startingAtLine)
-
GetRhios()
-
Version()
Using the Web service endpoint
Depending on how the Bridge is installed, you will likely be using it as a Web services endpoint.
The OHF Bridge is a typical configuration uses Apache Axis 1.x and Apache Tomcat 5.5 to provide
the previously described API via SOAP transactions. Any SOAP 1.1/1.2 client supporting RPC-style
transactions can utilize the Bridge in its typical configuration.
The Bridge SOAP endpoint
In a typical Axis/Tomcat setup using the Equinox server-side container, the
endpoint for your OHF Bridge Web service should be at the following URL:
http://localhost:8080/bridge/services/ohf-bridge
Note that it varies based on the hostname of the server and the port number you're using Tomcat on.
WSDL
Apache Axis generates a WSDL (using Java2WSDL) for the OHFBridge class. This WSDL represents
the simple data types and operations provided by the Bridge through an interface that can be
easily consumed (e.g. to generate stub client classes).
A default reference WSDL is here.
Upon installing and running the Bridge, Axis will generate the WSDL automatically by adding
"?wsdl" to the end of the SOAP URL:
http://localhost:8080/bridge/services/ohf-bridge?wsdl
What can the Bridge do for you?
As you already know, the OHF Bridge is a simplified reference implementation of the IHE actors in the Eclipse OHF Project. The main idea / goal of the Bridge is to be a single endpoint on which a Web service can be attached and invoked. Additionally, the single endpoint can also be used as a standalone POJO to have simple access to the OHF IHE components. By using the Bridge as a Web service, the IHE actors that would normally only be accessible only on a Java platform can be accessed by all parties (.NET, LAMP, etc) and greatly broaden the scope of those that can use OHF to achieve interoperability with IHE specifications.
The OHF Bridge has a centralized RHIO configuration handler, meaning it contains a configurable list of IHE-compliant infrastructure servers that are based in centralized nodes. The benefit here is that the client invoking the Web service need only know the name of the RHIO they want to access and not a list of URLs and ports for the XDS registry, XDS repository, and PIX servers based at that RHIO. A client can obtain a list of RHIOs supported by a Bridge install by calling the GetRhios Web service. For more information about configuring the RHIO config in the Bridge, see the configuration page.
Configuring the Bridge
If you're running the Bridge locally (and not using the IBM Public Demo), then you'll want to make some configuration changes. The Bridge has a few configuration points that control not only its actions but the actions of the IHE and HL7v2 components as well, including security certificates and logging. See the main document about configuring the bridge.
Using the Bridge API
The Bridge is intended to be a single point of access to the IHE actors in OHF. More specifically, it consists of one public class (org.eclipse.ohf.bridge.ws.OHFBridge) and a collection of data types (in org.eclipse.ohf.bridge.types.*, treated as serializable Beans) that are used to perform actions and transfer data. All other code in the org.eclipse.ohf.bridge.* packages should be considered "private". The intention of this setup is to make a single endpoint for a Web service. However, the simplicity of the setup also can allow for other uses of the Bridge.
The OHFBridge class provides the following methods (or Web service operations), grouped
by the associated IHE actor. A description of each and its parameters is in the
linked Javadoc.
For a more detailed explanation of some of the API operations and the transaction, please see the
OHF Bridge Documentation page
on the Wiki.
- QueryDocumentsByPatientId(SessionContext sessionContext, PatientIdType patientId, DocumentQueryPreferencesType queryPreferences)
- QueryDocumentsFind(SessionContext sessionContext, FindDocumentQueryType queryDocumentQueryType, DocumentQueryPreferencesType queryPreferences)
- QueryDocumentsGet(SessionContext sessionContext, GetDocumentQueryType getDocumentQueryType, DocumentQueryPreferencesType queryPreferences)
-
RetrieveDocumentByUrl(SessionContext sessionContext,
String url)
(Preferred Usage) -
RetrieveDocumentByUniqueId(SessionContext sessionContext, String uniqueId)
(deprecated) -
RetrieveDocumentByUUID(SessionContext sessionContext, String UUID)
(deprecated)
XDS Consumer
-
SubmitDocument(SessionContext sessionContext,
String base64EncodedDocument,
DocumentSubmissionMetadataType metadata)
(Preferred Usage) - WrapInCdaAndSubmitDocument(SessionContext sessionContext, XDSDocType doc)
XDS Source
- SearchPatient(SessionContext sessionContext, PatientInfoType patientInfo, PatientSearchPreferencesType queryPreferences)
PIX/PDQ Consumer
- AdmitInpatient(SessionContext sessionContext, PatientInfoType patientInfo)
- MergePatient(SessionContext sessionContext, PatientInfoType patientInfoTarget, String patientClassTarget, PatientInfoType patientInfoMerge)
- PreAdmitInpatient(SessionContext sessionContext, PatientInfoType patientInfo)
- RegisterOutpatient(SessionContext sessionContext, PatientInfoType patientInfo)
- UpdateInPatient(SessionContext sessionContext, PatientInfoType patientInfo)
- UpdateOutPatient(SessionContext sessionContext, PatientInfoType patientInfo)
PIX Source
- AuditActorStartEvent(SessionContext sessionContext, int eventOutcome)
- AuditActorStopEvent(SessionContext sessionContext, int eventOutcome)
- AuditPatientRecordCreateEvent(SessionContext sessionContext, int eventOutcome, PatientIdType patientId)
- AuditPatientRecordDeleteEvent(SessionContext sessionContext, int eventOutcome, PatientIdType patientId)
- AuditPatientRecordReadEvent(SessionContext sessionContext, int eventOutcome, PatientIdType patientId)
- AuditPatientRecordUpdateEvent>(SessionContext sessionContext, int eventOutcome, PatientIdType patientId)
- AuditPhiExport(SessionContext sessionContext, int eventOutcome, String dataRecipientId, String exportedDataId, PatientIdType patientId)
- AuditPhiImport(SessionContext sessionContext, int eventOutcome, String dataSourceId, PatientIdType[] patientIds, String importedDataId)
- AuditQueryEvent(SessionContext sessionContext, int eventOutcome, String registryID, String queryText)
- AuditUserAuthenticationLoginEvent(SessionContext sessionContext, int eventOutcome, String initiatingUserName, String initiatingUserNodeIP, String authenticatingNodeIP)
- AuditUserAuthenticationLogoutEvent(SessionContext sessionContext, int eventOutcome, String initiatingUserName, String initiatingUserNodeIP, String authenticatingNodeIP)
ATNA Audit
- GetMyLog(SessionContext sessionContext, int startingAtLine)
- GetRhios()
- Version()
Additional utility operations
Using the Web service endpoint
Depending on how the Bridge is installed, you will likely be using it as a Web services endpoint. The OHF Bridge is a typical configuration uses Apache Axis 1.x and Apache Tomcat 5.5 to provide the previously described API via SOAP transactions. Any SOAP 1.1/1.2 client supporting RPC-style transactions can utilize the Bridge in its typical configuration.
The Bridge SOAP endpoint
In a typical Axis/Tomcat setup using the Equinox server-side container, the
endpoint for your OHF Bridge Web service should be at the following URL:
http://localhost:8080/bridge/services/ohf-bridge
Note that it varies based on the hostname of the server and the port number you're using Tomcat on.
WSDL
Apache Axis generates a WSDL (using Java2WSDL) for the OHFBridge class. This WSDL represents
the simple data types and operations provided by the Bridge through an interface that can be
easily consumed (e.g. to generate stub client classes).
A default reference WSDL is here.
Upon installing and running the Bridge, Axis will generate the WSDL automatically by adding
"?wsdl" to the end of the SOAP URL:
http://localhost:8080/bridge/services/ohf-bridge?wsdl

