private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            string errorStr = null;

            var result = new EventResult();
            e.Result = result;

            var caseNumber = e.Argument as string;
            var AccountNumber = parser.SearchRemotePatient(caseNumber, ref errorStr);

            if (!string.IsNullOrEmpty(errorStr))
            {
                this.BeginInvoke((MethodInvoker)(() => RefreshMDSControlseState(false)));

                return;
            }

            CASE_NUMBER = caseNumber.Trim().ToUpper();
            var patientCache = FullCacheHK.PataientCache[caseNumber];

            if (patientCache == null)
            {
                MSGBox.ShowInfo("NO Patient!", "SearchPatient");

                this.BeginInvoke((MethodInvoker)(() => RefreshMDSControlseState(false)));

                return;
            }

            result.Patient = patientCache.PatientDemoEnquiry;
            result.Allergies = (patientCache.AlertProfileRes ?? new AlertProfileResult());
            result.Orders = patientCache.MedicationProfileRes;
            this.BeginInvoke((MethodInvoker)delegate
            {
                var HK_ID = result.Patient.Patient.HKID;

                RefreshMDSControlseState(true);

                if (RuleMappingHelper.HKID_ItemCode_Mapping.ContainsKey(HK_ID))
                {
                    var itemCodes = RuleMappingHelper.HKID_ItemCode_Mapping[HK_ID].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    cbxItemCodes.DataSource = itemCodes;
                }

                scintillaPatient.Text = XmlHelper.FormatXML(XmlHelper.XmlSerializeToString(result.Patient));
                scintillaProfiles.Text = JsonHelper.FormatJson(JsonHelper.ToJson(result.Orders));
                scintillaAlerts.Text = JsonHelper.FormatJson(JsonHelper.ToJson(result.Allergies));
            });
        }