WSDLs for QED

From IHE Wiki
Jump to navigation Jump to search

Appendix E - WSDLs for QED

The WSDL for QED transactions PCC-1, PCC-2, PCC-3, PCC-4 and PCC-5 are identical except for the actor name. Simply substitute one the following values for the string ACTOR in the following WSDL example.

Transaction Actor Name
PCC-1 VitalSignsDataRepository
PCC-2 ProblemAndAllergyDataRepository
PCC-3 VitalSignsDataRepository
PCC-4 MedicationDataRepository
PCC-5 ImmunizationDataRepository
<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  HL7-WSP200) WSDL documents SHOULD implement a specific Application Role
  This WSDL implements a ACTOR application role.
  
  HL7-WSP201) The attribute /wsdl:definitions/@name SHOULD be {Application Role Artifact Id}
  This is an IHE Actor, and conforms to the IHE Convention, using the Actor Name.

  Interactions
    Query Care Record Event Profile Query (QUPC_IN043100UV)
    Query Care Record Event Profile Query Response (QUPC_IN043200UV)
    General Query Activate Query Continue (QUPC_IN000005UV)
    General Query Query Cancel (QUPC_IN000003UV)
  
  HL7-WSP202) The targetNamespace of the WSDL MUST be “urn:hl7-org:v3”.
  It is.
  
  HL7-WS203) The WSDL MUST include XML Schema Definitions for each supported Interaction.
  It does, but it is not clear that this is best, due to the overhead this causes when creating services and proxies from
  the WSDL.  Perhaps the contract should be defined using the XML Schema definitions, but a lighter weight WSDL should
  also be provided for engineering use.
  
  HL7-WSP208) WSDL messages for Interactions SHOULD use wsdl:operation/wsdl:input/@wsa:Action = "urn:hl7-org:v3:{Interaction_Artifact_Id}"
  It doesn't.  Instead the wsa:Action uses 
  HL7-WSP209) WSDL messages for Accept Acknowledgement SHOULD use wsdl:operation/wsdl:input/@wsa:Action = "urn:hl7-org:v3:AcceptAcknowledgement".
  
  HL7-WSP210) WSDL messages for Application Level Acknowledgement SHOULD use wsdl:operation/wsdl:input/@wsa:Action = "urn:hl7-org:v3:ApplicationAcknowledgement".
  
-->
<definitions name="ACTOR" targetNamespace="urn:hl7-org:v3" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:hl7="urn:hl7-org:v3" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <types>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" xmlns:hl7="urn:hl7-org:v3">
      <!-- Query Care Record Event Profile Query -->
      <xsd:include schemaLocation="processable/QUPC_IN043100UV.xsd"/>
      <!-- Query Care Record Event Profile Query Response -->
      <xsd:include schemaLocation="processable/QUPC_IN043200UV.xsd"/>
      <!-- General Query Activate Query Continue -->
      <xsd:include schemaLocation="processable/QUPC_IN000005UV.xsd"/>
      <!-- General Query Query Cancel -->
      <xsd:include schemaLocation="processable/QUPC_IN000003UV.xsd"/>
    </xsd:schema>
  </types>
  <!-- HL7-WSP100) The top-level element of the HL7 message MUST be embedded as the only child of 
         the soap:Body element. The name of the top-level element (the one directly under the soap:Body element) 
         MUST be {Interaction Artifact Id}.
    
         Rather than using {Interaction Artifact Id}_Message, we are using human readable names for the message 
         parts.  These human readable names come from the HL7 names for the message.  The interaction artifact Ids are 
         used as the element names.
  -->
  <message name="QUPC_IN043100UV_Message">
    <part element="hl7:QUPC_IN043100UV" name="Body"/>
  </message>
  <message name="QUPC_IN043200UV_Message">
    <part element="hl7:QUPC_IN043200UV" name="Body"/>
  </message>
  <message name="QUQI_IN000003UV01_Message">
    <part element="hl7:QUQI_IN000003UV01" name="Body"/>
  </message>


  <portType name="ACTOR_PortType">
    <!-- Send Message with Immediate Response (CP002): this communication maps to a Request/Response MEP. 
           The request and response messages can be correlated both at the Messaging Infrastructure layer and at the application level.
    -->
    <!-- Rather than using {NAME}_{Interaction Artifact Id}, we are using human readable names for the operations.  These 
           human readable names are derived from the HL7 names for the message. -->
    <operation name="ACTOR_QUPC_IN043100UV">
      <input message="hl7:QUPC_IN043100UV_Message" wsa:Action="urn:hl7-org:v3:GetCareRecordProfileQuery"/>
      <output message="hl7:QUPC_IN043200UV_Message" wsa:Action="urn:hl7-org:v3:GetCareRecordProfileQueryResponse"/>
    </operation>
    <operation name="ACTOR_QUQI_IN000003UV01">
      <input message="hl7:QUQI_IN000003UV01_Message" wsa:Action="urn:hl7-org:v3:GeneralQueryActivateQueryContinue"/>
      <output message="hl7:QUPC_IN043200UV_Message" wsa:Action="urn:hl7-org:v3:GetCareRecordProfileQueryResponse"/>
    </operation>
  </portType>

  <binding name="ACTOR_Binding" type="hl7:ACTOR_PortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <!-- Vitals -->
    <operation name="ACTOR_QUPC_IN043100UV">
      <soap:operation soapAction="urn:hl7-org:v3:GetCareRecordProfileQueryQuery"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
    <operation name="ACTOR_QUQI_IN000003UV01">
      <soap:operation soapAction="urn:hl7-org:v3:GeneralQueryActivateQueryContinue"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>

  <service name="ACTOR_Service">
    <port binding="hl7:ACTOR_Binding" name="ACTOR_Port">
      <soap:address location="http://servicelocation/"/>
    </port>
  </service>
</definitions>

This file, along with the necessary HL7 Schemas, and some skelatal examples can all be found on the Patient Care Coordination FTP site: here