using Newtonsoft.Json.Linq; using PTMedicalInsurance.FormSetter; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using Sunny.UI; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PTMedicalInsurance.Forms { public partial class PreAndInProcessAnalysisForm : Form { private DataTable dtVolaItems; private DataTable dtVolaDetail; private JObject currentItem; private GridViewSetter grdSetter = new GridViewSetter(); private JArray jaVolaItems; public JArray jaWarns ; private bool _isUpdatingProgrammatically = false; //使用标志位防止代码触发 public PreAndInProcessAnalysisForm() { InitializeComponent(); cbxDspoWay.SelectedIndex = 1; } public PreAndInProcessAnalysisForm(JObject jo) { InitializeComponent(); jaVolaItems = JArray.Parse(JsonHelper.getDestValue(jo, "output.result")); dtVolaItems = (DataTable)jo["output"]["result"].ToObject(typeof(DataTable)); dgvVolaItems.DataSource = dtVolaItems; grdSetter.SetHeaderTextOfPAIPAVolaItem(dgvVolaItems); //tbJrID.Text = JsonHelper.getDestValue(jo, "output.result[0].jr_id"); //tbRuleID.Text = JsonHelper.getDestValue(jo, "output.result[0].rule_id"); //tbPatID.Text = JsonHelper.getDestValue(jo, "output.result[0].patn_id"); //tbMdtrdID.Text = JsonHelper.getDestValue(jo, "output.result[0].mdtrt_id"); //tbVolaAmt.Text = JsonHelper.getDestValue(jo, "output.result[0].vola_amt"); //tbVolaAmtStas.Text = JsonHelper.getDestValue(jo, "output.result[0].vola_amt_stas"); //tbSevDeg.Text = JsonHelper.getDestValue(jo, "output.result[0].sev_deg"); //tbVolaBhvrType.Text = JsonHelper.getDestValue(jo, "output.result[0].vola_bhvr_type"); //tbVolaEvid.Text = JsonHelper.getDestValue(jo, "output.result[0].vola_evid"); //tbRuleName.Text = JsonHelper.getDestValue(jo, "output.result[0].rule_name"); //rbtVolaContent.Text = JsonHelper.getDestValue(jo, "output.result[0].vola_cont"); this.StartPosition = FormStartPosition.CenterParent; } private void showVolaItemContent(JObject jo) { _isUpdatingProgrammatically = true; cbxDspoWay.Text = ""; _isUpdatingProgrammatically = false; tbJrID.Text = JsonHelper.getDestValue(jo, "jr_id"); tbRuleID.Text = JsonHelper.getDestValue(jo, "rule_id"); tbPatID.Text = JsonHelper.getDestValue(jo, "patn_id"); tbMdtrdID.Text = JsonHelper.getDestValue(jo, "mdtrt_id"); tbVolaAmt.Text = JsonHelper.getDestValue(jo, "vola_amt"); tbVolaAmtStas.Text = JsonHelper.getDestValue(jo, "vola_amt_stas"); tbSevDeg.Text = JsonHelper.getDestValue(jo, "sev_deg"); tbVolaBhvrType.Text = JsonHelper.getDestValue(jo, "vola_bhvr_type"); tbVolaEvid.Text = JsonHelper.getDestValue(jo, "vola_evid"); tbRuleName.Text = JsonHelper.getDestValue(jo, "rule_name"); rbtVolaContent.Text = JsonHelper.getDestValue(jo, "vola_cont"); tbDspoWay.Text = JsonHelper.getDestValue(jo, "dspo_way_desc"); rtbDspoWayRea.Text = JsonHelper.getDestValue(jo, "dspo_way_rea"); dtVolaDetail = (DataTable)jo["judge_result_detail_dtos"].ToObject(typeof(DataTable)); dgvVolaDetailDtos.DataSource = dtVolaDetail; grdSetter.SetHeaderTextOfPAIPAVolaDetailDtos(dgvVolaDetailDtos); } private void btnOK_Click(object sender, EventArgs e) { Global.writeLog($"jaVolaItems:{jaVolaItems}"); jaWarns = new JArray(); foreach (JObject joSub in jaVolaItems) { JObject joTmp = new JObject(); string dspo_way = JsonHelper.getDestValue(joSub, "dspo_way"); string dspo_way_rea = JsonHelper.getDestValue(joSub, "dspo_way_rea"); string warn_rslt_id = JsonHelper.getDestValue(joSub, "jr_id"); string rule_name = JsonHelper.getDestValue(joSub, "rule_name"); joTmp.Add("warn_rslt_id",warn_rslt_id); joTmp.Add("dspo_way", dspo_way); joTmp.Add("dspo_way_rea",dspo_way_rea ); jaWarns.Add(joTmp); if (dspo_way == "") { MessageBox.Show($"检测到违规名称:{rule_name},违规标识:{warn_rslt_id}的违规条目未填写处理方式"); return; } if ((dspo_way == "1") && (dspo_way_rea == "")) { MessageBox.Show($"检测到违规名称:{rule_name},违规标识:{warn_rslt_id}的违规条目处理方式为【继续执行医嘱】,但未填写处理原因"); return; } } Global.writeLog($"jaWarns:{jaWarns}"); DialogResult = DialogResult.OK; } private void btnCancle_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } private void dgvVolaItems_SelectionChanged(object sender, EventArgs e) { int i = dgvVolaItems.CurrentRow.Index; currentItem = (JObject)jaVolaItems[i]; showVolaItemContent(currentItem); } private void btnSave_Click(object sender, EventArgs e) { if (cbxDspoWay.SelectedIndex == 1) { if (string.IsNullOrEmpty(rtbDspoWayRea.Text)) { MessageBox.Show("请输入原因"); return; } } int i = dgvVolaItems.CurrentRow.Index; JObject jo = (JObject)jaVolaItems[i]; JObject joTmp = new JObject(); joTmp.Add("warn_rslt_id", JsonHelper.getDestValue(jo, "jr_id")); joTmp.Add("dspo_way", cbxDspoWay.SelectedIndex); joTmp.Add("dspo_way_rea", rtbDspoWayRea.Text); Global.writeLog($"joTmp:{joTmp}"); Global.writeLog($"jaWarns:{jaWarns}"); bool isExist = false; foreach (JObject joSub in jaWarns) { Global.writeLog("1"); if (joSub["warn_rslt_id"].ToString() == joTmp["warn_rslt_id"].ToString()) { isExist = true; } Global.writeLog("2"); } if (!isExist) { Global.writeLog("3"); jaWarns.Add(joTmp); Global.writeLog("4"); dgvVolaItems.Rows[i].DefaultCellStyle.BackColor = Color.Red; Global.writeLog("5"); MessageBox.Show("保存成功,请继续下一条");//如果重复点击,则覆盖,同时有标识标识改数据已经添加成功 } } private void cbxDspoWay_SelectedIndexChanged(object sender, EventArgs e) { if (_isUpdatingProgrammatically) { return; } Global.writeLog($"currentItem:{currentItem}"); if (currentItem == null) { return; } if (cbxDspoWay.SelectedIndex == 1) { if (string.IsNullOrEmpty(rtbDspoWayRea.Text)) { MessageBox.Show(this,"请输入原因"); return; } } string dspo_way_desc = ""; if (currentItem.ContainsKey("dspo_way")) { if (cbxDspoWay.Text != "") { dspo_way_desc = cbxDspoWay.Text.Substring(2); } currentItem["dspo_way"] = cbxDspoWay.SelectedIndex; currentItem["dspo_way_desc"] = dspo_way_desc; tbDspoWay.Text = dspo_way_desc; } else { if (cbxDspoWay.Text != "") { dspo_way_desc = cbxDspoWay.Text.Substring(2); } currentItem.Add("dspo_way", cbxDspoWay.SelectedIndex); currentItem.Add("dspo_way_desc", dspo_way_desc); tbDspoWay.Text = dspo_way_desc; } if (currentItem.ContainsKey("dspo_way_rea")) { currentItem["dspo_way_rea"] = rtbDspoWayRea.Text; } else { currentItem.Add("dspo_way_rea", rtbDspoWayRea.Text); } Global.writeLog($"currentItemEnd:{currentItem}"); } private void rtbDspoWayRea_TextChanged(object sender, EventArgs e) { if (currentItem == null) { return; } if (currentItem.ContainsKey("dspo_way_rea")) { currentItem["dspo_way_rea"] = rtbDspoWayRea.Text; } else { currentItem.Add("dspo_way_rea", rtbDspoWayRea.Text); } } } }