Appendix A: Web Service Definition for Retrieve Specific Information for Display and Retrieve Document for Display Transaction
The following is an example WSDL definition of web services used in transactions [ITI-11] and [ITI-12]. This code is provided as an example and is not intended to replace the formal specification of transactions [ITI-11] and [ITI-12] in Volume 2. Also, the definitions of summaryRequestType, listRequestType and contentType shall correspond to the capabilities of the Information Source.
<?xml version="1.0" encoding="utf8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://rsna.org/ihe/IHERetrieveForDisplay"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://rsna.org/ihe/IHERetrieveForDisplay"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- Defines the types available for the parameters -->
<!-- May also include the return type definitions -->
<types>
<s:schema elementFormDefault="qualified" targetNamespace="http://rsna.org/ihe/IHERetrieveForDisplay">
<!-- Add any items that control the returned values list or type here -->
<!-- Add or remove items in the actual supplied WSDL to show the available types. -->
<s:simpleType name="summaryRequestType">
<s:restriction base="s:string">
<s:enumeration value="SUMMARY" />
<s:enumeration value="SUMMARY-RADIOLOGY" />
<s:enumeration value="SUMMARY-CARDIOLOGY" />
<s:enumeration value="SUMMARY-LABORATORY" />
<s:enumeration value="SUMMARY-SURGERY" />
<s:enumeration value="SUMMARY-EMERGENCY" />
<s:enumeration value="SUMMARY-DISCHARGE" />
<s:enumeration value="SUMMARY-ICU" />
</s:restriction>
</s:simpleType>
<s:simpleType name="listRequestType">
<s:restriction base="s:string">
<s:enumeration value="LIST-ALLERGIES" />
<s:enumeration value="LIST-MEDS" />
</s:restriction>
</s:simpleType>
<!-- Please list all content types available, and remove those not available. -->
<s:simpleType name="contentType">
<s:restriction base="s:string">
<s:enumeration value="text/html" />
</s:restriction>
</s:simpleType>
<!-- Indicates that this item is a returned rows restriction -->
<s:simpleType name="ReturnedResultCount" type="s:positiveInteger" />
<!-- Please use the string "Search" as a prefix for all search criteria, and list below -->
<!-- Indicates that this item is a search string -->
<s:simpleType name="SearchString" type="s:string" />
</s:schema>
</types>
<message name="RetrieveSummaryInfoHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<part name="requestType" type="summaryRequestType" />
<part name="patientID" type="SearchString" />
<part name="lowerDateTime" type="s:dateTime" />
<part name="upperDateTime" type="s:dateTime" />
<part name="mostRecentResults" type="ReturnedResultCount" />
</message>
<message name="RetrieveSummaryInfoHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s0:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s0:string" />
</message>
<message name="RetrieveListInfoHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<part name="requestType" type="listRequestType" />
<part name="patientID" type="SearchString" />
</message>
<message name="RetrieveListInfoHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s0:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s0:string" />
</message>
<message name="RetrieveDocumentHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<!-- It is recommended that one of the sub-types of SearchUID is chosen here -->
<!-- Especially if SearchStudyUID is allowed, then the display client can know that -->
<!-- it is permissible to use a dicom uid here -->
<part name="documentUID" type="SearchString" />
<part name="contentType" type="contentType" />
</message>
<message name="RetrieveDocumentHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s:string" />
</message>
<portType name="IHERetrieveForDisplayHttpGet">
<operation name="RetrieveSummaryInfo">
<input message="s0:RetrieveSummaryInfoHttpGetIn" />
<output message="s0:RetrieveSummaryInfoHttpGetOut" />
</operation>
<operation name="RetrieveListInfo">
<input message="s0:RetrieveListInfoHttpGetIn" />
<output message="s0:RetrieveListInfoHttpGetOut" />
</operation>
<operation name="RetrieveDocument">
<input message="s0:RetrieveDocumentHttpGetIn" />
<output message="s0:RetrieveDocumentHttpGetOut" />
</operation>
</portType>
<binding name="IHERetrieveForDisplayHttpGet" type="s0:IHERetrieveForDisplayHttpGet">
<http:binding verb="GET" />
<operation name="RetrieveSummaryInfo">
<http:operation location="/IHERetrieveSummaryInfo" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:content type="text/html" />
</output>
</operation>
<operation name="RetrieveListInfo">
<http:operation location="/IHERetrieveListInfo" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:content type="text/html" />
</output>
</operation>
<operation name="RetrieveDocument">
<http:operation location="/IHERetrieveDocument" />
<input>
<http:urlEncoded />
</input>
<!-- The type of the output should be restricted on a per-server basis to the types -->
<!-- actually provided. -->
<output>
<mime:content type="text/html" />
<mime:content type="application/x-hl7-cda-level-one+xml" />
<mime:content type="application/pdf" />
<mime:content type="image/jpeg" />
</output>
</operation>
</binding>
<!-- Bind the actual service here -->
<service name="IHERetrieveForDisplay">
<port name="IHERetrieveForDisplayHttpGet" binding="s0:IHERetrieveForDisplayHttpGet">
<http:address location="http://localhost/" />
</port>
</service>
<?xml version="1.0" encoding="utf8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://rsna.org/ihe/IHERetrieveForDisplay"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://rsna.org/ihe/IHERetrieveForDisplay"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- Defines the types available for the parameters -->
<!-- May also include the return type definitions -->
<types>
<s:schema elementFormDefault="qualified" targetNamespace="http://rsna.org/ihe/IHERetrieveForDisplay">
<!-- Add any items that control the returned values list or type here -->
<!-- Add or remove items in the actual supplied WSDL to show the available types. -->
<s:simpleType name="summaryRequestType">
<s:restriction base="s:string">
<s:enumeration value="SUMMARY" />
<s:enumeration value="SUMMARY-RADIOLOGY" />
<s:enumeration value="SUMMARY-CARDIOLOGY" />
<s:enumeration value="SUMMARY-LABORATORY" />
<s:enumeration value="SUMMARY-SURGERY" />
<s:enumeration value="SUMMARY-EMERGENCY" />
<s:enumeration value="SUMMARY-DISCHARGE" />
<s:enumeration value="SUMMARY-ICU" />
<s:enumeration value="SUMMARY-RX" />
</s:restriction>
</s:simpleType>
<s:simpleType name="listRequestType">
<s:restriction base="s:string">
<s:enumeration value="LIST-ALLERGIES" />
<s:enumeration value="LIST-MEDS" />
</s:restriction>
</s:simpleType>
<!-- Please list all content types available, and remove those not available. -->
<s:simpleType name="contentType">
<s:restriction base="s:string">
<s:enumeration value="text/html" />
</s:restriction>
</s:simpleType>
<!-- Indicates that this item is a returned rows restriction -->
<s:simpleType name="ReturnedResultCount" type="s:positiveInteger" />
<!-- Please use the string "Search" as a prefix for all search criteria, and list below -->
<!-- Indicates that this item is a search string -->
<s:simpleType name="SearchString" type="s:string" />
</s:schema>
</types>
<message name="RetrieveSummaryInfoHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<part name="requestType" type="summaryRequestType" />
<part name="patientID" type="SearchString" />
<part name="lowerDateTime" type="s:dateTime" />
<part name="upperDateTime" type="s:dateTime" />
<part name="mostRecentResults" type="ReturnedResultCount" />
</message>
<message name="RetrieveSummaryInfoHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s0:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s0:string" />
</message>
<message name="RetrieveListInfoHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<part name="requestType" type="listRequestType" />
<part name="patientID" type="SearchString" />
</message>
<message name="RetrieveListInfoHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s0:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s0:string" />
</message>
<message name="RetrieveDocumentHttpGetIn">
<!-- Add other parameters here if they are available, using types defined above. -->
<!-- It is recommended that one of the sub-types of SearchUID is chosen here -->
<!-- Especially if SearchStudyUID is allowed, then the display client can know that -->
<!-- it is permissible to use a dicom uid here -->
<part name="documentUID" type="SearchString" />
<part name="contentType" type="contentType" />
</message>
<message name="RetrieveDocumentHttpGetOut">
<!-- If a complex type is defined for the return value, then it is suggested that -->
<!-- it be used here instead of s:string. If a complex type is allowed as one -->
<!-- of the options, but an arbitrarily formatted string is also allowed, then create -->
<!-- a union type here that allows either option. -->
<part name="Body" element="s:string" />
</message>
<portType name="IHERetrieveForDisplayHttpGet">
<operation name="RetrieveSummaryInfo">
<input message="s0:RetrieveSummaryInfoHttpGetIn" />
<output message="s0:RetrieveSummaryInfoHttpGetOut" />
</operation>
<operation name="RetrieveListInfo">
<input message="s0:RetrieveListInfoHttpGetIn" />
<output message="s0:RetrieveListInfoHttpGetOut" />
</operation>
<operation name="RetrieveDocument">
<input message="s0:RetrieveDocumentHttpGetIn" />
<output message="s0:RetrieveDocumentHttpGetOut" />
</operation>
</portType>
<binding name="IHERetrieveForDisplayHttpGet" type="s0:IHERetrieveForDisplayHttpGet">
<http:binding verb="GET" />
<operation name="RetrieveSummaryInfo">
<http:operation location="/IHERetrieveSummaryInfo" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:content type="text/html" />
</output>
</operation>
<operation name="RetrieveListInfo">
<http:operation location="/IHERetrieveListInfo" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:content type="text/html" />
</output>
</operation>
<operation name="RetrieveDocument">
<http:operation location="/IHERetrieveDocument" />
<input>
<http:urlEncoded />
</input>
<!-- The type of the output should be restricted on a per-server basis to the types -->
<!-- actually provided. -->
<output>
<mime:content type="text/html" />
<mime:content type="application/x-hl7-cda-level-one+xml" />
<mime:content type="application/pdf" />
<mime:content type="image/jpeg" />
</output>
</operation>
</binding>
<!-- Bind the actual service here -->
<service name="IHERetrieveForDisplay">
<port name="IHERetrieveForDisplayHttpGet" binding="s0:IHERetrieveForDisplayHttpGet">
<http:address location="http://localhost/" />
</port>
</service>