コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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]);
                }
            }
        }
コード例 #4
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     DataContext = new RouteMark
     {
         Stamp = DateTime.Now
     };
     Refresh();
 }
コード例 #5
0
        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            RouteMark rm = dgRouteMark.SelectedItem as RouteMark;

            if (rm != null)
            {
                TrackingClient.Instance.DeleteRouteMark(rm);
                RefreshRouteMarkList();
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        private void GetExecuteSteps(RouteMark routeMark, List <OrdOrpltpDetailDTO> detailDtos)
        {
            if (routeMark == null)
            {
                return;
            }


            //设置执行闭环数据
            setExeLoopDetail(routeMark, detailDtos);
            //设置医嘱信息
            setOrdDetail(routeMark);
        }
コード例 #8
0
 public void DeleteRouteMark(RouteMark routeMark)
 {
     DeleteObject <RouteMark>(routeMark);
 }
コード例 #9
0
 public object CreateRouteMark(RouteMark routeMark)
 {
     return(InsertObject(routeMark));
 }
コード例 #10
0
ファイル: DrugAdapter.cs プロジェクト: fhis/order.client
        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);
        }
コード例 #11
0
        /// <summary>
        ///     获取执行闭环的数据
        /// </summary>
        public void GetExecuteSteps(RouteMark routeMark)
        {
            var loopbp = new HandleDrugExeLoopBP();

            loopbp.exec(routeMark);
        }