private void setOrdDetail(RouteMark routeMark) { var orService = XapServiceMgr.find <ICiorderCrudService>(); routeMark.MedicalInfoList = new List <MedicalInfo>(); //获取已医嘱信息 CiorderAggDO ciagg = orService.findById(routeMark.IdOr); IOrderedEnumerable <OrdSrvDO> srva = ciagg.getOrdSrvDO().OrderBy(x => x.Sortno); foreach (OrdSrvDO srvDo in srva) { if (srvDo.Fg_or == FBoolean.True && srvDo.Sd_srvtp.StartsWith("01")) { var med = new MedicalInfo(); med.Units = srvDo.Quan_medu + " " + srvDo.Medu_name; med.MedicationModels = srvDo.Route_name; med.Name = srvDo.Name; med.Order = (int)srvDo.Sortno; routeMark.MedicalInfoList.Add(med); } } }
private OrdOrpltpParamDTO[] getStepDetailDtos(RouteMark routeMark) { //Dictionary<string,object> dic=new Dictionary<string, object>(); var listP = new List <OrdOrpltpParamDTO>(); var param = new OrdOrpltpParamDTO(); param.Id_or = routeMark.IdOr; param.Dt_mp_plan = routeMark.Time; listP.Add(param); //dic.Add(param.Id_or,null); foreach (RouteMark mark in routeMark.RepeatdRouteMarks) { if (!(mark.ExeStatus == ExeStatuses.Executing || mark.ExeStatus == ExeStatuses.Executed)) { continue; } var paramDto = new OrdOrpltpParamDTO(); paramDto.Id_or = mark.IdOr; paramDto.Dt_mp_plan = mark.Time; listP.Add(paramDto); } if (listP.Count > 0) { return(listP.ToArray()); } return(null); }
/// <summary> /// 用药闭环数据 RouteMark labelCheck /// </summary> public void exec(RouteMark routeMark) { if (routeMark == null) { return; } foreignservice = XapServiceMgr.find <IForeignService>(); OrdOrpltpParamDTO[] paramDtos = getStepDetailDtos(routeMark); Dictionary <string, List <OrdOrpltpDetailDTO> > dic = getOrdDetails(paramDtos); if (dic.Count == 0) { return; } string key = routeMark.IdOr + "," + routeMark.Time; if (dic.ContainsKey(key))//外层为Pending,内层含有可执行点,需要对外层点进行校验 { GetExecuteSteps(routeMark, dic[key]); } foreach (RouteMark mark in routeMark.RepeatdRouteMarks) { if (!(mark.ExeStatus == ExeStatuses.Executing || mark.ExeStatus == ExeStatuses.Executed)) { continue; } string keym = mark.IdOr + "," + mark.Time; if (dic.ContainsKey(keym)) { GetExecuteSteps(mark, dic[keym]); } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { DataContext = new RouteMark { Stamp = DateTime.Now }; Refresh(); }
private void btnDelete_Click(object sender, RoutedEventArgs e) { RouteMark rm = dgRouteMark.SelectedItem as RouteMark; if (rm != null) { TrackingClient.Instance.DeleteRouteMark(rm); RefreshRouteMarkList(); } }
private void setExeLoopDetail(RouteMark routeMark, List <OrdOrpltpDetailDTO> detailDtos) { routeMark.LoopNodeInfoList = new List <LoopNodeInfo>(); routeMark.LoopNameAllList = new List <LoopNodeInfo>(); IOrderedEnumerable <OrdOrpltpDetailDTO> l = detailDtos.OrderBy(x => x.Sortno); List <OrdOrpltpDetailDTO> ll = l.ToList(); Dictionary <string, string> depdic = getdepname(detailDtos); foreach (OrdOrpltpDetailDTO orpltpDetailDto in ll) { var step = new LoopNodeInfo(); step.AbnormalSituations = orpltpDetailDto.Skip_reason; step.Name = orpltpDetailDto.Name_orpltpsta; step.ExecuteTime = orpltpDetailDto.Dt_mp.ToString(); step.Index = (int)orpltpDetailDto.Sortno; if (orpltpDetailDto.Eu_su == 0) { step.IsThrough = false; } if (orpltpDetailDto.Eu_su == 1) { step.IsThrough = true; step.IsSuccess = ExeStatuesNow.Success; } if (orpltpDetailDto.Eu_su == 2) { step.IsSuccess = ExeStatuesNow.Break; routeMark.ExecuteMsg = orpltpDetailDto.Skip_reason; } if (orpltpDetailDto.Eu_su == 4) { step.IsThrough = true; step.IsSuccess = ExeStatuesNow.Success; } step.Executor = orpltpDetailDto.Name_emp; //DeptDO dep = deptCrudService.findById(orpltpDetailDto.Id_dep); //if (dep != null) step.ExecuteOffice = dep.Name; if (null != orpltpDetailDto.Id_dep && depdic.ContainsKey(orpltpDetailDto.Id_dep)) { step.ExecuteOffice = depdic[orpltpDetailDto.Id_dep]; } if (orpltpDetailDto.Eu_su == 1 || orpltpDetailDto.Eu_su == 2 || orpltpDetailDto.Eu_su == 4) { routeMark.LoopNodeInfoList.Add(step); if (orpltpDetailDto.Eu_su == 2) { break; } } routeMark.LoopNameAllList.Add(step); } }
private void GetExecuteSteps(RouteMark routeMark, List <OrdOrpltpDetailDTO> detailDtos) { if (routeMark == null) { return; } //设置执行闭环数据 setExeLoopDetail(routeMark, detailDtos); //设置医嘱信息 setOrdDetail(routeMark); }
public void DeleteRouteMark(RouteMark routeMark) { DeleteObject <RouteMark>(routeMark); }
public object CreateRouteMark(RouteMark routeMark) { return(InsertObject(routeMark)); }
public ExeRouteGroupModel GetGroupModelN(string name, FArrayList fa, FDateTime dt) { var exeRouteGroup = new ExeRouteGroupModel(); exeRouteGroup.Name = name; if (fa.Count == 0) { return(exeRouteGroup); } var dict = (Dictionary <string, Dictionary <string, List <TransSrvSplitOrderDTO> > >)fa[0]; var tranlist = (List <TransSrvSplitOrderDTO>)fa[1]; foreach (TransSrvSplitOrderDTO transSrvSplitOrderDto in tranlist) { var routeMap = new RouteMap(); routeMap.StartDay = dt; Dictionary <string, List <TransSrvSplitOrderDTO> > dic = dict[transSrvSplitOrderDto.Id_srv]; List <TransSrvSplitOrderDTO> a = dic[dic.Keys.First()]; routeMap.Name = a[0].Name_srv; var listperiod = new List <List <DateTime> >(); foreach (string keys in dic.Keys) { List <TransSrvSplitOrderDTO> list = dic[keys]; if (!list[0].Fg_long.Value) //list.Count == 1 { if (list[0].Dt_mp_plan == null) { continue; } var mark = new RouteMark(); mark.StartTime = dt; mark.Time = (DateTime)list[0].Dt_mp_plan; mark.IdOr = list[0].Id_or; mark.Id = list[0].Id_or + "_" + list[0].Dt_mp_plan; if (list[0].Orsrv_su_mp == "0") { mark.ExeStatus = ExeStatuses.Pending; } else if (list[0].Orsrv_su_mp == "1") { mark.ExeStatus = ExeStatuses.Executing; } if (list[0].Orsrv_su_mp == "2") { mark.ExeStatus = ExeStatuses.NoEecution; } if (list[0].Orsrv_su_mp == "4") { mark.ExeStatus = ExeStatuses.Executed; } mark.IsLongTerm = false; routeMap.Marks.Add(mark); } else if (list[0].Fg_long.Value) //list.Count > 1 { var listd = new List <DateTime>(); IOrderedEnumerable <TransSrvSplitOrderDTO> ff = list.OrderBy(item => item.Dt_mp_plan); TransSrvSplitOrderDTO[] srv = ff.ToArray(); if (srv.Count() > 1) { DateTime?ps = getbounddt((DateTime)srv[0].Dt_mp_plan, true); DateTime?pe = getbounddt((DateTime)srv[srv.Count() - 1].Dt_mp_plan, false); if (ps != null && pe != null) { listd.Add((DateTime)ps); listd.Add((DateTime)pe); convetdatePeriod(listperiod, listd); } } var RouteAssistMarks = new List <MarkAssist>(); foreach (TransSrvSplitOrderDTO splitsrvDto in srv) { var mark = new MarkAssist(); if (splitsrvDto.Orsrv_su_mp == "0") { mark.ExeStatus = ExeStatuses.Pending; } else if (splitsrvDto.Orsrv_su_mp == "1") { mark.ExeStatus = ExeStatuses.Executing; } if (splitsrvDto.Orsrv_su_mp == "2") { mark.ExeStatus = ExeStatuses.NoEecution; } if (splitsrvDto.Orsrv_su_mp == "4") { mark.ExeStatus = ExeStatuses.Executed; } mark.IdOr = splitsrvDto.Id_or; mark.Id = splitsrvDto.Id_or + "_" + splitsrvDto.Dt_mp_plan; mark.Time = (DateTime)splitsrvDto.Dt_mp_plan; mark.IsLongTerm = true; if (splitsrvDto.Dt_mp_plan.ToString().Equals(srv[srv.Count() - 1].Dt_mp_plan.ToString())) { //mark. mark.IsEndRourkMark = true; } else { mark.IsEndRourkMark = false; } RouteAssistMarks.Add(mark); } var num = (int)srv[0].Freqcnt; var route = new Route { DailySlot = 6, DailyTimes = num, StartTime = (DateTime)srv[0].Dt_mp_plan, EndTime = (DateTime)srv[srv.Count() - 1].Dt_mp_plan }; route.AcStartDateTime = (DateTime)srv[0].Dt_mp_plan; route.RouteAssistMarks = RouteAssistMarks; routeMap.Routes.Add(route); } } if (routeMap.Marks.Count() == 0 && routeMap.Routes.Count() == 0) { continue; } routeMap.Listperiod = listperiod; exeRouteGroup.RouteMaps.Add(routeMap); } return(exeRouteGroup); }
/// <summary> /// 获取执行闭环的数据 /// </summary> public void GetExecuteSteps(RouteMark routeMark) { var loopbp = new HandleDrugExeLoopBP(); loopbp.exec(routeMark); }