Пример #1
0
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     RiskFactors.PersistFullObject(e, OwningPatient.unitnum, OwningPatient.apptid);
     int proband_age;
     if (int.TryParse(OwningPatient.age, out proband_age))
     {
         int lifetime_age = proband_age;
         foreach (ClausRiskByAge o in this)
         {
             if (o.age > lifetime_age)
             {
                 lifetime_age = o.age;
             }
         }
         foreach (ClausRiskByAge o in this)
         {
             if (o.age - proband_age == 5)
             {
                 o.description = "Five Year";
             }
             if (lifetime_age == o.age)
             {
                 o.description = "Lifetime";
             }
             o.PersistFullObject(e, OwningPatient.unitnum, OwningPatient.apptid);
         }
     }
 }
Пример #2
0
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (TcRiskByAge o in this)
     {
         o.PersistFullObject(e, OwningPatient.unitnum, OwningPatient.apptid, RiskFactors.TYRER_CUZICK7_VERSION, OwningPatient.RP.BMRS_EffectiveTime, OwningPatient.RP.BMRS_RequestId);
     }
 }
Пример #3
0
 //this override passes in the unitnum for the persist of each BrcaProCancerRiskByAge
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (BrcaProCancerRiskByAge o in this)
     {
         o.PersistFullObject(e, OwningPatient.unitnum, OwningPatient.apptid);
     }
 }
Пример #4
0
 /**************************************************************************************************/
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (HraObject o in this)
     {
         ((GUIPreference)o).owningPatient = OwningPatient;
     }
     base.PersistFullList(e);
 }
Пример #5
0
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("apptID", this.apptID);

            DoPersistWithSpAndParams(e, "sp_3_Save_Appointment", ref pc);
        }
Пример #6
0
 /**************************************************************************************************/
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (HraObject o in this)
     {
         ((ClincalObservation)o).owningPMH = OwningPMH;
     }
     base.PersistFullList(e);
 }
Пример #7
0
        private void NewTask_Click(object sender, EventArgs e)
        {
            Task t = new Task(proband, "Task", "Pending", SessionManager.Instance.ActiveUser.ToString(), DateTime.Now);
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

            args.Persist = true;
            proband.Tasks.AddToList(t, args);
        }
Пример #8
0
 /**************************************************************************************************/
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (HraObject o in this)
     {
         ((ClincalObservation)o).owningPMH = OwningPMH;
     }
     base.PersistFullList(e);
 }
Пример #9
0
 /**************************************************************************************************/
 public override void PersistFullList(HraModelChangedEventArgs e)
 {
     foreach (HraObject o in this)
     {
         ((GeneticTest)o).owningPMH = OwningPMH;
     }
     base.PersistFullList(e);
 }
Пример #10
0
 /**************************************************************************************************/
 public override void BackgroundPersistWork(HraModelChangedEventArgs e)
 {
     var pc = new ParameterCollection();
     pc.Add("unitnum", unitnum);
     DoPersistWithSpAndParams(e,
                              "sp_3_Save_PedigreeAnnotations",
                              ref pc);
 }
Пример #11
0
 private void MammoHxChangedHandler(object sender, HraModelChangedEventArgs e)
 {
     if (e.sendingView != this)
     {
         FillControlsByControlName(this._mammoHx);
         FillMammoControls();
         ToggleDateFields();
     }
 }
Пример #12
0
 private void BreastBxChangedHander(object sender, HraModelChangedEventArgs e)
 {
     if (e.sendingView != this)
     {
         FillControlsByControlName(this._breastBx);
         FillBreastBxControls();
         ToggleDateFields();
     }
 }
Пример #13
0
        /*****************************************************/

        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("diseaseID", diseaseID);
            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_DiseaseObject",
                                     ref pc);
        }
Пример #14
0
        /**************************************************************************************************/

        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            var pc = new ParameterCollection();

            pc.Add("unitnum", unitnum);
            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_PedigreeAnnotations",
                                     ref pc);
        }
Пример #15
0
        /**************************************************************************************************/
        public override void PersistFullList(HraModelChangedEventArgs e)
        {
            foreach (HraObject o in this)
            {
                ((Race)o).owner = this;
            }

            base.PersistFullList(e);
        }
Пример #16
0
 /**************************************************************************************************/
 public override void BackgroundPersistWork(HraModelChangedEventArgs e)
 {
     ParameterCollection pc = new ParameterCollection();
     pc.Add("unitnum", theProband.unitnum);
     pc.Add("apptid", theProband.apptid);
     DoPersistWithSpAndParams(e,
                               "sp_3_Save_ProcHx",
                               ref pc);
 }
Пример #17
0
        /**************************************************************************************************/
        public override void PersistFullList(HraModelChangedEventArgs e)
        {
            foreach (HraObject o in this)
            {
                ((Nation)o).owner = this;
            }

            base.PersistFullList(e);
        }
Пример #18
0
        public override void PersistFullObject(HraModelChangedEventArgs e)
        {
            if (Details != null)
            {
                Details.owningClincalObservation = this;
                Details.BackgroundPersistWork(e);
            }

            base.PersistFullObject(e);
        }
Пример #19
0
        private void addNewOrderButton_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedTab = todaysOrdersTabPage;
            Order order = new Order();

            HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

            args.Persist = false;
            orders.AddToList(order, args);
        }
Пример #20
0
        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("patientUnitnum", patientOwning.unitnum);
            pc.Add("apptid", patientOwning.apptid);
            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_SocialHistory",
                                     ref pc);
        }
Пример #21
0
        private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)
        {
            Recommendation r = (Recommendation)ScreeningRecComboBox.SelectedItem;

            cdsbo.ScreeningRec = r.recID;
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(this);

            args.updatedMembers.Add(cdsbo.GetMemberByName("ScreeningRec"));
            cdsbo.SignalModelChanged(args);
        }
Пример #22
0
        private void SaveASOData()
        {
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

            args.updatedMembers.Add(geneticTestResult.GetMemberByName("geneName"));
            args.updatedMembers.Add(geneticTestResult.GetMemberByName("ASOMutationName"));
            args.updatedMembers.Add(geneticTestResult.GetMemberByName("ASOResultSignificance"));
            args.updatedMembers.Add(geneticTestResult.GetMemberByName("ASOMutationAA"));
            this.geneticTestResult.SignalModelChanged(args);
        }
Пример #23
0
        /*******************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();
            pc.Add("paragraphID", paragraphID);
            pc.Add("providerID", providerID);

            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_ProviderParagraph",
                                     ref pc);
        }
Пример #24
0
 /**************************************************************************************************/
 private void TaskChanged(object sender, HraModelChangedEventArgs e)
 {
     foreach (Control c in flowLayoutPanel1.Controls)
     {
         if (((PendingTaskSummaryRow)c).GetTask() == sender)
         {
             ((PendingTaskSummaryRow)c).SetTask((Task)sender);
         }
     }
 }
Пример #25
0
        /*******************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("userLogin", userLogin);

            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_User",
                                     ref pc);
        }
Пример #26
0
 /**************************************************************************************************/
 public override void BackgroundPersistWork(HraModelChangedEventArgs e)
 {
     ParameterCollection pc = new ParameterCollection();
     pc.Add("unitnum", owner.person.owningFHx.proband.unitnum);
     pc.Add("relativeID", owner.person.relativeID);
     pc.Add("apptid", owner.person.owningFHx.proband.apptid);
     DoPersistWithSpAndParams(e,
                               "sp_3_Save_Nation",
                               ref pc);
 }
Пример #27
0
        /**************************************************************************************************/

        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("unitnum", theProband.unitnum);
            pc.Add("apptid", theProband.apptid);
            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_ProcHx",
                                     ref pc);
        }
Пример #28
0
        private void comboBox2_SelectionChangeCommitted(object sender, EventArgs e)
        {
            Recommendation r = (Recommendation)MmrTestResultComboBox.SelectedItem;

            cdsbo.MmrGenTestResult = r.recID;
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(this);

            args.updatedMembers.Add(cdsbo.GetMemberByName("MmrGenTestResult"));
            cdsbo.SignalModelChanged(args);
        }
Пример #29
0
        private void cA125ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LabResult lr = new LabResult();

            lr.unitnum  = proband.unitnum;
            lr.date     = DateTime.Today;
            lr.TestDesc = "CA125";
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(this);

            proband.labsHx.AddToList(lr, args);
        }
Пример #30
0
        /*******************************************************************************/

        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("paragraphID", paragraphID);
            pc.Add("providerID", providerID);

            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_ProviderParagraph",
                                     ref pc);
        }
Пример #31
0
        private void testYearComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (geneticTest.testYear != testYearComboBox.Text)
            {
                HraModelChangedEventArgs args = new HraModelChangedEventArgs(geneticTestingView);
                geneticTest.testYear = testYearComboBox.Text;

                args.updatedMembers.Add(geneticTest.GetMemberByName("testYear"));
                geneticTest.SignalModelChanged(args);
            }
        }
Пример #32
0
        /*****************************************************/

        public void Set_snomed(string value, HraView sendingView)
        {
            if (snomed != value)
            {
                snomed = value;
                var args = new HraModelChangedEventArgs(null);
                args.sendingView = sendingView;
                args.updatedMembers.Add(GetMemberByName("snomed"));
                SignalModelChanged(args);
            }
        }
Пример #33
0
        //a customized persistence method for BrcaProCancerRiskByAge items
        public void PersistFullObject(HraModelChangedEventArgs e, string unitnum, int apptid)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("unitnum", unitnum);
            pc.Add("apptid", apptid);

            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_BrcaProCancerRiskByAge",
                                     ref pc);
        }
Пример #34
0
        /*****************************************************/

        public void Set_Problem(string value, HraView sendingView)
        {
            if (Problem != value)
            {
                Problem = value;
                var args = new HraModelChangedEventArgs(null);
                args.sendingView = sendingView;
                args.updatedMembers.Add(GetMemberByName("Problem"));
                SignalModelChanged(args);
            }
        }
Пример #35
0
        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            pc.Add("unitnum", owner.person.owningFHx.proband.unitnum);
            pc.Add("relativeID", owner.person.relativeID);
            pc.Add("apptid", owner.person.owningFHx.proband.apptid);
            DoPersistWithSpAndParams(e,
                                     "sp_3_Save_Nation",
                                     ref pc);
        }
Пример #36
0
        private void allelicStateComboBox_SelectionChangeCommitted(object sender, EventArgs e)
        {
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

            geneticTestResult.allelicState = allelicStateComboBox.SelectedItem.ToString();

            args.updatedMembers.Add(geneticTestResult.GetMemberByName("allelicState"));
            geneticTestResult.SignalModelChanged(args);

            SignalOwningTestCompleted();
        }
Пример #37
0
        /**************************************************************************************************/
        private void ClinicalObservationChanged(object sender, HraModelChangedEventArgs e)
        {
            int senderId = ((ClincalObservation)sender).instanceID;

            if (e.Delete)
            {
            }
            else
            {
            }
        }
Пример #38
0
        /*****************************************************/

        public void Set_diseaseOrder(string value, HraView sendingView)
        {
            if (diseaseOrder != value)
            {
                diseaseOrder = value;
                var args = new HraModelChangedEventArgs(null);
                args.sendingView = sendingView;
                args.updatedMembers.Add(GetMemberByName("diseaseOrder"));
                SignalModelChanged(args);
            }
        }
Пример #39
0
        /**************************************************************************************************/
        private void AddDiseaseButton_Click(object sender, EventArgs e)
        {
            ClincalObservation co = new ClincalObservation(pmh);
            //SessionManager.Instance.MetaData.Diseases.SetDataFromDiseaseName(ref co);
            HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

            args.Persist = false;
            pmh.Observations.AddToList(co, args);

            noLabel.Visible = false;
        }
Пример #40
0
        /*****************************************************/

        public void Set_comments(string value, HraView sendingView)
        {
            if (comments != value)
            {
                comments = value;
                var args = new HraModelChangedEventArgs(null);
                args.sendingView = sendingView;
                args.updatedMembers.Add(GetMemberByName("comments"));
                SignalModelChanged(args);
            }
        }
Пример #41
0
        /*****************************************************/

        public void Set_ageDiagnosis(string value, HraView sendingView)
        {
            if (ageDiagnosis != value)
            {
                ageDiagnosis = value;
                var args = new HraModelChangedEventArgs(null);
                args.sendingView = sendingView;
                args.updatedMembers.Add(GetMemberByName("ageDiagnosis"));
                SignalModelChanged(args);
            }
        }
Пример #42
0
        //a customized persistence method for TcRiskByAge items
        public void PersistFullObject(HraModelChangedEventArgs e, string unitnum, int apptid, string version, DateTime? BMRS_EffectiveTime, Int64? BMRS_RequestId)
        {
            ParameterCollection pc = new ParameterCollection();
            pc.Add("unitnum", unitnum);
            pc.Add("apptid", apptid);
            pc.Add("version", version);
            pc.Add("BMRS_EffectiveTime", BMRS_EffectiveTime);
            pc.Add("BMRS_RequestId", BMRS_RequestId);

            DoPersistWithSpAndParams(e,
                                        "sp_3_Save_TcRiskByAge",
                                        ref pc);
        }
Пример #43
0
        public override void PersistFullList(HraModelChangedEventArgs e)
        {
            if (proband!= null)
            {
                if (proband.apptid > 0)
                {
                    foreach (HraObject ho in this)
                    {
                        Provider p = (Provider)ho;
                        p.apptid = proband.apptid;
                    }
                }
            }

            base.PersistFullList(e);
        }
Пример #44
0
        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();

            try
            {
                pc.Add("ID", ID);
                pc.Add("parameterValue", parameterValue);

                SqlDataReader reader = BCDB2.Instance.ExecuteReaderSPWithParams("sp_3_SetQueueParameter", pc);
            }
            catch (Exception ee)
            {
                Logger.Instance.WriteToLog("Error saving QueueParameter: \r\n" + ee.InnerException.ToString());
            }
        }
Пример #45
0
 /**************************************************************************************************/
 public override void PersistFullObject(HraModelChangedEventArgs e)
 {
     base.PersistFullObject(e);
     breastBx.PersistFullObject(e);
 }
Пример #46
0
        private void processMmrProHL7Scores(XPathNavigator nav)
        {
            //get MmrPro scores
            XPathNavigator mpNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='MMRPRO'][1]");
            if (mpNode != null)
            {
                RP.MmrPro_Version = mpNode.Evaluate("string(methodCode[@code='MMRPRO']/@codeSystemVersion)").ToString();
                XPathNavigator textNode = mpNode.SelectSingleNode("text");
                //create XML fragment with messages and hazard rates
                XmlDocument myTempDoc = new XmlDocument();
                myTempDoc.LoadXml("<text>" + System.Web.HttpUtility.HtmlDecode(textNode.InnerXml) + "</text>");
                XPathNavigator n1 = myTempDoc.CreateNavigator();
                RP.MmrPro_Messages = n1.Evaluate("string(//messages[1])").ToString().Trim();
                XPathNodeIterator xnit = n1.Select("//hazardMMRRates[1]/row");  //gets all the hazard rate rows (one per age)
                int ptAge = -1;
                Int32.TryParse(this.age, out ptAge);

                XPathNodeIterator ptCPRIter = mpNode.Select("component/percentageRisk[typeId/@extension = '" + this.relativeID + "']");
                foreach (XPathNavigator cpr in ptCPRIter)
                {
                    switch (cpr.Evaluate("string(code/@displayName)").ToString())
                    {
                        case "probCarrier":
                            RP.MmrPro_1_2_6_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMLH1Mutation":
                            RP.MmrPro_MLH1_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMSH2Mutation":
                            RP.MmrPro_MSH2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMSH6Mutation":
                            RP.MmrPro_MSH6_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }

                foreach (XPathNavigator row in xnit)
                {
                    int id = Convert.ToInt32(row.Evaluate("string(@id)").ToString());
                    if (id <= ptAge) continue;  //no need to save all 0 hazard rate rows in object model or DB

                    //find an existing MMRproCancerRiskByAge for this age, if any
                    //  else make a new one and add it to the MmrproCancerRiskList
                    MMRproCancerRiskByAge mpcrba = (MMRproCancerRiskByAge)RP.MmrproCancerRiskList.FirstOrDefault(item => ((MMRproCancerRiskByAge)item).age == id);
                    if (mpcrba == null)
                    {
                        mpcrba = new MMRproCancerRiskByAge();
                        mpcrba.age = id;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.MmrproCancerRiskList.AddToList(mpcrba, args);
                    }
                    mpcrba.hFX0 = Convert.ToDouble(row.Evaluate("concat(string(@hFX0), string(@hMX0))").ToString());
                    mpcrba.hFX1 = Convert.ToDouble(row.Evaluate("concat(string(@hFX1), string(@hMX1))").ToString());
                    mpcrba.hFX2 = Convert.ToDouble(row.Evaluate("concat(string(@hFX2), string(@hMX2))").ToString());
                    mpcrba.hFX6 = Convert.ToDouble(row.Evaluate("concat(string(@hFX6), string(@hMX6))").ToString());
                    mpcrba.hFY0 = Convert.ToDouble(row.Evaluate("concat(string(@hFY0), string(@hMY0))").ToString());
                    mpcrba.hFY1 = Convert.ToDouble(row.Evaluate("concat(string(@hFY1), string(@hMY1))").ToString());
                    mpcrba.hFY2 = Convert.ToDouble(row.Evaluate("concat(string(@hFY2), string(@hMY2))").ToString());
                    mpcrba.hFY6 = Convert.ToDouble(row.Evaluate("concat(string(@hFY6), string(@hMY6))").ToString());

                    mpcrba.ColonCaRisk = ((double)RP.MmrPro_MLH1_Mut_Prob / 100.0 * mpcrba.hFX1) +
                     ((double)RP.MmrPro_MSH2_Mut_Prob / 100.0 * mpcrba.hFX2) +
                     ((double)RP.MmrPro_MSH6_Mut_Prob / 100.0 * mpcrba.hFX6) +
                     ((1 - (double)(RP.MmrPro_MLH1_Mut_Prob / 100.0 + RP.MmrPro_MSH2_Mut_Prob / 100.0 + RP.MmrPro_MSH6_Mut_Prob / 100.0)) * mpcrba.hFX0);

                    mpcrba.EndometrialCaRisk = ((double)RP.MmrPro_MLH1_Mut_Prob / 100.0 * mpcrba.hFY1) +
                                                ((double)RP.MmrPro_MSH2_Mut_Prob / 100.0 * mpcrba.hFY2) +
                                                ((double)RP.MmrPro_MSH6_Mut_Prob / 100.0 * mpcrba.hFY6) +
                     ((1 - (double)(RP.MmrPro_MLH1_Mut_Prob / 100.0 + RP.MmrPro_MSH2_Mut_Prob / 100.0 + RP.MmrPro_MSH6_Mut_Prob / 100.0)) * mpcrba.hFY0);

                    mpcrba.ColonCaRisk = mpcrba.ColonCaRisk * 100;
                    mpcrba.EndometrialCaRisk = mpcrba.EndometrialCaRisk * 100;

                    mpcrba.ColonCaRiskWithMLH1 = 100 * mpcrba.hFX1;
                    mpcrba.EndometrialCaRiskWithMLH1 = 100 * mpcrba.hFY1;

                    mpcrba.ColonCaRiskWithMSH2 = 100 * mpcrba.hFX2;
                    mpcrba.EndometrialCaRiskWithMSH2 = 100 * mpcrba.hFY2;

                    mpcrba.ColonCaRiskWithMSH6 = 100 * mpcrba.hFX6;
                    mpcrba.EndometrialCaRiskWithMSH6 = 100 * mpcrba.hFY6;

                    mpcrba.ColonCaRiskNoMut = 100 * mpcrba.hFX0;
                    mpcrba.EndometrialCaRiskNoMut = 100 * mpcrba.hFY0;
                }

                XPathNodeIterator ptAgeChunkIter = mpNode.Select("component/age[value/low/@value]");
                int five_year_age = 105;
                int lifetime_age = 0;
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    if (age < five_year_age) five_year_age = age;
                    if (age > lifetime_age) lifetime_age = age;
                    //find an existing MmrProCancerRiskByAge for this age, if any
                    //  else make a new one and add it to the MmrproCancerRiskList
                    MMRproCancerRiskByAge mpcrba = (MMRproCancerRiskByAge)RP.MmrproCancerRiskList.FirstOrDefault(item => ((MMRproCancerRiskByAge)item).age == age);
                    if (mpcrba == null)
                    {
                        mpcrba = new MMRproCancerRiskByAge();
                        mpcrba.age = age;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.MmrproCancerRiskList.AddToList(mpcrba, args);
                    }

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        case "colorectalCancerRisk":
                            mpcrba.ColonCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            if (age == five_year_age) RP.MmrPro_5Year_Colon = mpcrba.ColonCaRisk;
                            if (age == lifetime_age) RP.MmrPro_Lifetime_Colon = mpcrba.ColonCaRisk;
                            break;
                        case "endometrialCancerRisk":
                            mpcrba.EndometrialCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            if (age == five_year_age) RP.MmrPro_5Year_Endometrial = mpcrba.EndometrialCaRisk;
                            if (age == lifetime_age) RP.MmrPro_Lifetime_Endometrial = mpcrba.EndometrialCaRisk;
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }

                //update risk scores for all non-proband family members
                //these are mutation probs only
                XPathNodeIterator relCPRIter = mpNode.Select("component/percentageRisk[typeId/@extension != '" + this.relativeID + "']");
                foreach (XPathNavigator cpr in relCPRIter)
                {
                    int relId = Convert.ToInt32(cpr.Evaluate("string(typeId/@extension)").ToString());
                    Person rel = FHx.Relatives.FirstOrDefault(item => ((Person)item).relativeID == relId);
                    if (rel.RP.BMRS_EffectiveTime == null) rel.RP.BMRS_EffectiveTime = RP.BMRS_EffectiveTime;
                    if (rel.RP.MmrPro_Version == null) rel.RP.MmrPro_Version = RP.MmrPro_Version;
                    switch (cpr.Evaluate("string(code/@displayName)").ToString())
                    {
                        case "probCarrier":
                            rel.RP.MmrPro_1_2_6_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMLH1Mutation":
                            rel.RP.MmrPro_MLH1_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMSH2Mutation":
                            rel.RP.MmrPro_MSH2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probMSH6Mutation":
                            rel.RP.MmrPro_MSH6_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
            }
        }
Пример #47
0
 /**************************************************************************************************/
 public override void PersistFullObject(HraModelChangedEventArgs e)
 {
     base.PersistFullObject(e);
     FHx.proband = this;
     FHx.PersistFullList(e);
     MedHx.theProband = this;
     MedHx.PersistFullObject(e);
     SocialHx.patientOwning = this;
     SocialHx.PersistFullObject(e);
     PhysicalExam.patientOwning = this;
     PhysicalExam.PersistFullObject(e);
     ObGynHx.patientOwning = this;
     ObGynHx.PersistFullObject(e);
     procedureHx.theProband = this;
     procedureHx.PersistFullObject(e);
     breastImagingHx.OwningPatient = this;
     breastImagingHx.PersistFullList(e);
     labsHx.OwningPatient = this;
     labsHx.PersistFullList(e);
     if (follupSatus != null)
     {
         follupSatus.unitnum = this.unitnum;
         follupSatus.apptid = this.apptid;
         follupSatus.PersistFullObject(e);
     }
     transvaginalImagingHx.OwningPatient = this;
     transvaginalImagingHx.PersistFullList(e);
     Tasks.OwningPatient = this;
     Tasks.PersistFullList(e);
     if (cdsBreastOvary != null)
     {
         cdsBreastOvary.patientOwning = this;
         cdsBreastOvary.PersistFullObject(e);
     }
     if (Providers != null)
     {
         Providers.proband = this;
         Providers.PersistFullList(e);
     }
     guiPreferences.OwningPatient = this;
     guiPreferences.PersistFullList(e);
     PediatricCDS.OwningPatient = this;
     PediatricCDS.PersistFullList(e);
     SurveyReponses.OwningPatient = this;
     foreach (SurveyResponse sr in SurveyReponses)
     {
         sr.owningPatient = this;
     }
     SurveyReponses.PersistFullList(e);
 }
Пример #48
0
        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();
            pc.Add("unitnum", patientOwning.unitnum);
            pc.Add("apptid", patientOwning.apptid);

            DoPersistWithSpAndParams(e,
                                      "sp_3_Save_CDSRecs",
                                      ref pc);
        }
Пример #49
0
        private void processCCRATHL7Scores(XPathNavigator nav)
        {
            //get ccrat scores
            XPathNavigator ccNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='CCRAT'][1]");
            if (ccNode != null)
            {
                RP.CCRATModel.Details.CCRAT_VERSION = ccNode.Evaluate("string(methodCode[@code='CCRAT']/@codeSystemVersion)").ToString();
                XPathNavigator textNode = ccNode.SelectSingleNode("text");
                if (textNode != null)
                {
                    //create XML fragment with messages
                    XmlDocument myTempDoc = new XmlDocument();
                    myTempDoc.LoadXml("<text>" + System.Web.HttpUtility.HtmlDecode(textNode.InnerXml) + "</text>");
                    XPathNavigator n1 = myTempDoc.CreateNavigator();
                    RP.CCRATModel.Details.CCRAT_MESSAGES = n1.Evaluate("string(//messages[1])").ToString().Trim();
                    RP.CCRATModel.Details.CCRAT_NAERRORS = n1.Evaluate("string(//NAError[1])").ToString().Trim();
                    RP.CCRATModel.Details.CCRAT_ERRORS = n1.Evaluate("string(//Error[1])").ToString().Trim();
                }
                else
                {
                    RP.CCRATModel.Details.CCRAT_MESSAGES = "";
                    RP.CCRATModel.Details.CCRAT_NAERRORS = "";
                    RP.CCRATModel.Details.CCRAT_ERRORS = "";
                }

                XPathNodeIterator ptAgeChunkIter = ccNode.Select("component/age[value/low/@value]");
                int five_year_age = 105;
                int lifetime_age = 0;
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    if (age < five_year_age) five_year_age = age;
                    if (age > lifetime_age) lifetime_age = age;
                    //find an existing CCRATRiskByAge for this age, if any
                    //  else make a new one and add it to the CCRAT list
                    CCRATRiskByAge ccrba = (CCRATRiskByAge)RP.CCRATModel.FirstOrDefault(item => ((CCRATRiskByAge)item).age == age);
                    if (ccrba == null)
                    {
                        ccrba = new CCRATRiskByAge();
                        ccrba.age = age;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.CCRATModel.AddToList(ccrba, args);
                    }

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        case "colorectalCancerRisk":
                            ccrba.ColonCaRisk = 100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            if (age == five_year_age) RP.CCRATModel.Details.CCRAT_FiveYear_CRC = ccrba.ColonCaRisk;
                            if (age == lifetime_age) RP.CCRATModel.Details.CCRAT_Lifetime_CRC = ccrba.ColonCaRisk;
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
            }
        }
Пример #50
0
        public void RecalculateRisk()
        {
            //Assembly.LoadFrom("C:\\HRA\\Dev\\RiskAppCoreProjects\\RiskClinicApp\\bin\\Debug\\RiskAppCore.dll");

            if (Configurator.useAggregatorService())
            {

                //new way
                //Serialize the FH
                this.LoadFullObject(); //needed to ensure patient object is complete, including ObGynHx, etc.
                RiskApps3.Model.PatientRecord.FHx.FamilyHistory theFH = this.owningFHx;

                bool dcis_found = false;
                bool dcisAsCancer = true;
                foreach (Person p in this.FHx)
                {
                    foreach (ClincalObservation co in p.PMH.Observations)
                    {
                        if (string.Compare(co.riskMeaning, "DCIS", true) == 0)
                        {
                            dcis_found = true;
                        }
                    }
                }

                if (dcis_found  && !bSilent)    // added silent mode jdg 9/1/15
                {
                    DialogResult dr = MessageBox.Show("Would you like to consider DCIS a cancer diagnosis for BRCAPRO and Tyrer-Cuzick model calculations?  DCIS WILL be considered as cancer for use with the Myriad, Claus and Gail models.", "BRCAPRO Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dr == DialogResult.No)
                    {
                        dcisAsCancer = false;
                    }
                }
                else
                {
                    if (dcis_found && bSilent)
                    {
                        // to use or not to use?  that is the question.
                        // And the answer is... YES.
                        dcisAsCancer = true;    // though it defaulted to this anyway, as it turns out
                    }
                }

                string fhAsString = TransformUtils.DataContractSerializeObject<RiskApps3.Model.PatientRecord.FHx.FamilyHistory>(theFH);

                //transform it
                XmlDocument inDOM = new XmlDocument();
                inDOM.LoadXml(fhAsString);
                if (String.IsNullOrEmpty(toolsPath))
                {
                    toolsPath = RiskApps3.Utilities.Configurator.getNodeValue("Globals", "ToolsPath"); // @"C:\Program Files\riskappsv2\tools\";
                }
                if (String.IsNullOrEmpty(strServiceBinding))
                {
                    strServiceBinding = "WSHttpBinding_IService1";
                }
                XmlDocument resultXmlDoc = TransformUtils.performTransform(inDOM, toolsPath, @"hra_to_ccd_remove_namespaces.xsl");
                XmlDocument hl7FHData;
                if (dcis_found && dcisAsCancer)
                {
                    //only do this when calling the RiskAggravator Service; we don't want to change the actual diseases in the object model
                    hl7FHData = TransformUtils.performTransformWith2Params(resultXmlDoc, toolsPath, @"hra_serialized_to_hl7.xsl", "dcisAsCancer", "1", "deIdentify", "1");

                }
                else
                {
                    hl7FHData = TransformUtils.performTransformWithParam(resultXmlDoc, toolsPath, @"hra_serialized_to_hl7.xsl", "deIdentify", "1");
                }

                //Insert Clinic Name and Institution Name into HL7
                //Get the first (and only) text node
                XmlNode theFirstTextNode = hl7FHData.SelectSingleNode("(//FamilyHistory/text)[1]");
                //and replace its contents with the clinic name and institution names
                theFirstTextNode.InnerText = " Current User:  ; " + BCDB2.Instance.GetClinicAndInstitutionNames(apptid);

                bool dump = Configurator.getConfigBool("WriteAggregatorFiles");

                //convert to string
                string hl7Request = convertXMLDocToString(hl7FHData);
                if (dump)
                {
                    File.WriteAllText("AggregatorRequest.xml", hl7Request);
                }

                //call the aggregator servicethis is a blocking call, up to 60 seconds
                //AggregatorServiceReference2.Service1Client client = new AggregatorServiceReference2.Service1Client();
                //next line is for testing locally only
                //AggregatorServiceReferenceDev3.Service1Client client = new AggregatorServiceReferenceDev3.Service1Client();
                HraRiskAggregator.Service1Client client = new HraRiskAggregator.Service1Client(strServiceBinding);
                client.InnerChannel.OperationTimeout = new TimeSpan(0, 1, 0);  //set the timeout to 1 minute

                string hl7Reply = "";
                try
                {
                    // old way:
                    // hl7Reply = client.GetRiskData(hl7Request);
                    //

                    //call the aggregator using the licenseID in the config file
                    string licID = Configurator.getAggregatorLicenseID();
                    hl7Reply = client.GetRiskDataWithDetails(hl7Request, licID);

                    //if we make it here, the synchronous web service call completed successfully
                    if (dump)
                    {
                        File.WriteAllText("AggregatorReply.xml", hl7Reply);
                    }

                    RP.ClearRP();

                    //Use an XPath navigator to retrieve the XML results into the object model
                    StringReader sr = new StringReader(hl7Reply);
                    XmlTextReader tx = new XmlTextReader(sr);
                    XPathDocument docNav = new XPathDocument(tx);
                    XPathNavigator nav = docNav.CreateNavigator();

                    //get BMRS requestId, effectiveTime, and top level messages from HL7 reply
                    XPathNavigator bmrsInfo = nav.SelectSingleNode("//pedigreeAnalysisResults[id/@extension][1]");
                    if (bmrsInfo != null)
                    {
                        RP.BMRS_RequestId = Convert.ToInt64(bmrsInfo.Evaluate("string(id/@extension)").ToString());
                        string hl7effTime = bmrsInfo.Evaluate("string(effectiveTime/@value)").ToString();
                        string[] formats = {"yyyyMMddHHmmss", "yyyyMMddHHmm", "yyyyMMddHH", "yyyyMMdd"};
                        DateTime dateValue;
                        if (DateTime.TryParseExact(hl7effTime, formats, null, System.Globalization.DateTimeStyles.None, out dateValue))
                            RP.BMRS_EffectiveTime = dateValue;
                        else
                            RP.BMRS_EffectiveTime = null;
                        RP.BMRS_Messages = bmrsInfo.Evaluate("string(text)").ToString().Trim();
                    }

                    processBrcaProHL7Scores(nav);
                    processMmrProHL7Scores(nav);
                    processTyrerCuzickHL7Scores(nav);
                    processTyrerCuzickv7HL7Scores(nav);
                    processMyriadHL7Score(nav);
                    processClausHL7Scores(nav);
                    processGailHL7Scores(nav);
                    processCCRATHL7Scores(nav);
                    processPREMMScores(nav);
                    //invoke sp_RunNCCN if appropriate
                    BCDB2.Instance.ExecuteNonQuery("EXEC sp_RunNCCN @apptid='" + apptid + "'");
                    RP.NCCNGuideline.BackgroundListLoad();

                    HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);

                    //since we know we have new risk scores, persist 'em
                    foreach (Person p in FHx.Relatives)
                    {
                        p.RP.PersistFullObject(args);
                    }

                }
                catch (Exception e)  //exceptioned out on web service call; likely due to timeout
                {
                    if (dump)
                    {
                        File.WriteAllText("AggregatorReply.xml", e.Message);
                    }
                    //Configurator.aggregatorActive = false;
                    //updateServiceStatusOnMainForm(false);
                    //doThisWhenNotUsingAggregator();
                }

            } //end of if block for using Aggregator Service
            else
            {
                doThisWhenNotUsingAggregator();
            }

            BCDB2.Instance.ExecuteNonQuery("EXEC sp_3_populateBigQueue @unitnum='"+unitnum+"'");

            //RunCdsForm cds = new RunCdsForm();
            //cds.apptid = apptid;
            //cds.unitnum = unitnum;

            //cds.ShowDialog();

            //cdsBreastOvary.LoadObject();
        }
Пример #51
0
 /**************************************************************************************************/
 public override void PersistFullObject(HraModelChangedEventArgs e)
 {
     base.PersistFullObject(e);
      chemoprevention.patientOwning = theProband;
      chemoprevention.PersistFullObject(e);
 }
Пример #52
0
        public override void PersistFullObject(HraModelChangedEventArgs e)
        {
            //Azure barked on configurator
            //if (Configurator.useAggregatorService())
            //{
                //base.PersistFullObject(e);
                string ptUnitnum = OwningPerson.owningFHx.proband.unitnum;

                ParameterCollection pc = new ParameterCollection("unitnum", ptUnitnum);
                pc.Add("relId", ((Person)OwningPerson).relativeID);
                pc.Add("apptid", OwningPerson.owningFHx.proband.apptid);

                if (OwningPerson is Patient)
                {
                    if (OwningPerson.owningFHx.proband.RP.TyrerCuzickModel != null && OwningPerson.owningFHx.proband.RP.TyrerCuzickModel_v7 != null)
                    {
                        string tcVersion = OwningPerson.owningFHx.proband.RP.TyrerCuzickModel.RiskFactors.TYRER_CUZICK_VERSION;
                        string tcMessages = OwningPerson.owningFHx.proband.RP.TyrerCuzickModel.RiskFactors.TYRER_CUZICK_MESSAGES;
                        string tc7Version = OwningPerson.owningFHx.proband.RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_VERSION;
                        string tc7Messages = OwningPerson.owningFHx.proband.RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_MESSAGES;
                        pc.Add("TyrerCuzick_Version", tcVersion);
                        pc.Add("TyrerCuzick_Messages", tcMessages);
                        pc.Add("TyrerCuzick_v7_Version", tc7Version);
                        pc.Add("TyrerCuzick_v7_Messages", tc7Messages);
                    }
                }

                DoPersistWithSpAndParams(e,
                                            "sp_3_Save_RiskProfile",
                                            ref pc);
                if (OwningPerson is Patient)
                {
                    if (BracproCancerRisk != null)
                        BracproCancerRisk.PersistFullList(e);

                    if (MmrproCancerRiskList != null)
                        MmrproCancerRiskList.PersistFullList(e);

                    if (TyrerCuzickModel != null)
                        TyrerCuzickModel.PersistFullList(e);

                    if (TyrerCuzickModel_v7 != null)
                        TyrerCuzickModel_v7.PersistFullList(e);

                    if (GailModel != null)
                       GailModel.PersistFullList(e);

                    if (ClausModel != null)
                        ClausModel.PersistFullList(e);

                    AuditFullObject();
                }

            //}
        }
Пример #53
0
        /*******************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();
            pc.Add("providerID", providerID,true);

            if (apptid > 0)
            {
                pc.Add("apptid", apptid, false);
                pc.Add("PCP", PCP, false);
                pc.Add("refPhys", refPhys, false);
            }

            DoPersistWithSpAndParams(e,
                                      "sp_3_Save_Provider",
                                      ref pc);

            this.providerID = (int)pc["providerID"].obj;
        }
Пример #54
0
        private void processTyrerCuzickv7HL7Scores(XPathNavigator nav)
        {
            //get TC scores
            XPathNavigator tcNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='TYRER-CUZICK7'][1]");
            if (tcNode != null)
            {
                RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_VERSION = tcNode.Evaluate("string(methodCode[@code='TYRER-CUZICK7']/@codeSystemVersion)").ToString();
                XPathNavigator textNode = tcNode.SelectSingleNode("text");
                //create XML fragment with messages and hazard rates
                XmlDocument myTempDoc = new XmlDocument();
                myTempDoc.LoadXml("<text>" + (textNode != null ? System.Web.HttpUtility.HtmlDecode(textNode.InnerXml) : "<messages>No TC Messages</messages>") + "</text>");
                XPathNavigator n1 = myTempDoc.CreateNavigator();
                RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_MESSAGES = n1.Evaluate("string(//messages[1])").ToString().Trim();

                XPathNodeIterator ptCPRIter = tcNode.Select("component/percentageRisk[typeId/@extension = '" + this.relativeID + "']");
                foreach (XPathNavigator cpr in ptCPRIter)
                {
                    switch (cpr.Evaluate("string(code/@displayName)").ToString())
                    {
                        case "probCarrier":
                            RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_1_2 = (100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString())).ToString();
                            RP.TyrerCuzick_v7_Brca_1_2 = Convert.ToDouble(RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_1_2);
                            break;
                        case "probBRCA1Mutation":
                            RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_1 = (100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString())).ToString();
                            break;
                        case "probBRCA2Mutation":
                            RP.TyrerCuzickModel_v7.RiskFactors.TYRER_CUZICK7_2 = (100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString())).ToString();
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }

                XPathNodeIterator ptAgeChunkIter = tcNode.Select("component/age[value/low/@value]");
                int five_year_age = 105;
                int lifetime_age = 0;
                int ptAge = -1;
                Int32.TryParse(this.age, out ptAge);
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    if (age < five_year_age) five_year_age = age;
                    if (age > lifetime_age) lifetime_age = age;
                    //find an existing TcRiskByAge for this age, if any
                    //  else make a new one and add it to the TyrerCuzick_v7 list
                    TcRiskByAge tcrba = (TcRiskByAge)RP.TyrerCuzickModel_v7.FirstOrDefault(item => ((TcRiskByAge)item).age == age);
                    if (tcrba == null)
                    {
                        tcrba = new TcRiskByAge();
                        tcrba.age = age;
                        if (ptAge >= 0)
                        {
                            int deltaAge = age - ptAge;
                            tcrba.description = (deltaAge % 5 == 0) ? deltaAge.ToString() + " Year" : "";
                        }
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.TyrerCuzickModel_v7.AddToList(tcrba, args);
                    }

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        case "breastCancerRisk":
                            tcrba.BreastCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            if (age == five_year_age) RP.TyrerCuzick_v7_5Year_Breast = tcrba.BreastCaRisk;
                            if (age == lifetime_age) RP.TyrerCuzick_v7_Lifetime_Breast = tcrba.BreastCaRisk;
                            break;
                        case "populationBreastCancerRisk":
                            tcrba.PopulationCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }

                TcRiskByAge tcrbaoldest = (TcRiskByAge)RP.TyrerCuzickModel_v7.FirstOrDefault(item => ((TcRiskByAge)item).age == lifetime_age);
                if (tcrbaoldest != null)
                {
                    TcRiskByAge tcrbaLifetime = new TcRiskByAge();
                    tcrbaLifetime.age = tcrbaoldest.age;
                    tcrbaLifetime.BreastCaRisk = tcrbaoldest.BreastCaRisk;
                    tcrbaLifetime.PopulationCaRisk = tcrbaoldest.PopulationCaRisk;
                    tcrbaLifetime.description = "Lifetime";
                    RP.TyrerCuzickModel_v7.AddToList(tcrbaLifetime, new HraModelChangedEventArgs(null));
                }

            }
        }
Пример #55
0
 /**************************************************************************************************/
 public override void BackgroundPersistWork(HraModelChangedEventArgs e)
 {
 }
Пример #56
0
        private void processBrcaProHL7Scores(XPathNavigator nav)
        {
            //get BrcaPro scores
            XPathNavigator bpNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='BRCAPRO'][1]");
            if (bpNode != null)
            {
                RP.BrcaPro_Version = bpNode.Evaluate("string(methodCode[@code='BRCAPRO']/@codeSystemVersion)").ToString();
                XPathNavigator textNode = bpNode.SelectSingleNode("text");
                //create XML fragment with messages and hazard rates
                XmlDocument myTempDoc = new XmlDocument();
                myTempDoc.LoadXml("<text>" + System.Web.HttpUtility.HtmlDecode(textNode.InnerXml) + "</text>");
                XPathNavigator n1 = myTempDoc.CreateNavigator();
                RP.BrcaPro_Messages = n1.Evaluate("string(//messages[1])").ToString().Trim();
                XPathNodeIterator xnit = n1.Select("//hazardRates[1]/row");  //gets all the hazard rate rows (one per age)
                int ptAge = -1;  //handy to have age as an integer for hazard rate zero interest rows
                Int32.TryParse(this.age, out ptAge);

                foreach (XPathNavigator row in xnit)
                {
                    int id = Convert.ToInt32(row.Evaluate("string(@id)").ToString());
                    if (id <= ptAge) continue;  //no need to save all 0 hazard rate rows in object model or DB

                    //find an existing BrcaProCancerRiskByAge for this age, if any
                    //  else make a new one and add it to the BracproCancerRiskList
                    BrcaProCancerRiskByAge bpcrba = (BrcaProCancerRiskByAge)RP.BracproCancerRisk.FirstOrDefault(item => ((BrcaProCancerRiskByAge)item).age == id);
                    if (bpcrba == null)
                    {
                        bpcrba = new BrcaProCancerRiskByAge();
                        bpcrba.age = id;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.BracproCancerRisk.AddToList(bpcrba, args);
                    }
                    bpcrba.hFX0 = Convert.ToDouble(row.Evaluate("concat(string(@hFX0), string(@hMX0))").ToString());
                    bpcrba.hFY0 = Convert.ToDouble(row.Evaluate("concat(string(@hFY0), string(@hMY0))").ToString());
                    bpcrba.hFX1 = Convert.ToDouble(row.Evaluate("concat(string(@hFX1), string(@hMX1))").ToString());
                    bpcrba.hFY1 = Convert.ToDouble(row.Evaluate("concat(string(@hFY1), string(@hMY1))").ToString());
                    bpcrba.hFX2 = Convert.ToDouble(row.Evaluate("concat(string(@hFX2), string(@hMX2))").ToString());
                    bpcrba.hFY2 = Convert.ToDouble(row.Evaluate("concat(string(@hFY2), string(@hMY2))").ToString());
                    bpcrba.hFX12 = Convert.ToDouble(row.Evaluate("concat(string(@hFX12), string(@hMX12))").ToString());
                    bpcrba.hFY12 = Convert.ToDouble(row.Evaluate("concat(string(@hFY12), string(@hMY12))").ToString());
                }

                XPathNodeIterator ptCPRIter = bpNode.Select("component/percentageRisk[typeId/@extension = '" + this.relativeID + "']");
                foreach (XPathNavigator cpr in ptCPRIter)
                {
                    switch (cpr.Evaluate("string(code/@displayName)").ToString())
                    {
                        case "probCarrier":
                            RP.BrcaPro_1_2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probBRCA1Mutation":
                            RP.BrcaPro_1_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probBRCA2Mutation":
                            RP.BrcaPro_2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }

                XPathNodeIterator ptAgeChunkIter = bpNode.Select("component/age[value/low/@value]");
                int five_year_age = 105;
                int lifetime_age = 0;
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    if (age < five_year_age) five_year_age = age;
                    if (age > lifetime_age) lifetime_age = age;
                    //find an existing BrcaProCancerRiskByAge for this age, if any
                    //  else make a new one and add it to the BracproCancerRiskList
                    BrcaProCancerRiskByAge bpcrba = (BrcaProCancerRiskByAge)RP.BracproCancerRisk.FirstOrDefault(item => ((BrcaProCancerRiskByAge)item).age == age);
                    if (bpcrba == null)  //since we already processed hazard rates, list element for every age should already exist, and this code block should never run
                    {
                        bpcrba = new BrcaProCancerRiskByAge();
                        bpcrba.age = age;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.BracproCancerRisk.AddToList(bpcrba, args);
                    }

                    double brca0 = 100 - (double)RP.BrcaPro_1_2_Mut_Prob;
                    double brca11_and_2 = (double)(RP.BrcaPro_1_2_Mut_Prob - (RP.BrcaPro_1_Mut_Prob + RP.BrcaPro_2_Mut_Prob));

                    bpcrba.BreastCaRisk = (bpcrba.hFX0 * brca0) +
                                          (bpcrba.hFX1 * (double)RP.BrcaPro_1_Mut_Prob) +
                                          (bpcrba.hFX2 * (double)RP.BrcaPro_2_Mut_Prob) +
                                          (bpcrba.hFX12 * brca11_and_2);
                    bpcrba.BreastCaRiskWithNoMutation = (bpcrba.hFX0 * 100) +
                                                          (bpcrba.hFX1 * 0) +
                                                          (bpcrba.hFX2 * 0) +
                                                          (bpcrba.hFX12 * 0);
                    bpcrba.BreastCaRiskWithBrca1Mutation = (bpcrba.hFX0 * 0) +
                                                          (bpcrba.hFX1 * 100) +
                                                          (bpcrba.hFX2 * 0) +
                                                          (bpcrba.hFX12 * 0);
                    bpcrba.BreastCaRiskWithBrca2Mutation = (bpcrba.hFX0 * 0) +
                                                          (bpcrba.hFX1 * 0) +
                                                          (bpcrba.hFX2 * 100) +
                                                          (bpcrba.hFX12 * 0);
                    bpcrba.BreastCaRiskWithBrca1And2Mutation = (bpcrba.hFX0 * 0) +
                                                                (bpcrba.hFX1 * 0) +
                                                                (bpcrba.hFX2 * 0) +
                                                                (bpcrba.hFX12 * 100);
                    bpcrba.OvarianCaRisk = (bpcrba.hFY0 * brca0) +
                                          (bpcrba.hFY1 * (double)RP.BrcaPro_1_Mut_Prob) +
                                          (bpcrba.hFY2 * (double)RP.BrcaPro_2_Mut_Prob) +
                                          (bpcrba.hFY12 * brca11_and_2);
                    bpcrba.OvarianCaRiskWithNoMutation = (bpcrba.hFY0 * 100) +
                                                          (bpcrba.hFY1 * 0) +
                                                          (bpcrba.hFY2 * 0) +
                                                          (bpcrba.hFY12 * 0);
                    bpcrba.OvarianCaRiskWithBrca1Mutation = (bpcrba.hFY0 * 0) +
                                                          (bpcrba.hFY1 * 100) +
                                                          (bpcrba.hFY2 * 0) +
                                                          (bpcrba.hFY12 * 0);
                    bpcrba.OvarianCaRiskWithBrca2Mutation = (bpcrba.hFY0 * 0) +
                                                          (bpcrba.hFY1 * 0) +
                                                          (bpcrba.hFY2 * 100) +
                                                          (bpcrba.hFY12 * 0);
                    bpcrba.OvarianCaRiskWithBrca1And2Mutation = (bpcrba.hFY0 * 0) +
                                                                (bpcrba.hFY1 * 0) +
                                                                (bpcrba.hFY2 * 0) +
                                                                (bpcrba.hFY12 * 100);

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        case "breastCancerRisk":
                            bpcrba.BreastCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            if (age == five_year_age) RP.BrcaPro_5Year_Breast = bpcrba.BreastCaRisk;
                            if (age == lifetime_age) RP.BrcaPro_Lifetime_Breast = bpcrba.BreastCaRisk;
                            break;
                        case "ovarianCancerRisk":
                            bpcrba.OvarianCaRisk = Math.Round(100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString()), 6);
                            if (age == five_year_age) RP.BrcaPro_5Year_Ovary = bpcrba.OvarianCaRisk;
                            if (age == lifetime_age) RP.BrcaPro_Lifetime_Ovary = bpcrba.OvarianCaRisk;
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
                RP.BM_5Year_Age = five_year_age;
                RP.BM_Lifetime_Age = lifetime_age;

                //update risk scores for all non-proband family members
                //these are mutation probs only
                XPathNodeIterator relCPRIter = bpNode.Select("component/percentageRisk[typeId/@extension != '" + this.relativeID + "']");
                foreach (XPathNavigator cpr in relCPRIter)
                {
                    int relId = Convert.ToInt32(cpr.Evaluate("string(typeId/@extension)").ToString());
                    Person rel = FHx.Relatives.FirstOrDefault(item => ((Person)item).relativeID == relId);
                    if (rel.RP.BMRS_EffectiveTime == null) rel.RP.BMRS_EffectiveTime = RP.BMRS_EffectiveTime;
                    if (rel.RP.BrcaPro_Version == null) rel.RP.BrcaPro_Version = RP.BrcaPro_Version;
                    switch (cpr.Evaluate("string(code/@displayName)").ToString())
                    {
                        case "probCarrier":
                            rel.RP.BrcaPro_1_2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probBRCA1Mutation":
                            rel.RP.BrcaPro_1_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        case "probBRCA2Mutation":
                            rel.RP.BrcaPro_2_Mut_Prob = Math.Round(100.0 * Convert.ToDouble(cpr.Evaluate("string(value/@value)").ToString()), 6);
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
            }
        }
Пример #57
0
        public void PersistFullObject(HraModelChangedEventArgs e, string unitnum, int apptid)
        {
            ParameterCollection pc = new ParameterCollection();
            pc.Add("unitnum", unitnum);
            pc.Add("apptid", apptid);

            DoPersistWithSpAndParams(e,
                                        "sp_3_Save_ClausParameters",
                                        ref pc);
        }
Пример #58
0
        /**************************************************************************************************/
        public override void BackgroundPersistWork(HraModelChangedEventArgs e)
        {
            ParameterCollection pc = new ParameterCollection();
            if (owningPatient != null)
            {
                pc.Add("unitnum", owningPatient.unitnum);
            }
            else
            {
                pc.Add("unitnum", -1);
            }

            DoPersistWithSpAndParams(e,
                                      "sp_3_Save_GUIPreference",
                                      ref pc);
        }
Пример #59
0
        private void processClausHL7Scores(XPathNavigator nav)
        {
            //get Claus scores
            XPathNavigator cNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='CLAUS'][1]");
            if (cNode != null)
            {
                RP.ClausModel.Clear();
                RP.ClausModel.RiskFactors.Claus_Table = "";
                RP.ClausModel.RiskFactors.RelOne = "";
                RP.ClausModel.RiskFactors.RelTwo = "";

                XPathNavigator textNode = cNode.SelectSingleNode("text");
                string clausMessages = textNode.Evaluate("string(.)").ToString().Trim().Replace("\r", "");
                //extract the three Claus messages that are always present
                string pattern = @"^\s*Claus_Table: (?<clausTable>.*)$\s*^\s*Claus_RelOne: (?<clausRel1>.*)$\s*^\s*Claus_RelTwo: (?<clausRel2>.*)$";
                Match m = Regex.Match(clausMessages, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
                if (m.Success) {
                    RP.ClausModel.RiskFactors.Claus_Table = m.Result("${clausTable}");
                    RP.ClausModel.RiskFactors.ClausRiskFactors_RelOne = m.Result("${clausRel1}");
                    RP.ClausModel.RiskFactors.ClausRiskFactors_RelTwo = m.Result("${clausRel2}");
                }

                RP.ClausModel.RiskFactors.effectiveTime = cNode.Evaluate("string(effectiveTime/@value)").ToString();
                XPathNodeIterator ptAgeChunkIter = cNode.Select("component/age[value/low/@value]");
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    //find an existing ClausRiskByAge for this age, if any
                    //  else make a new one and add it to the Claus list
                    ClausRiskByAge crba = (ClausRiskByAge)RP.ClausModel.FirstOrDefault(item => ((ClausRiskByAge)item).age == age);
                    if (crba == null)
                    {
                        crba = new ClausRiskByAge();
                        crba.age = age;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.ClausModel.AddToList(crba, args);
                    }

                    crba.BreastCaRisk = 100 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        //case "breastCancerRisk":
                        //    crba.BreastCaRisk = Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                        //    break;
                        case "Claus_FiveYear":
                            RP.Claus_5Year_Breast = 100 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        case "Claus_Lifetime":
                            RP.Claus_Lifetime_Breast = 100 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
            }
        }
Пример #60
0
        private void processGailHL7Scores(XPathNavigator nav)
        {
            //get Gail scores
            XPathNavigator gNode = nav.SelectSingleNode("//pedigreeAnalysisResults[methodCode/@code='GAIL'][1]");
            if (gNode != null)
            {
                XPathNavigator textNode = gNode.SelectSingleNode("text");
                string gailInputs = textNode.Evaluate("string(.)").ToString().Trim().Replace("\r", "");

                //recover Gail Input values
                Dictionary<string, string>  ptGailInfo = new Dictionary<string, string>();
                List<string> names = null;

                //Now iterate through the three lines and create the Gail values
                //routine works even if headers produced by hraGetGail.xsl change in the future
                foreach (var myRow in gailInputs.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    if (myRow.Trim().StartsWith("Gail inputs:"))
                    {
                        //do nothing
                    }
                    else if (myRow.Trim().StartsWith("currentAge menarcheAge"))
                    {
                        //this is the first row which contains the headers
                        string[] headers = myRow.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
                        names = headers.ToList<string>();
                    }
                    else  //this is the Gail info row
                    {
                        string[] gail_inputs = myRow.Trim().Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
                        for (int i = 0; i < gail_inputs.Length; i++) ptGailInfo.Add(names[i], gail_inputs[i]);
                    }
                }

                RP.GailModel.RiskFactors.currentAge = ptGailInfo.ContainsKey("currentAge") ? ptGailInfo["currentAge"] : "UNKNOWN";
                RP.GailModel.RiskFactors.menarcheAge = ptGailInfo.ContainsKey("menarcheAge") ? ptGailInfo["menarcheAge"] : "UNKNOWN";
                RP.GailModel.RiskFactors.firstLiveBirthAge = ptGailInfo.ContainsKey("firstLiveBirthAge") ? ptGailInfo["firstLiveBirthAge"] : "UNKNOWN";
                RP.GailModel.RiskFactors.hadBiopsy = ptGailInfo.ContainsKey("hadBiopsy") ? ptGailInfo["hadBiopsy"] : "UNKNOWN";
                RP.GailModel.RiskFactors.numBiopsy = ptGailInfo.ContainsKey("numBiopsy") ? ptGailInfo["numBiopsy"] : "UNKNOWN";
                RP.GailModel.RiskFactors.hyperPlasia = ptGailInfo.ContainsKey("hyperPlasia") ? ptGailInfo["hyperPlasia"] : "UNKNOWN";
                RP.GailModel.RiskFactors.firstDegreeRel = ptGailInfo.ContainsKey("firstDegreeRel") ? ptGailInfo["firstDegreeRel"] : "UNKNOWN";
                RP.GailModel.RiskFactors.race = ptGailInfo.ContainsKey("race") ? ptGailInfo["race"] : "UNKNOWN";

                if (string.Compare("white", RP.GailModel.RiskFactors.race, true) == 0)
                    RP.GailModel.RiskFactors.race = "1";
                else if (string.Compare("black", RP.GailModel.RiskFactors.race, true) == 0)
                    RP.GailModel.RiskFactors.race = "2";
                else if (string.Compare("hispanic", RP.GailModel.RiskFactors.race, true) == 0)
                    RP.GailModel.RiskFactors.race = "3";
                else
                    RP.GailModel.RiskFactors.race = "";

                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.menarcheAge, true) == 0)
                    RP.GailModel.RiskFactors.menarcheAge = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.firstLiveBirthAge, true) == 0)
                    RP.GailModel.RiskFactors.firstLiveBirthAge = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.hadBiopsy, true) == 0)
                    RP.GailModel.RiskFactors.hadBiopsy = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.numBiopsy, true) == 0)
                    RP.GailModel.RiskFactors.numBiopsy = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.hyperPlasia, true) == 0)
                    RP.GailModel.RiskFactors.hyperPlasia = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.firstDegreeRel, true) == 0)
                    RP.GailModel.RiskFactors.firstDegreeRel = "99";
                if (string.Compare("UNKNOWN", RP.GailModel.RiskFactors.race, true) == 0)
                    RP.GailModel.RiskFactors.race = "99";

                RP.GailModel.RiskFactors.effectiveTime = gNode.Evaluate("string(effectiveTime/@value)").ToString();

                XPathNodeIterator ptAgeChunkIter = gNode.Select("component/age[value/low/@value]");
                foreach (XPathNavigator ac in ptAgeChunkIter)
                {
                    int age = Convert.ToInt32(ac.Evaluate("string(value/low/@value)").ToString());
                    //find an existing GailRiskByAge for this age, if any
                    //  else make a new one and add it to the Gail list
                    GailRiskByAge grba = (GailRiskByAge)RP.GailModel.FirstOrDefault(item => ((GailRiskByAge)item).age == age);
                    if (grba == null)
                    {
                        grba = new GailRiskByAge();
                        grba.age = age;
                        HraModelChangedEventArgs args = new HraModelChangedEventArgs(null);
                        RP.GailModel.AddToList(grba, args);
                    }

                    switch (ac.Evaluate("string(pertinentInformation/realmCode/@code)").ToString())
                    {
                        case "Gail_Proband":
                            grba.BreastCaRisk = 100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        case "Gail_Population":
                            grba.PopulationCaRisk = 100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        case "Gail_Proband_FiveYear":
                            RP.Gail_5Year_Breast = 100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        case "Gail_Proband_Lifetime":
                            RP.Gail_Lifetime_Breast = 100.0 * Convert.ToDouble(ac.Evaluate("string(pertinentInformation/probability/value/@value)").ToString());
                            break;
                        default:
                            //do nothing
                            break;
                    }
                }
            }
        }