Пример #1
0
        private void btnGo_Click(object sender, EventArgs e)
        {
            try
            {
                Store.__send_eof = chkSendEOF.Checked;

                if ((cbDelimitedTestRecord.Checked || cbTaggedTestRecord.Checked) && txtFileName.Text.Length > 0)
                {
                    List <KeyValuePair <string, string> > __key_data = new List <KeyValuePair <string, string> >();
                    var __output = new motFormattedFileOutput();

                    if (!Directory.Exists("C:/Records"))
                    {
                        Directory.CreateDirectory("C:/Records");
                    }

                    if (cbDelimitedTestRecord.Checked)
                    {
                        __key_data.Add(new KeyValuePair <string, string>("TableType", "S" + __action.ToUpper().Substring(0, 1)));
                    }
                    __key_data.Add(new KeyValuePair <string, string>("RxSys_StoreID", txtRxSys_StoreID.Text));
                    __key_data.Add(new KeyValuePair <string, string>("StoreName", txtStoreName.Text));
                    __key_data.Add(new KeyValuePair <string, string>("Address1", txtAddress1.Text));
                    __key_data.Add(new KeyValuePair <string, string>("Address2", txtAddress2.Text));
                    __key_data.Add(new KeyValuePair <string, string>("City", txtCity.Text));
                    __key_data.Add(new KeyValuePair <string, string>("State", txtState.Text));
                    __key_data.Add(new KeyValuePair <string, string>("Zip", txtZip.Text));
                    __key_data.Add(new KeyValuePair <string, string>("Phone", txtPhone.Text));
                    __key_data.Add(new KeyValuePair <string, string>("Fax", txtFax.Text));
                    __key_data.Add(new KeyValuePair <string, string>("DEANum", txtDEANum.Text));

                    if (cbDelimitedTestRecord.Checked)
                    {
                        byte[] __record = __output.WriteDelimitedFile(@"C:\Records\" + txtFileName.Text, __key_data);

                        if (cbSendDelimitedRecord.Checked)
                        {
                            __execute.__p.write(__record);
                        }
                    }

                    if (cbTaggedTestRecord.Checked)
                    {
                        if (cbDelimitedTestRecord.Checked)
                        {
                            __key_data.RemoveAt(0);
                        }

                        string __record = __output.WriteTaggedFile(@"C:\Records\" + txtFileName.Text, __key_data, "Store", __action);

                        if (cbSendTaggedRecord.Checked)
                        {
                            __execute.__p.write(__record);
                        }
                    }
                }
                else
                {
                    Store.RxSys_StoreID = txtRxSys_StoreID.Text;
                    Store.StoreName     = txtStoreName.Text;
                    Store.Address1      = txtAddress1.Text;
                    Store.Address2      = txtAddress2.Text;
                    Store.City          = txtCity.Text;
                    Store.State         = txtState.Text;
                    Store.Zip           = txtZip.Text;
                    Store.Phone         = txtPhone.Text;
                    Store.Fax           = txtFax.Text;
                    Store.DEANum        = txtDEANum.Text;

                    __execute.__update_event_ui("Store field assignment complete ...");

                    try
                    {
                        Store.Write(__execute.__p);
                    }
                    catch (Exception ex)
                    {
                        __execute.__update_error_ui(string.Format("Store record write error: {0}", ex.Message));
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                __execute.__update_error_ui(string.Format("Store record error: {0}", ex.Message));
                return;
            }

            __execute.__update_event_ui("Store write record complete ...");
        }
Пример #2
0
        // Do the real work here - call delegates to update UI

        void __parsePioneerRxRecord(XmlDocument __xdoc)
        {
            //__gateway = new motPort();  // Clever way to turn off gateway for testing

            // The interesting parts of PioneerRx XML are:
            //          Pharmacy
            //          Prescribers<Prescriber>
            //          Patient
            //          Facility
            //          Rx

            try
            {
                XmlNode __pharmacy = __xdoc.SelectSingleNode("//Pharmacy");


                motStoreRecord __store = new motStoreRecord("Add", __args.__auto_truncate);

                __store.StoreName     = __pharmacy.SelectSingleNode("PharmacyName").InnerText;
                __store.RxSys_StoreID = __pharmacy.SelectSingleNode("Identification/PioneerRxID").InnerText;
                __store.DEANum        = __pharmacy.SelectSingleNode("Identification/DEA").InnerText;
                __store.Address1      = __pharmacy.SelectSingleNode("//Address/AddressLine1").InnerText;
                __store.Address2      = __pharmacy.SelectSingleNode("//Address/AddressLine2").InnerText;
                __store.City          = __pharmacy.SelectSingleNode("//Address/City").InnerText;
                __store.State         = __pharmacy.SelectSingleNode("//Address/StateCode").InnerText;
                __store.Zip           = __pharmacy.SelectSingleNode("//Address/ZipCode").InnerText;

                XmlNodeList __phone_node_list = __pharmacy.SelectNodes("PhoneNumbers/PhoneNumber");
                foreach (XmlNode __num in __phone_node_list)
                {
                    if (__num["Type"].InnerText.ToLower() == "fax")
                    {
                        __store.Fax = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                    }
                    else
                    {
                        __store.Phone = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                    }
                }

                __store.Write(__gateway);
                __show_common_event("Added Store: " + __store.StoreName);
            }
            catch (Exception ex)
            {
                __show_error_event("Failed writing Store Record: " + ex.Message);
            }

            try
            {
                XmlNodeList __prescribers = __xdoc.SelectNodes("//Prescribers/Prescriber");

                foreach (XmlNode __prescriber in __prescribers)
                {
                    var __doc = new motPrescriberRecord("Add", __args.__auto_truncate);

                    // its odd.  The PrescriberID is writen like this:
                    //      <PresccriberID>
                    //          <GUID/>40DE86C9-FD69-44D7-9DA4-4D2A3194DE49
                    //      </PrescriberID>
                    // and I can't find a way to get at the XPath lets me get the node but no value
                    //__doc.RxSys_DocID = __prescriber.SelectSingleNode("Identification/PrescriberID").ChildNodes[1].InnerText;

                    __doc.RxSys_DocID   = __prescriber.SelectSingleNode("Identification/PrescriberID/GUID").InnerText;
                    __doc.DEA_ID        = __prescriber.SelectSingleNode("Identification/DEA").InnerText;
                    __doc.FirstName     = __prescriber.SelectSingleNode("Name/FirstName").InnerText;
                    __doc.LastName      = __prescriber.SelectSingleNode("Name/LastName").InnerText;
                    __doc.MiddleInitial = __prescriber.SelectSingleNode("Name/MiddleName").InnerText;

                    // We can only take a single address, so just take the first one
                    __doc.Address1   = __prescriber.SelectSingleNode("//Address/AddressLine1").InnerText;
                    __doc.Address2   = __prescriber.SelectSingleNode("//Address/AddressLine2").InnerText;
                    __doc.City       = __prescriber.SelectSingleNode("//Address/City").InnerText;
                    __doc.State      = __prescriber.SelectSingleNode("//Address/StateCode").InnerText;
                    __doc.PostalCode = __prescriber.SelectSingleNode("//Address/City").InnerText;
                    __doc.Specialty  = string.IsNullOrEmpty(__prescriber["PrimarySpecializationID"].InnerText) ? 0 : Convert.ToInt32(__prescriber["PrimarySpecializationID"].InnerText);

                    XmlNodeList __phone_node_list = __prescriber.SelectNodes("PhoneNumbers/PhoneNumber");
                    foreach (XmlNode __num in __phone_node_list)
                    {
                        if (__num["Type"].InnerText.ToLower() == "fax")
                        {
                            __doc.Fax = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                        }
                        else
                        {
                            __doc.Phone = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                        }
                    }

                    __doc.Email     = __prescriber.SelectSingleNode("Email").InnerText;
                    __doc.Comments += __prescriber.SelectSingleNode("Comments/Informational").InnerText + "\n";
                    __doc.Comments += __prescriber.SelectSingleNode("Comments/Critical").InnerText + "\n";
                    __doc.Comments += __prescriber.SelectSingleNode("Comments/PointOfSale").InnerText + "\n";

                    __doc.Write(__gateway);

                    __show_common_event("Added Prescriber: " + __doc.FirstName + " " + __doc.LastName);
                }
            }
            catch (Exception ex)
            {
                __show_error_event("Failed Writing Records: " + ex.Message);
                throw;
            }


            try
            {
                var __patient = __xdoc.SelectSingleNode("//Patient");
                var __pat     = new motPatientRecord("Add", __args.__auto_truncate);
                List <motPrescriptionRecord> __rx_list = new List <motPrescriptionRecord>();

                __pat.RxSys_PatID   = __patient?.SelectSingleNode("//Identification/PatientID/Guid").InnerText;
                __pat.SSN           = __patient?.SelectSingleNode("//Identification/SSN").InnerText;
                __pat.DOB           = __patient?.SelectSingleNode("DateOfBirth/Date").InnerText;
                __pat.FirstName     = __patient?.SelectSingleNode("Name/FirstName").InnerText;
                __pat.LastName      = __patient?.SelectSingleNode("Name/LastName").InnerText;
                __pat.MiddleInitial = __patient?.SelectSingleNode("Name/MiddleName").InnerText;
                __pat.Gender        = __patient?.SelectSingleNode("Gender").InnerText;
                __pat.Height        = string.IsNullOrEmpty(__patient?.SelectSingleNode("HeightInches").InnerText) ? 0 : Convert.ToInt32(__patient?.SelectSingleNode("HeightInches").InnerText);
                __pat.Weight        = string.IsNullOrEmpty(__patient?.SelectSingleNode("WeightOz").InnerText) ? 0 : Convert.ToInt32(__patient?.SelectSingleNode("WeightOz").InnerText);

                // We can only take a single address, so just take the first one
                __pat.Address1 = __patient?.SelectSingleNode("//Address/AddressLine1").InnerText;
                __pat.Address2 = __patient?.SelectSingleNode("//Address/AddressLine2").InnerText;
                __pat.City     = __patient?.SelectSingleNode("//Address/City").InnerText;
                __pat.State    = __patient?.SelectSingleNode("//Address/StateCode").InnerText;
                __pat.Zip      = __patient?.SelectSingleNode("//Address/City").InnerText;

                __pat.Email = __patient?.SelectSingleNode("Email").InnerText;

                __pat.Comments += __patient?.SelectSingleNode("Comments/Informational").InnerText + "\n";
                __pat.Comments += __patient?.SelectSingleNode("Comments/Critical").InnerText + "\n";
                __pat.Comments += __patient?.SelectSingleNode("Comments/PointOfSale").InnerText + "\n";
                __pat.Comments += __patient?.SelectSingleNode("Comments/LastMTMComment").InnerText + "\n";

                XmlNodeList __phone_node_list = __patient?.SelectNodes("PhoneNumbers/PhoneNumber");
                foreach (XmlNode __num in __phone_node_list)
                {
                    if (__num["SequenceNumber"].InnerText == "1")
                    {
                        __pat.Phone1 = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                    }
                    else if (__num["SequenceNumber"].InnerText == "2")
                    {
                        __pat.Phone2 = __num["AreaCode"].InnerText + __num["Number"].InnerText;
                    }
                }

                __pat.RxSys_DocID = __patient?.SelectSingleNode("PatientPrimaryPrescriberID").InnerText;

                XmlNodeList __allergy_node_list = __patient?.SelectNodes("Allergies/Allergy");
                int         i = 1;
                foreach (XmlNode __allergy in __allergy_node_list)
                {
                    __pat.Allergies += string.Format("{0}) {1}, MedID: {2}, IDType: {3}\n", i++, __allergy["Description"].InnerText, __allergy["MedicationID"].InnerText, __allergy["MedicationIDType"].InnerText);
                }

                XmlNodeList __scrip_node_list = __patient?.SelectNodes("OtherMedications/Medication");
                foreach (XmlNode __scrip in __scrip_node_list)
                {
                    var __new_scrip = new motPrescriptionRecord("Add", __args.__auto_truncate);

                    __new_scrip.RxSys_RxNum  = __scrip["RxNumber"].InnerText;
                    __new_scrip.RxSys_DocID  = __scrip["Prescriber"].InnerText;
                    __new_scrip.RxSys_DrugID = __scrip["DrugNDC"].InnerText;
                    __new_scrip.QtyDispensed = __scrip["DaysSupply"].InnerText;
                    __new_scrip.RxStartDate  = __scrip["LastDateFilled"].InnerText;
                    __new_scrip.Refills      = __scrip["RefillsRemaining"].InnerText;

                    __new_scrip.RxSys_PatID = __pat.RxSys_PatID;
                    __new_scrip.RxType      = "0";

                    __rx_list.Add(__new_scrip);
                }

                __pat.Write(__gateway);
                __show_common_event("Added Patient: " + __pat.FirstName + " " + __pat.LastName);
                foreach (motPrescriptionRecord __scp in __rx_list)
                {
                    __scp.Write(__gateway);
                    __show_common_event("Added Scrip: " + __scp.RxSys_RxNum + " for " + __pat.FirstName + " " + __pat.LastName);
                }
            }
            catch (Exception ex)
            {
                __show_error_event("Failed Writing Records: " + ex.Message);
                throw;
            }

            // Facility
            // RX
        }