public OrderTemplateTreeViewModel(string tpltypeCode, string code_entp) { this.qryService = XapServiceMgr.find <ICiOrdQryService>(); Emp2Dep2GroupDTO edg = new Emp2Dep2GroupDTO(); edg.Id_dep = UserManager.getInstance().CurrentDept.Id_dep; edg.Name_dep = UserManager.getInstance().CurrentDept.Name; edg.Id_emp = UserManager.getInstance().CurrentPsnInfo.Id_psndoc; edg.Name_emp = UserManager.getInstance().CurrentPsnInfo.Name; edg.Id_org = UserManager.getInstance().CurrentOrg.Id_org; edg.Name_org = UserManager.getInstance().CurrentOrg.Name; edg.Code_entp = code_entp; UdidocDO udidocDo = UdiDocCache.GetInstance() .GetUdidoc(BdSrvDictCodeTypeConst.SD_ORTPLTP, tpltypeCode); if (udidocDo != null) { this.OrderTplTreeList = this.qryService.getOrderTplTreeDto(udidocDo.Id_udidoc, edg); } KeyNodeDataAdapterFactory <OrderTplTreeDto> moduleAdapter = new KeyNodeDataAdapterFactory <OrderTplTreeDto>("Id", "Parent"); moduleAdapter.CustomCaptionFunc = (dataobj => dataobj.Nm); this.TreeModel = new TreeKeyModel <OrderTplTreeDto>(moduleAdapter); this.TreeModel.Loader = new OTreeKeyLoader(); this.TreeModel.AddRange(this.OrderTplTreeList); }
/// <summary> /// 获取当前选中适用范围 /// </summary> /// <param name="id">适用范围ID</param> public void GetCurrUdidocDO_SubOwnerType(string id) { foreach (UdidocDO u in udidocDOs_SubOwnerType) { if (u.Id_udidoc.Equals(id)) { this.CurrUdidocDO_SubOwnerType = u; } } }
private void DiCertificateTreeView_Load(object sender, EventArgs e) { this.viewModel = new DiCertificateTreeViewModel(); this.currUdi = viewModel.CurrUdidocDO_DiceType; this.currDi = new EntDiProveDO(); this.oTree1.TreeItemSelected += new xap.rui.control.tree.events.TreeItemEventHandler(oTree1_TreeItemSelected); this.OnInit(); }
/// <summary> /// 响应树列表选中 /// </summary> private void onSelectRow() { if (xLabTitl != null) { //获取当前诊断证明分类 currUdi = DiCertificateTreeViewModel.GetDiprovetTp(dataSource.Sd_diprovetp); xLabTitl.ValueText = currUdi.Name; this.LoadData(); } }
/// <summary> /// 初始化诊断证明类型 /// </summary> private void getUdidocDOs() { udidocDOs_DiceType = Utils.GetUdidocDOList(EnDictCodeTypeConst.SD_DICETP); foreach (UdidocDO udidoc in udidocDOs_DiceType) { //诊断证明 if (udidoc.Code == EnDictCodeConst.SD_DICETP_DI) { CurrUdidocDO_DiceType = udidoc; } } }
/// <summary> /// 初始化适用范围(全院) /// </summary> protected void getUdidocDOs() { udidocDOs_SubOwnerType = udidoc_service.findByUdidoclistCode(BdSrvDictCodeTypeConst.SD_OWTP); DicScopetp = new Dictionary <string, string>(); foreach (UdidocDO udidoc in udidocDOs_SubOwnerType) { DicScopetp.Add(udidoc.Name, udidoc.Id_udidoc); //适用范围:全院 if (udidoc.Code == BdSrvDictCodeConst.SD_OWTP_HOSPITAL) { CurrUdidocDO_SubOwnerType = udidoc; } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected virtual void XapFormControl_FormCreated(object sender, EventArgs e) { // 初始化医嘱组件 string path = Application.StartupPath + "\\modules\\iihci\\ui\\commoncontent\\OrderContent.xml"; doctorOrderConfig = this.Deserialize(path); gv = this.xapFormControl1.GetGridView("order"); gv.DataTable.DataDisplay += tabControl_DataDisplay; gv.DataTable.CustomerCellMouseClick += OnXapFromGrid_CellClick; gv.DataTable.MultiCheckChanged += new EventHandler <MutilCheckedEventArgs>(mutilCheckedEventArgs); gv.DataTable.SelectedAllChanged += new EventHandler(SelectedAllChanged); gv.MouseClick += OnXapFromGrid_MouseClick; gv.MouseDoubleClick += OnXapFromGrid_MouseDoubleClick; gv.ReadOnly = true; gv.DataTable.CrossBackColor = true; gv.DataTable.Rows.DefaultHeight = 30; UdidocDO[] udidocs = OrReportPictureButton.GetInstance().getMap()[EnDictCodeConst.SD_ENTP_OUTPATIENT]; if (udidocs == null) { udidocs = new UdidocDO[0]; } int columnWidth = 6 + (2 + RelativeUIParam.RELATIVECELLSIZE.Height) * udidocs.Length; columnWidth = columnWidth <= 90 ? 90 : columnWidth; gv.DataTable.Columns["customercolumn_check_result"].Width = columnWidth; gv.DataTable.Columns["customercolumn_check_result"].DefalutWidth = columnWidth; List <ControlTab> tabs = xapFormControl1.FormModel.Tabs; XTabControl tabControl = tabs[0].tabContrl; tabControl.SelectedChanging += TabControl_SelectedChanging; tabControl.SelectedIndexChanged += tabControl_SelectedIndexChanged; XTabPage xtab = tabControl.XTabPages[1]; this.orderPresView = this.createOrderPresControl(); xtab.PageControl = this.orderPresView; foreach (XDataColumn item in gv.DataTable.Columns) { item.AlignCell = StringAlignment.Center; } }
/// <summary> /// 获取树节点数据 /// </summary> public void GetTreeKeyModel() { var adapter1 = new KeyNodeDataAdapterFactory <UdidocDO>("Id_udidoc", "Id_udidoc") { CustomCaptionFunc = x => x.Name }; var adapter2 = new KeyNodeDataAdapterFactory <EntDiProveDO>("Id_diprove", null, "Id_diprovetp") { CustomCaptionFunc = x => x.Name_emp + string.Format("{0}-{1:D2}-{2:D2}", ((DateTime)x.Dt_diprove).Date.Year, ((DateTime)x.Dt_diprove).Date.Month, ((DateTime)x.Dt_diprove).Date.Day) }; lazyLoadTreeModel = new LazyLoadTreeModel(""); lazyLoadTreeModel.LazyLoadChildren = (oTree, bizNode) => { if (bizNode.IsRoot) { //根节点下加载诊断证明分类 foreach (var udi in udidocDOs_DiceType) { var data = adapter1.Wrap(udi); oTree.AppendBizNode(bizNode, data); } } else { //在非根节点下加载数据节点 UdidocDO moduleDo = bizNode.UserObject as UdidocDO; if (moduleDo != null && "1" == moduleDo.Ctrl1) { //在分类节点下,加载数据节点(非数据独一模式,独一模式没必要显示数据节点) foreach (var item in lstEntDiProveDOs) { if (item.Id_diprovetp != null && moduleDo.Id_udidoc == item.Id_diprovetp) { var data = adapter2.Wrap(item); oTree.AppendBizNode(bizNode, data); } } } } return(true); }; }
public override bool OrdValivate(object model, BaseEmsView sender) { EmsDrugItemDO Emsdrugs = (model as EmsDrugsViewModel).GetFormDataSource() as EmsDrugItemDO; if (base.OrdValivate(model, sender) && Emsdrugs != null) { #region 药品重复检查 IEnumerable <IGrouping <string, EmsOrDrug> > enuma = Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED).GroupBy(i => i.Id_mm).Where(g => g.Count() > 1); bool bcf = enuma.Count() >= 1; if (bcf) { foreach (IGrouping <string, EmsOrDrug> group in enuma) { EmsOrDrug ems = group.First(); sender.OrdErrorList.Add("药品【" + ems.Name_mm + "】有重复!"); } } #endregion #region 空药品 if (Emsdrugs.EmsOrDrugList.Count(p => !p.IsDELETED && string.IsNullOrEmpty(p.Id_srv)) > 0) { sender.OrdErrorList.Add("药品有空数据!"); } #endregion #region 剂|总量大于0 foreach (EmsOrDrug item in Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED).ToList()) { if (item.Quan_med == null || item.Quan_med.ToDouble() <= 0) { sender.OrdErrorList.Add(item.Name_mm + "剂量必须大于0!"); } if (item.Quan_cur == null || item.Quan_cur.ToDouble() <= 0) { sender.OrdErrorList.Add(item.Name_mm + "总量必须大于0!"); } } #endregion List <string> depMps = new List <string>(); foreach (EmsOrDrug item in Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED).ToList()) { if (!depMps.Contains(item.Id_mp_dep)) { depMps.Add(item.Id_mp_dep); } } if (depMps.Count() > 1) { sender.OrdErrorList.Add("药品的执行科室不一致,不能保存!"); } #region 执行科室校验 #endregion #region 在院执行为true时,在院执行次数必须大于0 if (Emsdrugs.Fg_mp_in == true && (Emsdrugs.Times_mp_in == null || Emsdrugs.Times_mp_in <= 0)) { sender.OrdErrorList.Add("在院执行时,在院执行次数必须大于0!"); } #endregion #region 药品不能为空 if (Emsdrugs.EmsOrDrugList.Count(p => !p.IsDELETED) == 0) { sender.OrdErrorList.Add("药品不能为空!"); } #endregion #region 用药天数必须大于0 if (Emsdrugs.Use_days < 0) { sender.OrdErrorList.Add("用药天数小于0!"); } #endregion #region 药品的单价不能为空 string priceError = ""; foreach (EmsOrDrug drug in Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED)) { if (drug.Price == null) { priceError += "药品【" + drug.Name_srv + "】的价格为空,请与信息科联系!"; } } if (priceError != "") { sender.OrdErrorList.Add(priceError); } #endregion #region 校验每个服务的药品用法是否在剂型关联的用法集合里 List <string> id_dosages = new List <string>(); foreach (EmsOrDrug drug in Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED)) { id_dosages.Add(drug.Id_dosage); } RouteDosageRefDO[] rdros = LogicEx.GetInstance().getRouteDoSageRefDOById_dosages(id_dosages); string error = ""; foreach (EmsOrDrug drug in Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED)) { RouteDosageRefDO item = rdros.FirstOrDefault(p => p.Id_dosage == drug.Id_dosage && p.Id_route == drug.Id_route); if (item == null) { UdidocDO udidoc = LogicEx.GetInstance().getUdidocDOById(drug.Id_dosage); if (udidoc != null) { error += drug.Name_srv + "剂型为" + udidoc.Name + ",不能使用" + drug.Name_route + "用法;"; } } } if (error != "") { sender.OrdErrorList.Add(error); } #endregion #region 药品库存的判断 string mmcounterror = LogicEx.GetInstance().validateDrugCount(Emsdrugs.EmsOrDrugList.ToList()); if (!string.IsNullOrEmpty(mmcounterror)) { sender.OrdErrorList.Add(mmcounterror); } #endregion #region 空数据记录提示 EmsOrDrug drugitem = Emsdrugs.EmsOrDrugList.Where(p => !p.IsDELETED).ToList().FirstOrDefault(p => p.Id_srv == null); if (drugitem != null) { sender.OrdErrorList.Add("医疗单列表中存在空数据,请删除后保存"); } #endregion #region 用法数据完整性校验 if (String.IsNullOrEmpty(Emsdrugs.Id_route)) { sender.OrdErrorList.Add("药品的用法ID为空,请重新选择用法"); } #endregion } return(sender.OrdErrorList.Count == 0); }
//绑定数据 检查 private void AddObsDataBing(EmsUIDTO headDo, MedSrvDO med) { // 诊断 //headDo.Emsapobs.Id_srv = med.Id_srv; // 检查申请单主键 //headDo.Emsapobs.Id_emsobs = ""; // 医嘱服务id headDo.Emsapobs.Id_orsrv = ""; // 医嘱医疗单 headDo.Emsapobs.Id_or = ""; // 服务id headDo.Emsapobs.Id_srv = med.Id_srv; // 服务名称 headDo.Emsapobs.Name_srv = med.Name; // 服务类型 headDo.Emsapobs.Id_srvtp = med.Id_srvtp; // 服务类型名称 headDo.Emsapobs.Name_srvtp = med.Srvca_name; // 检查类型id headDo.Emsapobs.Id_obstp = med.Id_srv; // 检查类型名称 headDo.Emsapobs.Name_obstp = med.Name; // headDo.Emsapobs.Des_sympsign = headDo.MedSrvDO.Id_freq = med.Id_freq; headDo.MedSrvDO.Sd_srvtp = med.Sd_srvtp; // 检查申请单号 headDo.Emsapobs.No_applyobs = qryService.getOrdApObsNoapplyform(); headDo.Emsapobs.Dt_plan = headDo.Emsapobs.Dt_begin_ui == null?this.NowTime() : headDo.Emsapobs.Dt_begin_ui; // 加急标识 headDo.Emsapobs.Fg_urgent = false; MedSrvRisDO medSrvRisDo = patDiagImp.getBdSrvObs(med.Id_srv); if (medSrvRisDo != null && medSrvRisDo.If_mp_bed != null && (bool)medSrvRisDo.If_mp_bed) { // 床旁执行标志 headDo.Emsapobs.Fg_mp_bed = true; // 症状体征描述 // headDo.Emsapobs.Des_sympsign // 身体部位id headDo.Emsapobs.Id_body = medSrvRisDo.Id_body; // 身体部位编码 headDo.Emsapobs.Sd_body = medSrvRisDo.Sd_body; // 身体部位名称 headDo.Emsapobs.Name_body = medSrvRisDo.Name_body; // 身体体位id headDo.Emsapobs.Id_pos = medSrvRisDo.Id_pos; // 身体体位编码 headDo.Emsapobs.Sd_pos = medSrvRisDo.Sd_pos; // 身体体位名称 headDo.Emsapobs.Name_pos = medSrvRisDo.Name_pos; } else { // 床旁执行标志 headDo.Emsapobs.Fg_mp_bed = false; } // 计划检查时间 // headDo.Emsapobs.Dt_begin_ui // 诊断id string[] diagArray = patDiagImp.getDiagArray(headDo.PatInfo.Id_ent); if (diagArray != null) { headDo.Emsapobs.Id_di = diagArray[7]; //主诊断的主项目id headDo.Emsapobs.Id_diitm = diagArray[3]; //主诊断id headDo.Emsapobs.Name_diag = diagArray[4]; //主诊断名称 headDo.Emsapobs.Str_code_di = diagArray[1]; //诊断编码拼接 headDo.Emsapobs.Str_name_di = diagArray[0]; //诊断名称拼接 headDo.Emsapobs.Str_id_diitm = diagArray[2]; //诊断子项目id拼接 } // 检查目的编码 UdidocDO udidoc = patDiagImp.getBdUdidocList(); if (udidoc != null) { headDo.Emsapobs.Sd_pps = udidoc.Code; headDo.Emsapobs.Id_pps = udidoc.Id_udidoc; // 检查目的描述 headDo.Emsapobs.Des_pps = udidoc.Name; } else { // todo 暂时对应 需要修改 headDo.Emsapobs.Sd_pps = CiDictCodeConst.SD_PPS_ASSIST; // "0001AA100000000312PC";// ##???? headDo.Emsapobs.Id_pps = CiDictCodeConst.SD_PPS_ASSIST_ID; // 检查目的描述 headDo.Emsapobs.Des_pps = CiDictCodeConst.SD_PPS_ASSIST_NAME; } //临床病症及体征内容拼接,住院部门界面没有显示,所以不给赋值,移回到门诊中2017-2-27 //headDo.Emsapobs.Clinicalzztz = LogicEx.GetInstance().diseaseDescription(headDo.PatInfo.Id_ent); //headDo.Emsapobs.Des_sympsign = headDo.Emsapobs.Clinicalzztz;// 病情描述与临床症状及体征 各自保存,不互相复制 }
private void oTree1_TreeItemSelected(object sender, xap.rui.control.tree.events.TreeItemEventArgs e) { bSelect = true; string strCommond = ""; if (e.Node.Level != 1) { //strCommond = Utils.SELECTROW; Type tp = oTree1.FocusedUserObject.GetType(); switch (tp.Name) { case "UdidocDO"://选中诊断证明分类 this.currUdi = (UdidocDO)oTree1.FocusedUserObject; //选中分类是数据独一模式(仅保存一条数据) if ("0" == this.currUdi.Ctrl1) { if (this.ent4BannerDTO.Status.ToString() != EnDictCodeConst.SD_ENSTATUS_OP_FINISH) { //准备根据患者是否诊毕,判断是否要打印 } //获取当前独一分类的诊断证明数据(唯一) EntDiProveDO[] dos = viewModel.GetEntDiProveDOByDiProveType(this.ent4BannerDTO.Id_ent, this.currUdi.Code); if (dos != null && dos.Length > 0) { this.currDi = dos[0]; //0904临时添加,数据保存模式和单据打印模式,需要分开判断 strCommond = this.currUdi.Ctrl2 == "0" && this.currDi.Num_print != null && this.currDi.Num_print > 0 ? Utils.SELECTROWONLYPRINTED : Utils.SELECTROWONLYSAVED; } else { this.createEntDiProveDO();//如果还没有保存数据,则新增数据(仅一次) strCommond = Utils.SELECTROWONLYNEW; } } else { //选中分类不是独一模式, strCommond = Utils.SELECTROWNOTONLY; this.currDi = new EntDiProveDO(); this.currDi.Id_diprovetp = this.currUdi.Id_udidoc; this.currDi.Sd_diprovetp = this.currUdi.Code; } break; case "EntDiProveDO"://选中诊断证明 strCommond = Utils.SELECTROWITEM; this.currUdi = null; this.currDi = (EntDiProveDO)oTree1.FocusedUserObject; break; default: break; } } else { strCommond = Utils.SELECTROOT; this.currDi = null; } onFireEventSent(strCommond, this.currDi); }