예제 #1
0
        public ActionResult GetAllKPIValueDetail()
        {
            try
            {
                var kpiValueCache = _unitKpiValueService.GetManay(r => r.SD_ID == ProjectProvider.Instance.Current.SD_ID).ToList();
                //表头
                var kpis = _kpiService.GetManayByOrder(r => r.SD_ID == ProjectProvider.Instance.Current.SD_ID && r.VALUE_TABLE_ID == 1, m => m.ORDER_NO);
                Dictionary <Tuple <string, int>, object> temp = new Dictionary <Tuple <string, int>, object>();
                kpis.ForEach(r =>
                {
                    temp.Add(new Tuple <string, int>($"[{r.SD_EKPI_CODE}]{ r.SD_EKPI_NAME}", r.SD_EKPI_ID), $"[{r.SD_EKPI_CODE}]{ r.SD_EKPI_NAME}");
                });

                dynamic title_code = new ExpandoObject();
                ((IDictionary <string, object>)title_code).Add("PNO", "PNO");
                foreach (KeyValuePair <Tuple <string, int>, object> item in temp)
                {
                    ((IDictionary <string, object>)title_code).Add(item.Key.Item1, item.Value);
                }

                //数据体
                var pageData = new List <dynamic>();
                var cpats    = _unitCpatDetailService.GetManay(r => r.SD_ID == ProjectProvider.Instance.Current.SD_ID && r.IN_FLAG == "I");
                cpats.ForEach(
                    r =>
                {
                    dynamic value = new ExpandoObject();
                    value.PNO     = r.PATIENT_NO;
                    foreach (KeyValuePair <Tuple <string, int>, object> item in temp)
                    {
                        ((IDictionary <string, object>)value).Add(item.Key.Item1, kpiValueCache.FirstOrDefault(v => v.SD_CPAT_NO == r.SD_CPAT_NO && v.SD_EKPI_ID == item.Key.Item2)?.INDEX_VALUE.ToString());
                    }
                    pageData.Add(value);
                }
                    );
                var data = new Dictionary <string, List <dynamic> >();
                data.Add("title", new List <dynamic>()
                {
                    title_code
                });
                data.Add("data", pageData);
                return(Content(pageData.ToJson()));
            }
            catch (Exception e)
            {
                return(Error(e.ToString()));
            }
        }