Setting up EnsLib.ITK.AdapterKit.Operation.SOAPOperation to communicate to ITK endpoint.
HealShare 2017
Hi dev community,
I am currently working on an interface that needs to communicate to a SOAP/ITK endpoint.
I am using the EnsLib.ITK.AdapterKit.Operation.SOAPOperation to interface with an ITK
service, but it is proving to be more complex than originally expected to set up the web client
against that particular end-point since I haven't been provided with a WSDL from ITK service side as
the vendor state they are following the ITK standard and no WSDLs are needed.
I have set up an EnsLib.ITK.AdapterKit.Operation.SOAPOperation within Health Share production and
we are currently trying to fire some test messages (I am able to send ITK/SOAP requests via
POSTMAN successfully, and I would like to replicate the same behavior now from the ITK operation).
The first blocking stone I am finding is in one of the config settings for the ITK operation:
Web Service Client Class (which has to be created via the SOAP client Wizard Add-in), as it
currently stands I don't have any WSDL to generate the web client/proxy classes as I normally
do with a usual SOAP web service.
I'd like to know if a Web Service Client Class for this particular interface is ultimately
needed, and/or if there might be any work around to achieve this.
The second blocker is within the ITK message test utility, since no WDSL has been provided I therefore
need to reconstruct the ITK request message from scratch, it looks as follows (I have removed some
unnecessary XML elements for clarity and with the intention of showing only relevant fields):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soap:Header>
</soap:Header>
<soap:Body>
<itk:DistributionEnvelope
xmlns:itk="urn:nhs-itk:ns:201005">
<itk:header service="urn:nhs-itk:services:201005:SendCDADocument-v2-0">
<itk:manifest count="1">
<itk:manifestitem mimetype="text/xml"
id="uuid_0D67CB1B-F713-4D28-8BFF-70E1A971398D" profileid="urn:nhs-en:profile:nonCoded
CDADocument-v2-0" />
</itk:manifest>
</itk:header>
<itk:payloads count="1">
<itk:payload id="uuid_0D67CB1B-F713-4D28-8BFF-70E1A971398D">
<ClinicalDocument xmlns="urn:hl7-org:v3">
<!-- This is the clinical document that contains meaningful payload for the business -->
</ClinicalDocument>
</itk:payload>
</itk:payloads>
</itk:DistributionEnvelope>
</soap:Body>
</soap:Envelope>
With a normal SOAP interface I would have the classes for request/response messages generated
after importing the WSDL, for this particular case I will need to generate an ITK payload readily
available to the ITK.SOAP.Operation so we can fire the request towards the ITK service.
When I open the TEST operation utility from the production we need to input the following fields,
but there is no field for the ITK payload:
Request message data type: EnsLib.ITK.AdapterKit.Request
ServiceName, IsResponse (boolean), RelatesToMessageId, PartialPhysicalURL and PartialLogicalURL
Any guidelines on what is the best practice to follow to achieve this?
I understand this is a very particular issue and it is more a query to clarify how to work with
ITK operations, therefore any help will be much appreciated, I have checked the documentation
already and these two things are still a bit obscure on my side.
Thanks.
Hi Arun,
Looks like the test form doesn't support the payload property type.
You will have more luck creating the request object from the command line and then calling the test service, something along these lines...
You will need to create an instance of a stream object and assign it to the Stream property of the request object.
If you don't have a WSDL then you could try contacting the TRUD for ITK documentation...
https://isd.digital.nhs.uk/trud3/user/guest/group/0/pack/30
There is one tip that I use when I don't have a WSDL. I take an example XML message and create an XSD for it, there are online generators that can help you do this, such as this one here...
https://www.freeformatter.com/xsd-generator.html
You can then paste the XSD into the XML Schema Wizard found in Studio > Tools > Add-Ins > Add-Ins, this will generate a class that you can use as your request object.
Sean.