Example #1
0
        // GET: api/Claim
        public IEnumerable <string> Get()
        {
            HicapsConnectControl.HicapsConnectControl ctr = new HicapsConnectControl.HicapsConnectControl();

            ctr.createobject("0.0.0.0:0:SEE55A:COMT");

            HicapsConnectControl.HicapsConnectControl.TerminalTestResponse myResponse = ctr.sendTerminalTest("0.0.0.0:0:SEE55A:COMT");

            var arr = ctr.getTerminalList();

            HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest req = new HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest();
            req.ProviderNumberId = "0540961A";
            req.ClaimDetails.Add("01R001001112008000");
            req.ServerUrl              = "SEE55A";
            req.PmsKey                 = "8562026";
            req.SoftwareVendorName     = "HICAPSConnectClient";
            req.PrintReceiptOnTerminal = false;



            var res = ctr.sendClaimRequest(req);


            return(new string[] { "value1", "value2" });
        }
        private void SendButton_Click(object sender, RoutedEventArgs e)
        {
            SendButton.IsEnabled = false;
            HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest request;
            //HicapsConnectControl.HicapsConnectControl.AllItemListRequest itemRequest;

            main.hicaps.DisplayStatusWindow(true);

            if (QuoteMode)
            {
                // fields of a QuoteRequest are filled identically to those of a ClaimRequest.
                request = new HicapsConnectControl.HicapsConnectControl.QuotePharmRequest();
            }
            else
            {
                request = new HicapsConnectControl.HicapsConnectControl.ClaimPharmRequest();
            }

            // set provider
            request.ProviderNumberId = Utils.getProviderNumberId(ProviderCombo.Text);
            if (request.ProviderNumberId == null || request.ProviderNumberId == "00000000")
            {
                // inform user that a correct provider is needed
                MessageBox.Show("The selected provider is not valid. Please select another one.");
                SendButton.IsEnabled = true;
                return;
            }

            // add item details
            if (claimItems.Count < 1)
            {
                MessageBox.Show("There must be at least one claim item");
                SendButton.IsEnabled = true;
                return;
            }

            int i = 0;

            foreach (ItemRow row in claimItems)
            {
                string rowNumber = "Row " + i + 1 + ": ";
                if (row.Dos == null)
                {
                    MessageBox.Show(rowNumber + "Please select a date of service");
                    ClaimDetails.SelectedIndex = i;
                    SendButton.IsEnabled       = true;
                    return;
                }
                try
                {
                    if (row.ItemNumber.Length < 3)
                    {
                        MessageBox.Show(rowNumber + "Item Number must be 3 or greater characters");
                        ClaimDetails.SelectedIndex = i;
                        SendButton.IsEnabled       = true;
                        return;
                    }
                    //else if (!row.ItemNumber.OnlyNumbers())
                    //{
                    //    MessageBox.Show(rowNumber + "Item Number must consist of digits");
                    //    ClaimDetails.SelectedIndex = i;
                    //    return;
                    //}



                    //GJ:Commented the old way to add the line as for the compound indicator should use the Compound column of each row instead of the UseAlternateBodyPart checkbox
                    //request.addClaimPharmLine(row.PatientId, row.ItemNumber, row.ScriptNumber, UseAlternateBodyPart.IsChecked != null && UseAlternateBodyPart.IsChecked.Value,
                    //    row.Dos ?? DateTime.MinValue,
                    //    row.ItemFee.ParseCurrency() ?? 0);

                    request.addClaimPharmLine(row.PatientId, row.ItemNumber, row.ScriptNumber, row.Compound == "Compound",
                                              row.Dos ?? DateTime.MinValue,
                                              row.ItemFee.ParseCurrency() ?? 0);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    SendButton.IsEnabled = true;
                    return;
                }
                i++;
            }

            request.ServerUrl              = main.currentTerminal;
            request.PmsKey                 = Utils.PMSKey;
            request.SoftwareVendorName     = Utils.VendorName;
            request.PrintReceiptOnTerminal = Properties.Settings.Default.PrintClaimReceipt;


            // send request
            HicapsConnectControl.HicapsConnectControl.ClaimPharmResponse response;
            if (QuoteMode)
            {
                // converts the request to a QuoteRequest and the response to a ClaimResponse
                // while calling sendQuoteRequest
                main.SyncStatus("Sending Quote Request...");
                response = main.hicaps.sendQuotePharmRequest((HicapsConnectControl.HicapsConnectControl.QuotePharmRequest)request);
            }
            else
            {
                main.SyncStatus("Sending Claim Request...");
                response = main.hicaps.sendClaimPharmRequest(request);
            }
            main.ResetStatus();
            if (response != null)
            {
                if (response.GetType() == typeof(HicapsConnectControl.HicapsConnectControl.ClaimPharmResponse))
                {
                    main.claimLog.LogClaim(response);
                }

                if (response.GetType() == typeof(HicapsConnectControl.HicapsConnectControl.QuotePharmResponse))
                {
                    main.claimLog.LogQuote((HicapsConnectControl.HicapsConnectControl.QuotePharmResponse)response);
                }

                main.cancel.UpdateTransactions();
                _latestResponse = response;
            }
            dumpClaimResponseToDebug(response);

            if (response.ResponseCode != "00")
            {
                new ResponseError(response.ResponseCode, response.ResponseText).ShowDialog();
            }
            else
            {
                // i.e. successful claim
                clearEntryFields(true);
                claimItems.Clear();
                ClaimDetails.Items.Refresh();
            }

            ////Display wait window
            //wait.Visibility = Visibility.Visible;
            //ForceUIToUpdate();


            // print provider receipt if needed
            if (!QuoteMode && Settings.Default.PrintProviderClaimReceiptLocal)
            {
                //Display wait window
                wait.Visibility = Visibility.Visible;
                ForceUIToUpdate();
                var rec = new PharmaceuticalReceipt(response, ReceiptFor.Provider);
                //Close wait window
                wait.Visibility = Visibility.Collapsed;
                rec.printReport(true);
            }


            // print customer receipt if needed
            bool shouldPrint = false;
            PharmaceuticalReceipt r;

            if (QuoteMode)
            {
                shouldPrint = Settings.Default.PrintQuoteReceiptLocal;
                var quoteResponse = (HicapsConnectControl.HicapsConnectControl.QuotePharmResponse)response;
                r = new PharmaceuticalReceipt(quoteResponse);
            }
            else
            {
                shouldPrint = Settings.Default.PrintCustomerClaimReceiptLocal;
                r           = new PharmaceuticalReceipt(response, ReceiptFor.Customer);
            }
            if (shouldPrint)
            {
                r.printReport(false);
            }



            if (response.ResponseCode == "00")
            {
                // process claim-to-sale
                // todo: is gap really calculated this way?
                decimal gap = response.TransactionAmount - response.BenefitAmount;
                if (gap > 0 && !QuoteMode)
                {
                    if (main.setup.ClaimToSale && main.setup.ClaimToSalePopup)
                    {
                        ClaimToSalePopup popup = new ClaimToSalePopup(gap);
                        popup.Show();
                    }
                    else if (main.setup.ClaimToSale && !main.setup.ClaimToSalePopup)
                    {
                        main.eftpos.doClaimToSale();
                    }
                    else
                    {
                        // ClaimToSale is not checked. Do nothing
                    }
                }
            }
            main.hicaps.DisplayStatusWindow(false);
            SendButton.IsEnabled = true;
        }