Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » OHF » XCA on the bridge
XCA on the bridge [message #42145] Wed, 26 March 2008 05:15 Go to next message
Jesse Pangburn is currently offline Jesse PangburnFriend
Messages: 166
Registered: July 2009
Senior Member
Hi,
I'm wondering how XCA works with the bridge. Is it highly experimental at
this stage or you guys think it basically works? I've checked the wiki
and found nothing on how to use it, I've checked the javadoc and gotten
some hints from the API, and I've checked the rhioConfig.xml and gotten
some more hints.

Here's what I believe to be true with respect to the following rhio
definition:
<rhio>
<name>XDS.b RHIO</name>

<publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain >
<config>
<registryId>XDS-B-Facade</registryId>
<repositoryId>XDS-B-Facade</repositoryId>
<xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
<pixId>lswin10</pixId>
<auditId>lswin10</auditId>
</config>
</rhio>
1. If I do a provide and register, then it will go to the repository
named "XDS-B-Facade". What is this facade thing btw?
2. If I do a document query I can pass a boolean to use XCA or not. If I
pass false, then the query will go to the registry named "XDS-B-Facade".
If I pass true, then the query will go to the gateway named "GATEWAY_IBM".

Those are the items I am reasonably sure of given what I've seen, correct
me if I'm wrong. The part I'm confused about is when I want to do the
"retrieve document set" operation. There is no boolean parameter to say
whether I want to use the repository in my rhio to do the retrieve or
whether I want to use the gateway. One thing I know about this from XDS.b
is that when I do "retrieve document set", the bridge uses the "repository
unique id" parameter to search the entire rhioConfig.xml (regardless of if
the repository is defined in my rhio or not) and if it find such a
repository with that id, it then issues the retrieve command to the url
specified in that repository configuration.

So, if I had to guess, I would think that if the document query returned a
homeCommunityId and I faithfully passed that homeCommunityId along to the
"retrieve document set" command that the bridge would see that field is
not blank AND that I have a gateway specified in my rhio's configuration.
Therefore the bridge would know to issue the "retrieve document set" to
the gateway instead of to one of my repositories. Is that true or am I
way off?

thanks,
Jesse
Re: XCA on the bridge [message #42237 is a reply to message #42145] Wed, 26 March 2008 19:21 Go to previous messageGo to next message
Matthew DavisFriend
Messages: 269
Registered: July 2009
Senior Member
Hey Jesse,

Ummm, I think "highly experimental" is probably the way to put it right
now. Basically it was never tested, although I think Sage might've tried
to use it @ HIMSS. So much of our testing is dependent on IBM
infrastructure systems and the IBM XCA gateways didn't end up happening,
so as a result we never got a chance to fully test out our XCA
implementation. We also never had a chance to test it @ Connectathon
either.


Let me explain XCA in OHF first and that'll answer a couple of your
questions:

1. Straight from the XDS.b Consumer: It *SHOULD* work without a
problem. There is the requirement of the "copy over" of the homeId /
homeCommunityId into queries and retrieves, which is up to the
implementor to handle. The general rule should be - if you see a
homeCommunityId come back from a query response, all further query
responses relating to that document ID should contain it. Also, any
retrieves on that document ID should contain it.

The XDS.b Consumer's retrieveDocumentSet method contains an algorithm to
determine "where" to send each retrieve request and aggregate the
responses. The way the algorithm works is.. in the first condition, if
a RetrieveDocumentRequest contains a homeCommunityId, it *ALWAYS* will
get sent to the initiating gateway set in the XDS Consumer -
setInitiatingGateway(java.net.URI). The base assumption is you only
have 1 initiating gateway per affinity domain and I think it's safe to
assume that.

2. The Bridge, at least in the fully untested world, implements this
paradigm directly. In the Retrieve Document Set Bridge method, the
Bridge calls Consumer.setInitiatingGatewayURI(java.net.URI) from the
RHIO's XCA Gateway. The key again (as with the XDS Consumer) is that
when you get a query response from the Bridge, if a homeCommunityId
value is present in the XDSDocType, you must copy it over the XDSDocType
[] sent in the RetrieveDocumentSetRequestType.


Now, specifically for your questions:
> 1. If I do a provide and register, then it will go to the repository
> named "XDS-B-Facade". What is this facade thing btw?

That is correct. P&R goes to the repository id set for the RHIO. Your
discovery that it checks all repository unique ids is actually new as-of
after Connectathon. Previously you had to define each repository in the
list of repositories for a RHIO but that was cumbersome. The XDS.b
Repository Facade was/is a simple Axis2 Web service I wrote early last
fall to semantically check our XDS.b Consumer/Source implementation
while the IBM XDS.b Repository was still under development. It just
blindly accepted and acknowledged the request with a list :)

> 2. If I do a document query I can pass a boolean to use XCA or not. If
> I pass false, then the query will go to the registry named
> "XDS-B-Facade". If I pass true, then the query will go to the gateway
> named "GATEWAY_IBM".

This is true. If "useXCA" is true, then the XDS Consumer uses the
<storedQueryUrl> from the RHIO's <xcaGateway>. Otherwise it uses
<storedQueryUrl> from the RHIO's <registry>.

> The part I'm confused about is when I want to
> do the "retrieve document set" operation. There is no boolean parameter
> to say whether I want to use the repository in my rhio to do the
> retrieve or whether I want to use the gateway.

See 1 and 2 from me above. This is because of the built-in controls in
the XDS Consumer. We had some go-arounds with IHE regarding the
semantics of splitting requests up and having a retrieve document set
request with mixed destinations (different repository unique ids,
different home community ids, etc). Based on RHIO paradigms and
assumptions set out by the author of XCA (from IBM), we decided that
the "routing policy" that the XDS Consumer uses is that the home
community id takes precedence...and if it is set in the request, then
the request, regardless of repositoryUniqueId, gets routed through the
initiating gateway.

For the Bridge, this very explicitly means... if you set homeCommunityId
in one of the XDSDocType items sent to retrieveDocumentSet, then that
specific request will get routed to the <retrieveDocumentSet> URL set in
the RHIO's <xcaGateway>. If there is no <xcaGateway> set for the RHIO,
it will throw an error (or it'll give a partial success / failure). If
homeCommunityId is not set, it'll iterate through the list of all XDS.b
repositories in rhioConfig.xml in an attempt to resolve the
repositoryUniqueId => URL mapping.


> So, if I had to guess, I would think that if the document query returned
> a homeCommunityId and I faithfully passed that homeCommunityId along to
> the "retrieve document set" command that the bridge would see that field
> is not blank AND that I have a gateway specified in my rhio's
> configuration. Therefore the bridge would know to issue the "retrieve
> document set" to the gateway instead of to one of my repositories. Is
> that true or am I way off?

Yep! That's exactly how it works. If you read XCA, you actually see
that it is part of XDS - it is embedded and, essentially, XDS support
implies XCA support. Much to our chagrin, to fully internalize support
for XCA (and obfuscate it from the implementor) would require a greater
level of intelligence on the Consumer's part and a level of statefulness
that we do not want to introduce in the Bridge. As a result, it's
dependent on a "copy over" paradigm where - if you see something (in
this case, the homeCommunityId) - you must copy it over into further
requests regarding that document.

Hope this helps! The reason this never got documented all that well /
acknowledged / tested really centers on the fact that IBM never built
their XCA gateway. We'll be at EU Connectathon in a couple weeks,
hopefully I'll get a chance to test XCA support further then.

Thanks,
-Matt



Jesse Pangburn wrote:
> Hi,
> I'm wondering how XCA works with the bridge. Is it highly experimental
> at this stage or you guys think it basically works? I've checked the
> wiki and found nothing on how to use it, I've checked the javadoc and
> gotten some hints from the API, and I've checked the rhioConfig.xml and
> gotten some more hints.
>
> Here's what I believe to be true with respect to the following rhio
> definition:
> <rhio>
> <name>XDS.b RHIO</name>
>
> <publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain >
> <config>
> <registryId>XDS-B-Facade</registryId>
> <repositoryId>XDS-B-Facade</repositoryId>
> <xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
> <pixId>lswin10</pixId>
> <auditId>lswin10</auditId>
> </config>
> </rhio>
> 1. If I do a provide and register, then it will go to the repository
> named "XDS-B-Facade". What is this facade thing btw?
> 2. If I do a document query I can pass a boolean to use XCA or not. If
> I pass false, then the query will go to the registry named
> "XDS-B-Facade". If I pass true, then the query will go to the gateway
> named "GATEWAY_IBM".
>
> Those are the items I am reasonably sure of given what I've seen,
> correct me if I'm wrong. The part I'm confused about is when I want to
> do the "retrieve document set" operation. There is no boolean parameter
> to say whether I want to use the repository in my rhio to do the
> retrieve or whether I want to use the gateway. One thing I know about
> this from XDS.b is that when I do "retrieve document set", the bridge
> uses the "repository unique id" parameter to search the entire
> rhioConfig.xml (regardless of if the repository is defined in my rhio or
> not) and if it find such a repository with that id, it then issues the
> retrieve command to the url specified in that repository configuration.
>
> So, if I had to guess, I would think that if the document query returned
> a homeCommunityId and I faithfully passed that homeCommunityId along to
> the "retrieve document set" command that the bridge would see that field
> is not blank AND that I have a gateway specified in my rhio's
> configuration. Therefore the bridge would know to issue the "retrieve
> document set" to the gateway instead of to one of my repositories. Is
> that true or am I way off?
>
> thanks,
> Jesse
>
Re: XCA on the bridge [message #42272 is a reply to message #42237] Wed, 26 March 2008 20:05 Go to previous message
Jesse Pangburn is currently offline Jesse PangburnFriend
Messages: 166
Registered: July 2009
Senior Member
Hi Matt,
Great, thanks for the thorough explanation. It was as I hoped, but your
explanation leaves no room for any doubts or confusion! You might want to
copy this explanation (perhaps leaving out my questions and guessing for
readability) into the wiki under the empty section about XCA. You could
pretty much copy it verbatim I'd say.

Anyway, I'm talking to the HXTI guys who have an XCA gateway and I'm
hoping to play around with this and see what happens. Right now I'm
waiting on them to supply their public URLs. Assuming I get those in the
near future, I'll post back here about my results.

thanks,
Jesse

Matthew Davis wrote:

> Hey Jesse,

> Ummm, I think "highly experimental" is probably the way to put it right
> now. Basically it was never tested, although I think Sage might've tried
> to use it @ HIMSS. So much of our testing is dependent on IBM
> infrastructure systems and the IBM XCA gateways didn't end up happening,
> so as a result we never got a chance to fully test out our XCA
> implementation. We also never had a chance to test it @ Connectathon
> either.


> Let me explain XCA in OHF first and that'll answer a couple of your
> questions:

> 1. Straight from the XDS.b Consumer: It *SHOULD* work without a
> problem. There is the requirement of the "copy over" of the homeId /
> homeCommunityId into queries and retrieves, which is up to the
> implementor to handle. The general rule should be - if you see a
> homeCommunityId come back from a query response, all further query
> responses relating to that document ID should contain it. Also, any
> retrieves on that document ID should contain it.

> The XDS.b Consumer's retrieveDocumentSet method contains an algorithm to
> determine "where" to send each retrieve request and aggregate the
> responses. The way the algorithm works is.. in the first condition, if
> a RetrieveDocumentRequest contains a homeCommunityId, it *ALWAYS* will
> get sent to the initiating gateway set in the XDS Consumer -
> setInitiatingGateway(java.net.URI). The base assumption is you only
> have 1 initiating gateway per affinity domain and I think it's safe to
> assume that.

> 2. The Bridge, at least in the fully untested world, implements this
> paradigm directly. In the Retrieve Document Set Bridge method, the
> Bridge calls Consumer.setInitiatingGatewayURI(java.net.URI) from the
> RHIO's XCA Gateway. The key again (as with the XDS Consumer) is that
> when you get a query response from the Bridge, if a homeCommunityId
> value is present in the XDSDocType, you must copy it over the XDSDocType
> [] sent in the RetrieveDocumentSetRequestType.


> Now, specifically for your questions:
> > 1. If I do a provide and register, then it will go to the repository
> > named "XDS-B-Facade". What is this facade thing btw?

> That is correct. P&R goes to the repository id set for the RHIO. Your
> discovery that it checks all repository unique ids is actually new as-of
> after Connectathon. Previously you had to define each repository in the
> list of repositories for a RHIO but that was cumbersome. The XDS.b
> Repository Facade was/is a simple Axis2 Web service I wrote early last
> fall to semantically check our XDS.b Consumer/Source implementation
> while the IBM XDS.b Repository was still under development. It just
> blindly accepted and acknowledged the request with a list :)

> > 2. If I do a document query I can pass a boolean to use XCA or not. If
> > I pass false, then the query will go to the registry named
> > "XDS-B-Facade". If I pass true, then the query will go to the gateway
> > named "GATEWAY_IBM".

> This is true. If "useXCA" is true, then the XDS Consumer uses the
> <storedQueryUrl> from the RHIO's <xcaGateway>. Otherwise it uses
> <storedQueryUrl> from the RHIO's <registry>.

> > The part I'm confused about is when I want to
> > do the "retrieve document set" operation. There is no boolean parameter
> > to say whether I want to use the repository in my rhio to do the
> > retrieve or whether I want to use the gateway.

> See 1 and 2 from me above. This is because of the built-in controls in
> the XDS Consumer. We had some go-arounds with IHE regarding the
> semantics of splitting requests up and having a retrieve document set
> request with mixed destinations (different repository unique ids,
> different home community ids, etc). Based on RHIO paradigms and
> assumptions set out by the author of XCA (from IBM), we decided that
> the "routing policy" that the XDS Consumer uses is that the home
> community id takes precedence...and if it is set in the request, then
> the request, regardless of repositoryUniqueId, gets routed through the
> initiating gateway.

> For the Bridge, this very explicitly means... if you set homeCommunityId
> in one of the XDSDocType items sent to retrieveDocumentSet, then that
> specific request will get routed to the <retrieveDocumentSet> URL set in
> the RHIO's <xcaGateway>. If there is no <xcaGateway> set for the RHIO,
> it will throw an error (or it'll give a partial success / failure). If
> homeCommunityId is not set, it'll iterate through the list of all XDS.b
> repositories in rhioConfig.xml in an attempt to resolve the
> repositoryUniqueId => URL mapping.


> > So, if I had to guess, I would think that if the document query returned
> > a homeCommunityId and I faithfully passed that homeCommunityId along to
> > the "retrieve document set" command that the bridge would see that field
> > is not blank AND that I have a gateway specified in my rhio's
> > configuration. Therefore the bridge would know to issue the "retrieve
> > document set" to the gateway instead of to one of my repositories. Is
> > that true or am I way off?

> Yep! That's exactly how it works. If you read XCA, you actually see
> that it is part of XDS - it is embedded and, essentially, XDS support
> implies XCA support. Much to our chagrin, to fully internalize support
> for XCA (and obfuscate it from the implementor) would require a greater
> level of intelligence on the Consumer's part and a level of statefulness
> that we do not want to introduce in the Bridge. As a result, it's
> dependent on a "copy over" paradigm where - if you see something (in
> this case, the homeCommunityId) - you must copy it over into further
> requests regarding that document.

> Hope this helps! The reason this never got documented all that well /
> acknowledged / tested really centers on the fact that IBM never built
> their XCA gateway. We'll be at EU Connectathon in a couple weeks,
> hopefully I'll get a chance to test XCA support further then.

> Thanks,
> -Matt



> Jesse Pangburn wrote:
>> Hi,
>> I'm wondering how XCA works with the bridge. Is it highly experimental
>> at this stage or you guys think it basically works? I've checked the
>> wiki and found nothing on how to use it, I've checked the javadoc and
>> gotten some hints from the API, and I've checked the rhioConfig.xml and
>> gotten some more hints.
>>
>> Here's what I believe to be true with respect to the following rhio
>> definition:
>> <rhio>
>> <name>XDS.b RHIO</name>
>>
>> <publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain >
>> <config>
>> <registryId>XDS-B-Facade</registryId>
>> <repositoryId>XDS-B-Facade</repositoryId>
>> <xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
>> <pixId>lswin10</pixId>
>> <auditId>lswin10</auditId>
>> </config>
>> </rhio>
>> 1. If I do a provide and register, then it will go to the repository
>> named "XDS-B-Facade". What is this facade thing btw?
>> 2. If I do a document query I can pass a boolean to use XCA or not. If
>> I pass false, then the query will go to the registry named
>> "XDS-B-Facade". If I pass true, then the query will go to the gateway
>> named "GATEWAY_IBM".
>>
>> Those are the items I am reasonably sure of given what I've seen,
>> correct me if I'm wrong. The part I'm confused about is when I want to
>> do the "retrieve document set" operation. There is no boolean parameter
>> to say whether I want to use the repository in my rhio to do the
>> retrieve or whether I want to use the gateway. One thing I know about
>> this from XDS.b is that when I do "retrieve document set", the bridge
>> uses the "repository unique id" parameter to search the entire
>> rhioConfig.xml (regardless of if the repository is defined in my rhio or
>> not) and if it find such a repository with that id, it then issues the
>> retrieve command to the url specified in that repository configuration.
>>
>> So, if I had to guess, I would think that if the document query returned
>> a homeCommunityId and I faithfully passed that homeCommunityId along to
>> the "retrieve document set" command that the bridge would see that field
>> is not blank AND that I have a gateway specified in my rhio's
>> configuration. Therefore the bridge would know to issue the "retrieve
>> document set" to the gateway instead of to one of my repositories. Is
>> that true or am I way off?
>>
>> thanks,
>> Jesse
>>
Re: XCA on the bridge [message #585275 is a reply to message #42145] Wed, 26 March 2008 19:21 Go to previous message
Matthew DavisFriend
Messages: 269
Registered: July 2009
Senior Member
Hey Jesse,

Ummm, I think "highly experimental" is probably the way to put it right
now. Basically it was never tested, although I think Sage might've tried
to use it @ HIMSS. So much of our testing is dependent on IBM
infrastructure systems and the IBM XCA gateways didn't end up happening,
so as a result we never got a chance to fully test out our XCA
implementation. We also never had a chance to test it @ Connectathon
either.


Let me explain XCA in OHF first and that'll answer a couple of your
questions:

1. Straight from the XDS.b Consumer: It *SHOULD* work without a
problem. There is the requirement of the "copy over" of the homeId /
homeCommunityId into queries and retrieves, which is up to the
implementor to handle. The general rule should be - if you see a
homeCommunityId come back from a query response, all further query
responses relating to that document ID should contain it. Also, any
retrieves on that document ID should contain it.

The XDS.b Consumer's retrieveDocumentSet method contains an algorithm to
determine "where" to send each retrieve request and aggregate the
responses. The way the algorithm works is.. in the first condition, if
a RetrieveDocumentRequest contains a homeCommunityId, it *ALWAYS* will
get sent to the initiating gateway set in the XDS Consumer -
setInitiatingGateway(java.net.URI). The base assumption is you only
have 1 initiating gateway per affinity domain and I think it's safe to
assume that.

2. The Bridge, at least in the fully untested world, implements this
paradigm directly. In the Retrieve Document Set Bridge method, the
Bridge calls Consumer.setInitiatingGatewayURI(java.net.URI) from the
RHIO's XCA Gateway. The key again (as with the XDS Consumer) is that
when you get a query response from the Bridge, if a homeCommunityId
value is present in the XDSDocType, you must copy it over the XDSDocType
[] sent in the RetrieveDocumentSetRequestType.


Now, specifically for your questions:
> 1. If I do a provide and register, then it will go to the repository
> named "XDS-B-Facade". What is this facade thing btw?

That is correct. P&R goes to the repository id set for the RHIO. Your
discovery that it checks all repository unique ids is actually new as-of
after Connectathon. Previously you had to define each repository in the
list of repositories for a RHIO but that was cumbersome. The XDS.b
Repository Facade was/is a simple Axis2 Web service I wrote early last
fall to semantically check our XDS.b Consumer/Source implementation
while the IBM XDS.b Repository was still under development. It just
blindly accepted and acknowledged the request with a list :)

> 2. If I do a document query I can pass a boolean to use XCA or not. If
> I pass false, then the query will go to the registry named
> "XDS-B-Facade". If I pass true, then the query will go to the gateway
> named "GATEWAY_IBM".

This is true. If "useXCA" is true, then the XDS Consumer uses the
<storedQueryUrl> from the RHIO's <xcaGateway>. Otherwise it uses
<storedQueryUrl> from the RHIO's <registry>.

> The part I'm confused about is when I want to
> do the "retrieve document set" operation. There is no boolean parameter
> to say whether I want to use the repository in my rhio to do the
> retrieve or whether I want to use the gateway.

See 1 and 2 from me above. This is because of the built-in controls in
the XDS Consumer. We had some go-arounds with IHE regarding the
semantics of splitting requests up and having a retrieve document set
request with mixed destinations (different repository unique ids,
different home community ids, etc). Based on RHIO paradigms and
assumptions set out by the author of XCA (from IBM), we decided that
the "routing policy" that the XDS Consumer uses is that the home
community id takes precedence...and if it is set in the request, then
the request, regardless of repositoryUniqueId, gets routed through the
initiating gateway.

For the Bridge, this very explicitly means... if you set homeCommunityId
in one of the XDSDocType items sent to retrieveDocumentSet, then that
specific request will get routed to the <retrieveDocumentSet> URL set in
the RHIO's <xcaGateway>. If there is no <xcaGateway> set for the RHIO,
it will throw an error (or it'll give a partial success / failure). If
homeCommunityId is not set, it'll iterate through the list of all XDS.b
repositories in rhioConfig.xml in an attempt to resolve the
repositoryUniqueId => URL mapping.


> So, if I had to guess, I would think that if the document query returned
> a homeCommunityId and I faithfully passed that homeCommunityId along to
> the "retrieve document set" command that the bridge would see that field
> is not blank AND that I have a gateway specified in my rhio's
> configuration. Therefore the bridge would know to issue the "retrieve
> document set" to the gateway instead of to one of my repositories. Is
> that true or am I way off?

Yep! That's exactly how it works. If you read XCA, you actually see
that it is part of XDS - it is embedded and, essentially, XDS support
implies XCA support. Much to our chagrin, to fully internalize support
for XCA (and obfuscate it from the implementor) would require a greater
level of intelligence on the Consumer's part and a level of statefulness
that we do not want to introduce in the Bridge. As a result, it's
dependent on a "copy over" paradigm where - if you see something (in
this case, the homeCommunityId) - you must copy it over into further
requests regarding that document.

Hope this helps! The reason this never got documented all that well /
acknowledged / tested really centers on the fact that IBM never built
their XCA gateway. We'll be at EU Connectathon in a couple weeks,
hopefully I'll get a chance to test XCA support further then.

Thanks,
-Matt



Jesse Pangburn wrote:
> Hi,
> I'm wondering how XCA works with the bridge. Is it highly experimental
> at this stage or you guys think it basically works? I've checked the
> wiki and found nothing on how to use it, I've checked the javadoc and
> gotten some hints from the API, and I've checked the rhioConfig.xml and
> gotten some more hints.
>
> Here's what I believe to be true with respect to the following rhio
> definition:
> <rhio>
> <name>XDS.b RHIO</name>
>
> <publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain >
> <config>
> <registryId>XDS-B-Facade</registryId>
> <repositoryId>XDS-B-Facade</repositoryId>
> <xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
> <pixId>lswin10</pixId>
> <auditId>lswin10</auditId>
> </config>
> </rhio>
> 1. If I do a provide and register, then it will go to the repository
> named "XDS-B-Facade". What is this facade thing btw?
> 2. If I do a document query I can pass a boolean to use XCA or not. If
> I pass false, then the query will go to the registry named
> "XDS-B-Facade". If I pass true, then the query will go to the gateway
> named "GATEWAY_IBM".
>
> Those are the items I am reasonably sure of given what I've seen,
> correct me if I'm wrong. The part I'm confused about is when I want to
> do the "retrieve document set" operation. There is no boolean parameter
> to say whether I want to use the repository in my rhio to do the
> retrieve or whether I want to use the gateway. One thing I know about
> this from XDS.b is that when I do "retrieve document set", the bridge
> uses the "repository unique id" parameter to search the entire
> rhioConfig.xml (regardless of if the repository is defined in my rhio or
> not) and if it find such a repository with that id, it then issues the
> retrieve command to the url specified in that repository configuration.
>
> So, if I had to guess, I would think that if the document query returned
> a homeCommunityId and I faithfully passed that homeCommunityId along to
> the "retrieve document set" command that the bridge would see that field
> is not blank AND that I have a gateway specified in my rhio's
> configuration. Therefore the bridge would know to issue the "retrieve
> document set" to the gateway instead of to one of my repositories. Is
> that true or am I way off?
>
> thanks,
> Jesse
>
Re: XCA on the bridge [message #585292 is a reply to message #42237] Wed, 26 March 2008 20:05 Go to previous message
Jesse Pangburn is currently offline Jesse PangburnFriend
Messages: 166
Registered: July 2009
Senior Member
Hi Matt,
Great, thanks for the thorough explanation. It was as I hoped, but your
explanation leaves no room for any doubts or confusion! You might want to
copy this explanation (perhaps leaving out my questions and guessing for
readability) into the wiki under the empty section about XCA. You could
pretty much copy it verbatim I'd say.

Anyway, I'm talking to the HXTI guys who have an XCA gateway and I'm
hoping to play around with this and see what happens. Right now I'm
waiting on them to supply their public URLs. Assuming I get those in the
near future, I'll post back here about my results.

thanks,
Jesse

Matthew Davis wrote:

> Hey Jesse,

> Ummm, I think "highly experimental" is probably the way to put it right
> now. Basically it was never tested, although I think Sage might've tried
> to use it @ HIMSS. So much of our testing is dependent on IBM
> infrastructure systems and the IBM XCA gateways didn't end up happening,
> so as a result we never got a chance to fully test out our XCA
> implementation. We also never had a chance to test it @ Connectathon
> either.


> Let me explain XCA in OHF first and that'll answer a couple of your
> questions:

> 1. Straight from the XDS.b Consumer: It *SHOULD* work without a
> problem. There is the requirement of the "copy over" of the homeId /
> homeCommunityId into queries and retrieves, which is up to the
> implementor to handle. The general rule should be - if you see a
> homeCommunityId come back from a query response, all further query
> responses relating to that document ID should contain it. Also, any
> retrieves on that document ID should contain it.

> The XDS.b Consumer's retrieveDocumentSet method contains an algorithm to
> determine "where" to send each retrieve request and aggregate the
> responses. The way the algorithm works is.. in the first condition, if
> a RetrieveDocumentRequest contains a homeCommunityId, it *ALWAYS* will
> get sent to the initiating gateway set in the XDS Consumer -
> setInitiatingGateway(java.net.URI). The base assumption is you only
> have 1 initiating gateway per affinity domain and I think it's safe to
> assume that.

> 2. The Bridge, at least in the fully untested world, implements this
> paradigm directly. In the Retrieve Document Set Bridge method, the
> Bridge calls Consumer.setInitiatingGatewayURI(java.net.URI) from the
> RHIO's XCA Gateway. The key again (as with the XDS Consumer) is that
> when you get a query response from the Bridge, if a homeCommunityId
> value is present in the XDSDocType, you must copy it over the XDSDocType
> [] sent in the RetrieveDocumentSetRequestType.


> Now, specifically for your questions:
> > 1. If I do a provide and register, then it will go to the repository
> > named "XDS-B-Facade". What is this facade thing btw?

> That is correct. P&R goes to the repository id set for the RHIO. Your
> discovery that it checks all repository unique ids is actually new as-of
> after Connectathon. Previously you had to define each repository in the
> list of repositories for a RHIO but that was cumbersome. The XDS.b
> Repository Facade was/is a simple Axis2 Web service I wrote early last
> fall to semantically check our XDS.b Consumer/Source implementation
> while the IBM XDS.b Repository was still under development. It just
> blindly accepted and acknowledged the request with a list :)

> > 2. If I do a document query I can pass a boolean to use XCA or not. If
> > I pass false, then the query will go to the registry named
> > "XDS-B-Facade". If I pass true, then the query will go to the gateway
> > named "GATEWAY_IBM".

> This is true. If "useXCA" is true, then the XDS Consumer uses the
> <storedQueryUrl> from the RHIO's <xcaGateway>. Otherwise it uses
> <storedQueryUrl> from the RHIO's <registry>.

> > The part I'm confused about is when I want to
> > do the "retrieve document set" operation. There is no boolean parameter
> > to say whether I want to use the repository in my rhio to do the
> > retrieve or whether I want to use the gateway.

> See 1 and 2 from me above. This is because of the built-in controls in
> the XDS Consumer. We had some go-arounds with IHE regarding the
> semantics of splitting requests up and having a retrieve document set
> request with mixed destinations (different repository unique ids,
> different home community ids, etc). Based on RHIO paradigms and
> assumptions set out by the author of XCA (from IBM), we decided that
> the "routing policy" that the XDS Consumer uses is that the home
> community id takes precedence...and if it is set in the request, then
> the request, regardless of repositoryUniqueId, gets routed through the
> initiating gateway.

> For the Bridge, this very explicitly means... if you set homeCommunityId
> in one of the XDSDocType items sent to retrieveDocumentSet, then that
> specific request will get routed to the <retrieveDocumentSet> URL set in
> the RHIO's <xcaGateway>. If there is no <xcaGateway> set for the RHIO,
> it will throw an error (or it'll give a partial success / failure). If
> homeCommunityId is not set, it'll iterate through the list of all XDS.b
> repositories in rhioConfig.xml in an attempt to resolve the
> repositoryUniqueId => URL mapping.


> > So, if I had to guess, I would think that if the document query returned
> > a homeCommunityId and I faithfully passed that homeCommunityId along to
> > the "retrieve document set" command that the bridge would see that field
> > is not blank AND that I have a gateway specified in my rhio's
> > configuration. Therefore the bridge would know to issue the "retrieve
> > document set" to the gateway instead of to one of my repositories. Is
> > that true or am I way off?

> Yep! That's exactly how it works. If you read XCA, you actually see
> that it is part of XDS - it is embedded and, essentially, XDS support
> implies XCA support. Much to our chagrin, to fully internalize support
> for XCA (and obfuscate it from the implementor) would require a greater
> level of intelligence on the Consumer's part and a level of statefulness
> that we do not want to introduce in the Bridge. As a result, it's
> dependent on a "copy over" paradigm where - if you see something (in
> this case, the homeCommunityId) - you must copy it over into further
> requests regarding that document.

> Hope this helps! The reason this never got documented all that well /
> acknowledged / tested really centers on the fact that IBM never built
> their XCA gateway. We'll be at EU Connectathon in a couple weeks,
> hopefully I'll get a chance to test XCA support further then.

> Thanks,
> -Matt



> Jesse Pangburn wrote:
>> Hi,
>> I'm wondering how XCA works with the bridge. Is it highly experimental
>> at this stage or you guys think it basically works? I've checked the
>> wiki and found nothing on how to use it, I've checked the javadoc and
>> gotten some hints from the API, and I've checked the rhioConfig.xml and
>> gotten some more hints.
>>
>> Here's what I believe to be true with respect to the following rhio
>> definition:
>> <rhio>
>> <name>XDS.b RHIO</name>
>>
>> <publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain >
>> <config>
>> <registryId>XDS-B-Facade</registryId>
>> <repositoryId>XDS-B-Facade</repositoryId>
>> <xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
>> <pixId>lswin10</pixId>
>> <auditId>lswin10</auditId>
>> </config>
>> </rhio>
>> 1. If I do a provide and register, then it will go to the repository
>> named "XDS-B-Facade". What is this facade thing btw?
>> 2. If I do a document query I can pass a boolean to use XCA or not. If
>> I pass false, then the query will go to the registry named
>> "XDS-B-Facade". If I pass true, then the query will go to the gateway
>> named "GATEWAY_IBM".
>>
>> Those are the items I am reasonably sure of given what I've seen,
>> correct me if I'm wrong. The part I'm confused about is when I want to
>> do the "retrieve document set" operation. There is no boolean parameter
>> to say whether I want to use the repository in my rhio to do the
>> retrieve or whether I want to use the gateway. One thing I know about
>> this from XDS.b is that when I do "retrieve document set", the bridge
>> uses the "repository unique id" parameter to search the entire
>> rhioConfig.xml (regardless of if the repository is defined in my rhio or
>> not) and if it find such a repository with that id, it then issues the
>> retrieve command to the url specified in that repository configuration.
>>
>> So, if I had to guess, I would think that if the document query returned
>> a homeCommunityId and I faithfully passed that homeCommunityId along to
>> the "retrieve document set" command that the bridge would see that field
>> is not blank AND that I have a gateway specified in my rhio's
>> configuration. Therefore the bridge would know to issue the "retrieve
>> document set" to the gateway instead of to one of my repositories. Is
>> that true or am I way off?
>>
>> thanks,
>> Jesse
>>
Previous Topic:XCA on the bridge
Next Topic:OHF Bridge 0.3.0 problems
Goto Forum:
  


Current Time: Fri Nov 16 08:31:28 GMT 2018

Powered by FUDForum. Page generated in 0.02130 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top