Пример #1
0
        /// <summary>
        /// Perform an australian street address search on the ConsumerSearchIHI service.
        /// </summary>
        /// <param name="request">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>givenName (Optional)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// <item>
        ///     <description><b>australianStreetAddress</b> (Mandatory)
        ///     <list type="bullet">
        ///         <item>
        ///             <description><b>unitGroup</b> (Optional)
        ///             <list type="bullet">
        ///                 <item><description>unitType (Mandatory)</description></item>
        ///                 <item><description>unitNumber (Optional)</description></item>
        ///             </list>
        ///             </description>
        ///         </item>
        ///         <item>
        ///             <description><b>levelGroup</b> (Optional)
        ///             <list type="bullet">
        ///                 <item><description>levelType (Mandatory)</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 (Mandatory)</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>suburb (Mandatory)</description></item>
        ///         <item><description>state (Mandatory)</description></item>
        ///         <item><description>postcode (Mandatory)</description></item>
        ///     </list>
        ///     </description>
        /// </item>
        /// </list>
        /// All other fields are to be null.
        /// </param>
        /// <returns>
        /// A searchIHIResponse instance containing:
        /// <list type="bullet">
        /// <item><description>IHI number</description></item>
        /// <item><description>IHI record status</description></item>
        /// <item><description>IHI status</description></item>
        /// <item><description>Family name</description></item>
        /// <item><description>Given name (if entered in search criteria)</description></item>
        /// <item><description>Date of birth</description></item>
        /// <item><description>Sex</description></item>
        /// </list>
        /// </returns>
        public searchIHIResponse AustralianStreetAddressSearch(searchIHI request)
        {
            Validation.ValidateArgumentRequired("request", request);
            Validation.ValidateArgumentRequired("request.familyName", request.familyName);
            Validation.ValidateDateTime("request.dateOfBirth", request.dateOfBirth);

            // Check australian street address
            Dictionary <string, object> c1 = new Dictionary <string, object>();

            c1.Add("request.australianStreetAddress.streetNumber", request.australianStreetAddress.streetNumber);
            c1.Add("request.australianStreetAddress.lotNumber", request.australianStreetAddress.lotNumber);
            Validation.ValidateArgumentAtLeastOneRequired(c1);
            Validation.ValidateArgumentRequired("request.australianStreetAddress", request.australianStreetAddress);
            Validation.ValidateArgumentRequired("request.australianStreetAddress.postcode", request.australianStreetAddress.postcode);
            Validation.ValidateArgumentRequired("request.australianStreetAddress.suburb", request.australianStreetAddress.suburb);
            Validation.ValidateArgumentRequired("request.australianStreetAddress.streetName", request.australianStreetAddress.streetName);

            Validation.ValidateArgumentNotAllowed("request.medicareCardNumber", request.medicareCardNumber);
            Validation.ValidateArgumentNotAllowed("request.medicareIRN", request.medicareIRN);
            Validation.ValidateArgumentNotAllowed("request.ihiNumber", request.ihiNumber);
            Validation.ValidateArgumentNotAllowed("request.australianPostalAddress", request.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("request.dvaFileNumber", request.dvaFileNumber);
            Validation.ValidateArgumentNotAllowed("request.history", request.historySpecified);
            Validation.ValidateArgumentNotAllowed("request.internationalAddress", request.internationalAddress);

            return(IHISearch(request));
        }
        /// <summary>
        /// Perform a basic medicare search on the ConsumerSearchIHI service.
        /// </summary>
        /// <param name="request">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>medicareCardNumber (Mandatory)</description></item>
        /// <item><description>medicareIRN (Optional)</description></item>
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>givenName (Optional)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// </list>
        /// All other fields are to be null.
        /// </param>
        /// <returns>
        /// A searchIHIResponse instance containing:
        /// <list type="bullet">
        /// <item><description>Medicare card number</description></item>
        /// <item><description>Medicare IRN</description></item>
        /// <item><description>IHI number</description></item>
        /// <item><description>IHI record status</description></item>
        /// <item><description>IHI status</description></item>
        /// <item><description>Family name</description></item>
        /// <item><description>Given name (if entered in search criteria)</description></item>
        /// <item><description>Date of birth</description></item>
        /// <item><description>Sex</description></item>
        /// </list>
        /// </returns>
        public searchIHIResponse BasicMedicareSearch(searchIHI request)
        {
            Validation.ValidateArgumentRequired("request.medicareCardNumber", request.medicareCardNumber);
            Validation.ValidateArgumentRequired("request.familyName", request.familyName);
            Validation.ValidateDateTime("request.dateOfBirth", request.dateOfBirth);

            Validation.ValidateArgumentNotAllowed("request.ihiNumber", request.ihiNumber);
            Validation.ValidateArgumentNotAllowed("request.dvaFileNumber", request.dvaFileNumber);
            Validation.ValidateArgumentNotAllowed("request.australianPostalAddress", request.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("request.australianStreetAddress", request.australianStreetAddress);
            Validation.ValidateArgumentNotAllowed("request.internationalAddress", request.internationalAddress);

            return(IHISearch(request));
        }
Пример #3
0
        /// <summary>
        /// Perform the IHI service call.
        /// </summary>
        /// <param name="request">The search criteria in a searchIHI object.</param>
        /// <returns>The IHI search results.</returns>
        private searchIHIResponse IHISearch(searchIHI request)
        {
            searchIHIRequest envelope = new searchIHIRequest();

            envelope.searchIHI = request;
            envelope.product   = product;
            envelope.user      = user;
            envelope.hpio      = hpio;
            envelope.signature = new SignatureContainerType();

            envelope.timestamp = new TimestampType()
            {
                created          = DateTime.Now.ToUniversalTime(),
                expires          = DateTime.Now.AddDays(30).ToUniversalTime(),
                expiresSpecified = true
            };

            // Set LastSoapRequestTimestamp
            LastSoapRequestTimestamp = envelope.timestamp;

            searchIHIResponse1 response1 = null;

            try
            {
                response1 = searchIhiClient.searchIHI(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.searchIHIResponse != null)
            {
                return(response1.searchIHIResponse);
            }
            else
            {
                throw new ApplicationException(Properties.Resources.UnexpectedServiceResponse);
            }
        }
        /// <summary>
        /// Perform an international address search on the ConsumerSearchIHI service.
        /// </summary>
        /// <param name="request">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>givenName (Optional)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// <item>
        ///     <description><b>internationalAddress</b> (Mandatory)
        ///     <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>
        /// All other fields are to be null.
        /// </param>
        /// <returns>
        /// A searchIHIResponse instance containing:
        /// <list type="bullet">
        /// <item><description>IHI number</description></item>
        /// <item><description>IHI record status</description></item>
        /// <item><description>IHI status</description></item>
        /// <item><description>Family name</description></item>
        /// <item><description>Given name (if entered in search criteria)</description></item>
        /// <item><description>Date of birth</description></item>
        /// <item><description>Sex</description></item>
        /// </list>
        /// </returns>
        public searchIHIResponse InternationalAddressSearch(searchIHI request)
        {
            Validation.ValidateArgumentRequired("request", request);
            Validation.ValidateArgumentRequired("request.familyName", request.familyName);
            Validation.ValidateDateTime("request.dateOfBirth", request.dateOfBirth);

            // Check international address
            Validation.ValidateArgumentRequired("request.internationalAddress", request.internationalAddress);
            Validation.ValidateArgumentRequired("request.internationalAddress.internationalStateProvince", request.internationalAddress.internationalStateProvince);
            Validation.ValidateArgumentRequired("request.internationalAddress.internationalPostcode", request.internationalAddress.internationalPostcode);
            Validation.ValidateArgumentRequired("request.internationalAddress.internationalAddressLine", request.internationalAddress.internationalAddressLine);

            Validation.ValidateArgumentNotAllowed("request.medicareCardNumber", request.medicareCardNumber);
            Validation.ValidateArgumentNotAllowed("request.medicareIRN", request.medicareIRN);
            Validation.ValidateArgumentNotAllowed("request.ihiNumber", request.ihiNumber);
            Validation.ValidateArgumentNotAllowed("request.australianPostalAddress", request.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("request.australianStreetAddress", request.australianStreetAddress);
            Validation.ValidateArgumentNotAllowed("request.dvaFileNumber", request.dvaFileNumber);

            return(IHISearch(request));
        }
        /// <summary>
        /// Perform an australian unstructured street address search on the ConsumerSearchIHI service.
        /// </summary>
        /// <param name="request">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// <item>
        ///     <description><b>australianUnstructuredStreetAddress</b> (Mandatory)
        ///     <list type="bullet">
        ///         <item><description>suburb (Mandatory)</description></item>
        ///         <item><description>state (Mandatory)</description></item>
        ///         <item><description>postcode (Mandatory)</description></item>
        ///         <item><description>addressLineOne (Conditional)</description></item>
        ///         <item><description>addressLineTwo (Conditional)</description></item>
        ///     </list>
        ///     </description>
        /// </item>
        /// </list>
        /// All other fields are to be null.
        /// </param>
        /// <returns>
        /// A searchIHIResponse instance containing:
        /// <list type="bullet">
        /// <item><description>IHI number</description></item>
        /// <item><description>IHI record status</description></item>
        /// <item><description>IHI status</description></item>
        /// <item><description>Family name</description></item>
        /// <item><description>Given name (if entered in search criteria)</description></item>
        /// <item><description>Date of birth</description></item>
        /// <item><description>Sex</description></item>
        /// </list>
        /// </returns>
        public searchIHIResponse AustralianUnstructuredAddressSearch(searchIHI request)
        {
            Validation.ValidateArgumentRequired("request", request);
            Validation.ValidateArgumentRequired("request.familyName", request.familyName);
            Validation.ValidateDateTime("request.dateOfBirth", request.dateOfBirth);

            // Check australian unstructured address
            Validation.ValidateArgumentRequired("request.australianUnstructuredStreetAddress.suburb", request.australianUnstructuredStreetAddress.suburb);
            Validation.ValidateArgumentRequired("request.australianUnstructuredStreetAddress.state", request.australianUnstructuredStreetAddress.state);
            Validation.ValidateArgumentRequired("request.australianUnstructuredStreetAddress.postcode", request.australianUnstructuredStreetAddress.postcode);

            Validation.ValidateArgumentNotAllowed("request.medicareCardNumber", request.medicareCardNumber);
            Validation.ValidateArgumentNotAllowed("request.medicareIRN", request.medicareIRN);
            Validation.ValidateArgumentNotAllowed("request.ihiNumber", request.ihiNumber);
            Validation.ValidateArgumentNotAllowed("request.australianPostalAddress", request.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("request.dvaFileNumber", request.dvaFileNumber);
            Validation.ValidateArgumentNotAllowed("request.internationalAddress", request.internationalAddress);
            Validation.ValidateArgumentNotAllowed("request.australianStreetAddress", request.australianStreetAddress);

            return(IHISearch(request));
        }
Пример #6
0
        private void IhiSeachOrValidateQuery()
        {
            // ------------------------------------------------------------------------------
            // Set up
            // ------------------------------------------------------------------------------

            // Set up the request
            searchIHI request = new searchIHI();

            SetRequestDataForQuery(IhiSearchValidateOutcome, request);

            // Obtain the certificate by serial number
            string           CertSerial = RemoveWhitespace(IhiSearchValidateConfig.CertificateSerialNumber);
            X509Certificate2 tlsCert    = GetCertificate(
                IhiSearchValidateConfig.CertificateSerialNumber, //The serial number is commonly seen with spaces "06 3c 23' yet we don't want then in this call.
                X509FindType.FindBySerialNumber,
                StoreName.My,
                StoreLocation.LocalMachine,
                true
                );

            //Test that we found a certificate, there will be a error message write for return if it was not found
            if (tlsCert != null)
            {
                // 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
                Pyro.ADHA.mcaR3.ConsumerSearchIHI.ProductType product = new Pyro.ADHA.mcaR3.ConsumerSearchIHI.ProductType()
                {
                    platform       = System.Environment.OSVersion.ToString(), // Can be any value
                    productName    = IhiSearchValidateConfig.ProductName,     // Provided by Medicare
                    productVersion = IhiSearchValidateConfig.ProductVersion,  // Provided by Medicare
                    vendor         = new Pyro.ADHA.mcaR3.ConsumerSearchIHI.QualifiedId()
                    {
                        id        = IhiSearchValidateConfig.VendorId,         // Provided by Medicare
                        qualifier = IhiSearchValidateConfig.VendorIdQualifier // Provided by Medicare
                    }
                };


                // Set up user identifier details
                Pyro.ADHA.mcaR3.ConsumerSearchIHI.QualifiedId user = new Pyro.ADHA.mcaR3.ConsumerSearchIHI.QualifiedId()
                {
                    id        = IhiSearchValidateOutcome.RequestData.UserId,         // User ID internal to your system
                    qualifier = IhiSearchValidateOutcome.RequestData.UserIdQualifier // Eg: http://ns.yourcompany.com.au/id/yoursoftware/userid/1.0
                };

                // Set up user HPI-O identifier
                //The HPI-O is optional and only required if you are setup and using a CSP certificate, in this case you must pass the HPI-O
                //of the orginisation you are making the call for.
                Pyro.ADHA.mcaR3.ConsumerSearchIHI.QualifiedId hpio = new Pyro.ADHA.mcaR3.ConsumerSearchIHI.QualifiedId()
                {
                    id        = "9344699237",                                      // HPIO internal to your system
                    qualifier = "http://ns.electronichealth.net.au/id/hi/hpio/1.0" // Eg: http://ns.yourcompany.com.au/id/yoursoftware/userid/1.0
                };

                // ------------------------------------------------------------------------------
                // Client instantiation and invocation
                // ------------------------------------------------------------------------------

                // Instantiate the client
                ConsumerSearchIHIClient client = new ConsumerSearchIHIClient(
                    new Uri(IhiSearchValidateConfig.HiServiceEndpoint),
                    product,
                    user,
                    null,
                    signingCert,
                    tlsCert);

                searchIHIResponse ihiResponse = null;
                try
                {
                    // Invokes the query based on type
                    if (RequestHasIHINumber || (RequestHasDvaNumber && RequestHasMedicareNumber))
                    {
                        ihiResponse = client.BasicSearch(request);
                    }

                    if (RequestHasMedicareNumber)
                    {
                        ihiResponse = client.BasicMedicareSearch(request);
                    }

                    if (RequestHasDvaNumber)
                    {
                        ihiResponse = client.BasicDvaSearch(request);
                    }

                    SetResponseDataToReturnData(IhiSearchValidateOutcome, ihiResponse);
                    SetSoapRequestAndResponseData(IhiSearchValidateOutcome, client, ihiResponse);
                    IhiSearchValidateOutcome.SuccessfulQuery = true;
                }
                catch (FaultException fex)
                {
                    IhiSearchValidateOutcome.SuccessfulQuery = false;

                    MessageFault fault = fex.CreateMessageFault();
                    if (fault.HasDetail)
                    {
                        Pyro.ADHA.mcaR3.ConsumerSearchIHI.ServiceMessagesType error = fault.GetDetail <Pyro.ADHA.mcaR3.ConsumerSearchIHI.ServiceMessagesType>();
                        // Look at error details in here
                        if (error.serviceMessage.Length > 0)
                        {
                            string returnMessage = error.serviceMessage[0].code + ": " + error.serviceMessage[0].reason;
                            IhiSearchValidateOutcome.QueryMetadata.ErrorMessge = returnMessage;
                        }
                    }
                }
                catch (Exception Exec)
                {
                    IhiSearchValidateOutcome.SuccessfulQuery = false;
                    // If an error is encountered, client.LastSoapResponse often provides a more
                    // detailed description of the error.
                    IhiSearchValidateOutcome.QueryMetadata.ErrorMessge = Exec.Message;
                    SetSoapRequestAndResponseData(IhiSearchValidateOutcome, client, ihiResponse);
                }
                finally
                {
                    // Clean up
                    client.Dispose();
                }
            }
        }
Пример #7
0
        private void SetRequestDataForQuery(IhiSearchValidateOutcome IhiSearchValidateOutcome, searchIHI request)
        {
            RequestHasMedicareNumber = false;
            RequestHasDvaNumber      = false;
            RequestHasIHINumber      = false;

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.Given))
            {
                request.givenName = IhiSearchValidateOutcome.RequestData.Given;
            }

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.Family))
            {
                request.familyName = IhiSearchValidateOutcome.RequestData.Family;
            }

            if (IhiSearchValidateOutcome.RequestData.Dob.HasValue)
            {
                request.dateOfBirth = IhiSearchValidateOutcome.RequestData.Dob.Value;
            }

            if (Char.IsLetter(IhiSearchValidateOutcome.RequestData.SexChar))
            {
                request.sex = GetSexTypeByChar(IhiSearchValidateOutcome.RequestData.SexChar);
            }

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.MedicareNumber))
            {
                request.medicareCardNumber = RemoveWhitespace(IhiSearchValidateOutcome.RequestData.MedicareNumber);
                RequestHasMedicareNumber   = true;
            }

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.MedicareIRN))
            {
                request.medicareIRN = IhiSearchValidateOutcome.RequestData.MedicareIRN;
            }

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.DVANumber))
            {
                request.dvaFileNumber = RemoveWhitespace(IhiSearchValidateOutcome.RequestData.DVANumber);
                RequestHasDvaNumber   = true;
            }

            if (!String.IsNullOrWhiteSpace(IhiSearchValidateOutcome.RequestData.IHINumber))
            {
                request.ihiNumber   = IhiNamespace + RemoveWhitespace(IhiSearchValidateOutcome.RequestData.IHINumber);
                RequestHasIHINumber = true;
            }
        }
        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
            QualifiedId hpio = new QualifiedId()
            {
                id        = "HPIO",                                       // HPIO internal to your system
                qualifier = "http://<anything>/id/<anything>/hpio/1.0"    // Eg: http://ns.yourcompany.com.au/id/yoursoftware/userid/1.0
            };

            // ------------------------------------------------------------------------------
            // Client instantiation and invocation
            // ------------------------------------------------------------------------------

            // Instantiate the client
            ConsumerSearchIHIClient client = new ConsumerSearchIHIClient(
                new Uri("https://HIServiceEndpoint"),
                product,
                user,
                hpio,
                signingCert,
                tlsCert);

            // Set up the request
            searchIHI request = new searchIHI();

            request.ihiNumber   = "http://ns.electronichealth.net.au/id/hi/ihi/1.0/8003601240022579";
            request.dateOfBirth = DateTime.Parse("12 Dec 2002");
            request.givenName   = "Jessica";
            request.familyName  = "Wood";
            request.sex         = SexType.F;

            try
            {
                // Invokes a basic search
                searchIHIResponse ihiResponse = client.BasicSearch(request);
            }
            catch (Exception ex)
            {
                // If an error is encountered, client.LastSoapResponse often provides a more
                // detailed description of the error.
                string soapResponse = client.SoapMessages.SoapResponse;
            }
        }
Пример #9
0
        /// <summary>
        /// Adds a basic medicare search to the batch search.
        /// </summary>
        /// <param name="searches">The current list of searches for the batch search.</param>
        /// <param name="identifier">A 36 character GUID which identifies this search.</param>
        /// <param name="search">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>medicareCardNumber (Mandatory)</description></item>
        /// <item><description>medicareIRN (Optional)</description></item>
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>givenName (Optional)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// </list>
        /// All other fields are to be null. For the fields returned by this search, see return value of <see cref="Nehta.VendorLibrary.HI.ConsumerSearchIHIClient.BasicMedicareSearch"/>.
        /// </param>
        public static void AddBasicMedicareSearch(this List <SearchIHIRequestType> searches, string identifier, searchIHI search)
        {
            Validation.ValidateStringLength("identifier", identifier, 36, true);

            Validation.ValidateArgumentRequired("search.medicareCardNumber", search.medicareCardNumber);
            Validation.ValidateArgumentRequired("search.familyName", search.familyName);
            Validation.ValidateDateTime("search.dateOfBirth", search.dateOfBirth);

            Validation.ValidateArgumentNotAllowed("search.ihiNumber", search.ihiNumber);
            Validation.ValidateArgumentNotAllowed("search.dvaFileNumber", search.dvaFileNumber);
            Validation.ValidateArgumentNotAllowed("search.australianPostalAddress", search.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("search.australianStreetAddress", search.australianStreetAddress);
            Validation.ValidateArgumentNotAllowed("search.history", search.historySpecified);
            Validation.ValidateArgumentNotAllowed("search.internationalAddress", search.internationalAddress);

            searches.Add(new SearchIHIRequestType()
            {
                searchIHI         = search,
                requestIdentifier = identifier
            });
        }
Пример #10
0
        /// <summary>
        /// Adds an australian street address search to the batch search.
        /// </summary>
        /// <param name="searches">The current list of searches for the batch search.</param>
        /// <param name="identifier">A 36 character GUID which identifies this search.</param>
        /// <param name="search">
        /// The search criteria. The following fields are expected:
        /// <list type="bullet">
        /// <item><description>familyName (Mandatory)</description></item>
        /// <item><description>givenName (Optional)</description></item>
        /// <item><description>dateOfBirth (Mandatory)</description></item>
        /// <item><description>sex (Mandatory)</description></item>
        /// <item>
        ///     <description><b>australianStreetAddress</b> (Mandatory)
        ///     <list type="bullet">
        ///         <item>
        ///             <description><b>unitGroup</b> (Optional)
        ///             <list type="bullet">
        ///                 <item><description>unitType (Mandatory)</description></item>
        ///                 <item><description>unitNumber (Optional)</description></item>
        ///             </list>
        ///             </description>
        ///         </item>
        ///         <item>
        ///             <description><b>levelGroup</b> (Optional)
        ///             <list type="bullet">
        ///                 <item><description>levelType (Mandatory)</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 (Mandatory)</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>suburb (Mandatory)</description></item>
        ///         <item><description>state (Mandatory)</description></item>
        ///         <item><description>postcode (Mandatory)</description></item>
        ///     </list>
        ///     </description>
        /// </item>
        /// </list>
        /// All other fields are to be null. For the fields returned by this search, see return value of <see cref="Nehta.VendorLibrary.HI.ConsumerSearchIHIClient.AustralianStreetAddressSearch"/>.
        /// </param>
        public static void AddAustralianStreetAddressSearch(this List <SearchIHIRequestType> searches, string identifier, searchIHI search)
        {
            Validation.ValidateStringLength("identifier", identifier, 36, true);

            Validation.ValidateArgumentRequired("search", search);
            Validation.ValidateArgumentRequired("search.familyName", search.familyName);
            Validation.ValidateDateTime("search.dateOfBirth", search.dateOfBirth);

            // Check australian street address
            Dictionary <string, object> c1 = new Dictionary <string, object>();

            c1.Add("search.australianStreetAddress.streetNumber", search.australianStreetAddress.streetNumber);
            c1.Add("search.australianStreetAddress.lotNumber", search.australianStreetAddress.lotNumber);
            Validation.ValidateArgumentAtLeastOneRequired(c1);
            Validation.ValidateArgumentRequired("search.australianStreetAddress", search.australianStreetAddress);
            Validation.ValidateArgumentRequired("search.australianStreetAddress.postcode", search.australianStreetAddress.postcode);
            Validation.ValidateArgumentRequired("search.australianStreetAddress.suburb", search.australianStreetAddress.suburb);
            Validation.ValidateArgumentRequired("search.australianStreetAddress.streetName", search.australianStreetAddress.streetName);

            Validation.ValidateArgumentNotAllowed("search.medicareCardNumber", search.medicareCardNumber);
            Validation.ValidateArgumentNotAllowed("search.medicareIRN", search.medicareIRN);
            Validation.ValidateArgumentNotAllowed("search.ihiNumber", search.ihiNumber);
            Validation.ValidateArgumentNotAllowed("search.australianPostalAddress", search.australianPostalAddress);
            Validation.ValidateArgumentNotAllowed("search.dvaFileNumber", search.dvaFileNumber);
            Validation.ValidateArgumentNotAllowed("search.history", search.historySpecified);
            Validation.ValidateArgumentNotAllowed("search.internationalAddress", search.internationalAddress);

            searches.Add(new SearchIHIRequestType()
            {
                searchIHI         = search,
                requestIdentifier = identifier
            });
        }