Question
Menno Voerman · Feb 11, 2021

Usage of ?CfgItem= in class EnsLib.HL7.Service.HTTPService

Hi All,

I hope someone can help me with the following, it's about the usage of the class EnsLib.HL7.Service.HTTPService.

Working situation right know.

In IIS we've got a site configured who is dealing with the client certificate, etc and redirect the full request to http://localhost/csp/healthshare/NAMEPSACE/EnsLib.HL7.Service.HTTPServic... and the web gateway redirects the request to Business Service 'EnsLib.HL7.Service.HTTPService.cls'.

Preferred situation:

We would like to have multiple available endpoints per namespace. According the documentation of the class 'EnsLib.HL7.Service.HTTPService' this can be done with (background in green is the current situation):

A service to receive HL7v2 messages sent via HTTP. Can use a HTTP.InboundAdapter listener, or the standard CSP service mechanism, or both.

In order for the CSP mechanism to work, Web Services derived from this class must be configured either with

1: their configuration name the same as their class name,

2: or the invoking URL must include ?CfgItem= giving the config item name,

3: or using a CSP application with a DispatchClass configured and the config item name as the next URL piece after the application name.

For the options 2 and 3 above I can't figure out how I can configure this.

Can someone help me with the correct url if using 'CfgItem=' or maybe there's is somewhere a good CSP application example available?

$ZV: IRIS for Windows (x86-64) 2020.1 (Build 215U) Mon Mar 30 2020 20:14:33 EDT
Product version:
HealthShare 2020.1
00
2 0 2 84

Replies

Hello, 

In order to use the Web Gateway to dispatch requests to an HTTP Service (such as EnsLib.HL7.Service.HTTPService), we need to have a way for the CSP system to know which Service to dispatch the request to. This works by default if the name of the Service is the same as the class name; in this case CSP can just use the class name in the URL to find the configuration item. It sounds like you already have this working. 

If you have multiple Services in the same production using the same class we need a mechanism to distinguish between them. This can be accomplished using the CfgItem URL parameter. Let's say you have two Services using the "EnsLib.HL7.Service.HTTPService" class, named "HL7ServiceA" and "HL7ServiceB". You can distinguish between them by making requests to the following URLs:

/csp/healthshare/NAMESPACE/EnsLib.HL7.Service.HTTPService.cls?CfgItem=HL7ServiceA

/csp/healthshare/NAMESPACE/EnsLib.HL7.Service.HTTPService.cls?CfgItem=HL7ServiceB

Also note that, in order for any of this to work, the "Enable Standard Requests" setting needs to be enabled for the adapter for each of the Services:

https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EH...

I hope this helps.

Regards,

Sean Klingensmith

Hello Sean,

Great, this helps me a lot. I've got a working situation right now. I think the mistake that I made is that I add .cls after the name of the service.

Thanks.

Menno