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); } } }
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); } }
//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); } }
/**************************************************************************************************/ public override void PersistFullList(HraModelChangedEventArgs e) { foreach (HraObject o in this) { ((GUIPreference)o).owningPatient = OwningPatient; } base.PersistFullList(e); }
public override void BackgroundPersistWork(HraModelChangedEventArgs e) { ParameterCollection pc = new ParameterCollection(); pc.Add("apptID", this.apptID); DoPersistWithSpAndParams(e, "sp_3_Save_Appointment", ref pc); }
/**************************************************************************************************/ public override void PersistFullList(HraModelChangedEventArgs e) { foreach (HraObject o in this) { ((ClincalObservation)o).owningPMH = OwningPMH; } base.PersistFullList(e); }
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); }
/**************************************************************************************************/ public override void PersistFullList(HraModelChangedEventArgs e) { foreach (HraObject o in this) { ((GeneticTest)o).owningPMH = OwningPMH; } base.PersistFullList(e); }
/**************************************************************************************************/ public override void BackgroundPersistWork(HraModelChangedEventArgs e) { var pc = new ParameterCollection(); pc.Add("unitnum", unitnum); DoPersistWithSpAndParams(e, "sp_3_Save_PedigreeAnnotations", ref pc); }
private void MammoHxChangedHandler(object sender, HraModelChangedEventArgs e) { if (e.sendingView != this) { FillControlsByControlName(this._mammoHx); FillMammoControls(); ToggleDateFields(); } }
private void BreastBxChangedHander(object sender, HraModelChangedEventArgs e) { if (e.sendingView != this) { FillControlsByControlName(this._breastBx); FillBreastBxControls(); ToggleDateFields(); } }
/*****************************************************/ /**************************************************************************************************/ public override void BackgroundPersistWork(HraModelChangedEventArgs e) { ParameterCollection pc = new ParameterCollection(); pc.Add("diseaseID", diseaseID); DoPersistWithSpAndParams(e, "sp_3_Save_DiseaseObject", ref pc); }
/**************************************************************************************************/ public override void PersistFullList(HraModelChangedEventArgs e) { foreach (HraObject o in this) { ((Race)o).owner = this; } base.PersistFullList(e); }
/**************************************************************************************************/ 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); }
/**************************************************************************************************/ public override void PersistFullList(HraModelChangedEventArgs e) { foreach (HraObject o in this) { ((Nation)o).owner = this; } base.PersistFullList(e); }
public override void PersistFullObject(HraModelChangedEventArgs e) { if (Details != null) { Details.owningClincalObservation = this; Details.BackgroundPersistWork(e); } base.PersistFullObject(e); }
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); }
/**************************************************************************************************/ 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); }
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); }
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); }
/*******************************************************************************/ 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); }
/**************************************************************************************************/ private void TaskChanged(object sender, HraModelChangedEventArgs e) { foreach (Control c in flowLayoutPanel1.Controls) { if (((PendingTaskSummaryRow)c).GetTask() == sender) { ((PendingTaskSummaryRow)c).SetTask((Task)sender); } } }
/*******************************************************************************/ public override void BackgroundPersistWork(HraModelChangedEventArgs e) { ParameterCollection pc = new ParameterCollection(); pc.Add("userLogin", userLogin); DoPersistWithSpAndParams(e, "sp_3_Save_User", ref pc); }
/**************************************************************************************************/ 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); }
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); }
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); }
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); } }
/*****************************************************/ 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); } }
//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); }
/*****************************************************/ 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); } }
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(); }
/**************************************************************************************************/ private void ClinicalObservationChanged(object sender, HraModelChangedEventArgs e) { int senderId = ((ClincalObservation)sender).instanceID; if (e.Delete) { } else { } }
/*****************************************************/ 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); } }
/**************************************************************************************************/ 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; }
/*****************************************************/ 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); } }
/*****************************************************/ 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); } }
//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); }
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); }
/**************************************************************************************************/ 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()); } }
/**************************************************************************************************/ public override void PersistFullObject(HraModelChangedEventArgs e) { base.PersistFullObject(e); breastBx.PersistFullObject(e); }
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; } } } }
/**************************************************************************************************/ 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); }
/**************************************************************************************************/ 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); }
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; } } } }
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(); }
/**************************************************************************************************/ public override void PersistFullObject(HraModelChangedEventArgs e) { base.PersistFullObject(e); chemoprevention.patientOwning = theProband; chemoprevention.PersistFullObject(e); }
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(); } //} }
/*******************************************************************************/ 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; }
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)); } } }
/**************************************************************************************************/ public override void BackgroundPersistWork(HraModelChangedEventArgs e) { }
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; } } } }
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); }
/**************************************************************************************************/ 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); }
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; } } } }
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; } } } }