/// <summary> /// Perform a identifier search on the provider search service. /// </summary> /// <param name="request"> /// The search criteria. The following fields are expected: /// <list type="bullet"> /// <item><description>hpiiNumber (Mandatory)</description></item> /// </list> /// All other fields are to be null. /// </param> /// <returns> /// A response instance containing the result of the search: /// <list type="bullet"> /// <item><description>serviceMessages</description></item> /// <item> /// <description><b>individualProviderDirectoryEntries</b> /// <list type="bullet"> /// <item><description>hpiiNumber</description></item> /// <item><description>personalDetails</description></item> /// <item><description>individualName</description></item> /// <item><description>address</description></item> /// <item><description>electronicCommunication</description></item> /// <item><description>providerType</description></item> /// <item> /// <description><b>linkedOrganisations</b> /// <list type="bullet"> /// <item><description>hpioNumber</description></item> /// <item><description>organisationName</description></item> /// <item><description>address</description></item> /// </list> /// </description> /// </item> /// <item><description>additionalComments</description></item> /// <item><description>priorityNumber</description></item> /// </list> /// </description> /// </item> /// </list> /// </returns> public searchHIProviderDirectoryForIndividualResponse IdentifierSearch(searchHIProviderDirectoryForIndividual request) { Validation.ValidateArgumentRequired("request.hpiiNumber", request.hpiiNumber); Validation.ValidateArgumentNotAllowed("request.australianAddressCriteria", request.australianAddressCriteria); Validation.ValidateArgumentNotAllowed("request.familyName", request.familyName); Validation.ValidateArgumentNotAllowed("request.givenName", request.givenName); Validation.ValidateArgumentNotAllowed("request.internationalAddressCriteria", request.internationalAddressCriteria); Validation.ValidateArgumentNotAllowed("request.providerSpecialisation", request.providerSpecialisation); Validation.ValidateArgumentNotAllowed("request.providerSpecialty", request.providerSpecialty); Validation.ValidateArgumentNotAllowed("request.providerTypeCode", request.providerTypeCode); Validation.ValidateArgumentNotAllowed("request.sexSpecified", request.sexSpecified); return(HISearch(request)); }
/// <summary> /// Perform the service call. /// </summary> /// <param name="request">The search criteria in a searchHIProviderDirectoryForIndividual object.</param> /// <returns>The search results in a searchHIProviderDirectoryForIndividualResponse object.</returns> private searchHIProviderDirectoryForIndividualResponse HISearch(searchHIProviderDirectoryForIndividual request) { searchHIProviderDirectoryForIndividualRequest envelope = new searchHIProviderDirectoryForIndividualRequest(); envelope.searchHIProviderDirectoryForIndividual = request; envelope.product = product; envelope.user = user; envelope.hpio = hpio; envelope.signature = new SignatureContainerType(); envelope.timestamp = new TimestampType() { created = DateTime.Now, expires = DateTime.Now.AddDays(30), expiresSpecified = true }; // Set LastSoapRequestTimestamp LastSoapRequestTimestamp = envelope.timestamp; searchHIProviderDirectoryForIndividualResponse1 response1 = null; try { response1 = providerSearchHIProviderDirectoryForIndividualClient.searchHIProviderDirectoryForIndividual(envelope); } catch (Exception ex) { // Catch generic FaultException and call helper to throw a more specific fault // (FaultException<ServiceMessagesType> FaultHelper.ProcessAndThrowFault <ServiceMessagesType>(ex); } if (response1 != null && response1.searchHIProviderDirectoryForIndividualResponse != null) { return(response1.searchHIProviderDirectoryForIndividualResponse); } else { throw new ApplicationException(Properties.Resources.UnexpectedServiceResponse); } }
/// <summary> /// Perform a demographic details search on the provider search service. /// </summary> /// <param name="request"> /// The search criteria. The following fields can be provided: /// <list type="bullet"> /// <item><description>givenName (Optional)</description></item> /// <item><description>familyName (Conditional)</description></item> /// <item><description>sex (Optional)</description></item> /// <item><description>providerTypeCode (Optional)</description></item> /// <item><description>providerSpecialty (Optional)</description></item> /// <item><description>providerSpecialisation (Optional)</description></item> /// <item> /// <description><b>australianAddressCriteria</b> (Conditional) /// <list type="bullet"> /// <item> /// <description><b>unitGroup</b> (Optional) /// <list type="bullet"> /// <item><description>unitType (Conditional)</description></item> /// <item><description>unitNumber (Conditional)</description></item> /// </list> /// </description> /// </item> /// <item> /// <description><b>levelGroup</b> (Optional) /// <list type="bullet"> /// <item><description>levelType (Conditional)</description></item> /// <item><description>levelNumber (Optional)</description></item> /// </list> /// </description> /// </item> /// <item><description>addressSiteName (Optional)</description></item> /// <item><description>streetNumber (Optional)</description></item> /// <item><description>lotNumber (Optional)</description></item> /// <item><description>streetName (Optional)</description></item> /// <item><description>streetType (Conditional on if streetTypeSpecified is set to true)</description></item> /// <item><description>streetTypeSpecified (Mandatory)</description></item> /// <item><description>streetSuffix (Conditional on if streetSuffixSpecified is set to true)</description></item> /// <item><description>streetSuffixSpecified (Mandatory)</description></item> /// <item> /// <description><b>postalDeliveryGroup</b> (Optional) /// <list type="bullet"> /// <item><description>deliveryType (Mandatory)</description></item> /// <item><description>deliveryNumber (Optional)</description></item> /// </list> /// </description> /// </item> /// <item><description>unstructuredAddressLine (Conditional)</description></item> /// <item><description>suburb (Mandatory)</description></item> /// <item><description>state (Mandatory)</description></item> /// <item><description>postcode (Mandatory)</description></item> /// </list> /// </description> /// </item> /// <item> /// <description><b>internationalAddress</b> (Optional) /// <list type="bullet"> /// <item><description>internationalAddressLine (Mandatory)</description></item> /// <item><description>internationalStateProvince (Mandatory)</description></item> /// <item><description>internationalPostcode (Mandatory)</description></item> /// <item><description>country (Mandatory)</description></item> /// </list> /// </description> /// </item> /// </list> /// </param> /// <returns> /// A response instance containing the result of the search: /// <list type="bullet"> /// <item><description>serviceMessages</description></item> /// <item> /// <description><b>individualProviderDirectoryEntries</b> /// <list type="bullet"> /// <item><description>hpiiNumber</description></item> /// <item><description>personalDetails</description></item> /// <item><description>individualName</description></item> /// <item><description>address</description></item> /// <item><description>electronicCommunication</description></item> /// <item><description>providerType</description></item> /// <item> /// <description><b>linkedOrganisations</b> /// <list type="bullet"> /// <item><description>hpioNumber</description></item> /// <item><description>organisationName</description></item> /// <item><description>address</description></item> /// </list> /// </description> /// </item> /// <item><description>additionalComments</description></item> /// <item><description>priorityNumber</description></item> /// </list> /// </description> /// </item> /// </list> /// </returns> public searchHIProviderDirectoryForIndividualResponse DemographicSearch(searchHIProviderDirectoryForIndividual request) { Validation.ValidateArgumentNotAllowed("request.hpiiNumber", request.hpiiNumber); if (request.australianAddressCriteria != null) { Validation.ValidateArgumentNotAllowed("request.internationalAddressCriteria", request.internationalAddressCriteria); Validation.ValidateArgumentRequired("request.australianAddressCriteria.suburb", request.australianAddressCriteria.suburb); Validation.ValidateArgumentRequired("request.australianAddressCriteria.state", request.australianAddressCriteria.state); Validation.ValidateArgumentRequired("request.australianAddressCriteria.postcode", request.australianAddressCriteria.postcode); } if (request.internationalAddressCriteria != null) { Validation.ValidateArgumentNotAllowed("request.australianAddressCriteria", request.australianAddressCriteria); Validation.ValidateArgumentRequired("request.internationalAddressCriteria.internationalAddressLine", request.internationalAddressCriteria.internationalAddressLine); Validation.ValidateArgumentRequired("request.internationalAddressCriteria.internationalStateProvince", request.internationalAddressCriteria.internationalStateProvince); Validation.ValidateArgumentRequired("request.internationalAddressCriteria.internationalPostcode", request.internationalAddressCriteria.internationalPostcode); Validation.ValidateArgumentRequired("request.internationalAddressCriteria.country", request.internationalAddressCriteria.country); } return(HISearch(request)); }
public void Sample() { // ------------------------------------------------------------------------------ // Set up // ------------------------------------------------------------------------------ // Obtain the certificate by serial number X509Certificate2 tlsCert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // The same certificate is used for signing the request. // This certificate will be different to TLS cert for some operations. X509Certificate2 signingCert = tlsCert; // Set up client product information (PCIN) // Values below should be provided by Medicare ProductType product = new ProductType() { platform = "Your system platform (Eg. Windows XP SP3)", // Can be any value productName = "Product Name", // Provided by Medicare productVersion = "Product Version", // Provided by Medicare vendor = new QualifiedId() { id = "Vendor Id", // Provided by Medicare qualifier = "Vendor Qualifier" // Provided by Medicare } }; // Set up user identifier details QualifiedId user = new QualifiedId() { id = "User Id", // User ID internal to your system qualifier = "http://<anything>/id/<anything>/userid/1.0" // Eg: http://ns.yourcompany.com.au/id/yoursoftware/userid/1.0 }; // Set up user identifier details for the hpio QualifiedId hpio = new QualifiedId() { id = "Organisation Id", // Organisation ID internal to your system qualifier = "http://<anything>/id/<anything>/hpio/1.0" // Eg: http://ns.yourcompany.com.au/id/yoursoftware/hpio/1.0 }; // ------------------------------------------------------------------------------ // Client instantiation and invocation // ------------------------------------------------------------------------------ // Instantiate the client ProviderSearchHIProviderDirectoryForIndividualClient client = new ProviderSearchHIProviderDirectoryForIndividualClient( new Uri("https://HIServiceEndpoint"), product, user, hpio, signingCert, tlsCert); // Set up the request searchHIProviderDirectoryForIndividual request = new searchHIProviderDirectoryForIndividual(); request.hpiiNumber = HIQualifiers.HPIIQualifier + "8003610001647326"; try { // Invoke an identifier search searchHIProviderDirectoryForIndividualResponse response = client.IdentifierSearch(request); } catch (FaultException fex) { string returnError = ""; MessageFault fault = fex.CreateMessageFault(); if (fault.HasDetail) { ServiceMessagesType error = fault.GetDetail <ServiceMessagesType>(); // Look at error details in here if (error.serviceMessage.Length > 0) { returnError = error.serviceMessage[0].code + ": " + error.serviceMessage[0].reason; } } // If an error is encountered, client.LastSoapResponse often provides a more // detailed description of the error. string soapResponse = client.SoapMessages.SoapResponse; } catch (Exception ex) { // If an error is encountered, client.LastSoapResponse often provides a more // detailed description of the error. string soapResponse = client.SoapMessages.SoapResponse; } }