public async Task <IActionResult> GetGridJson(Pagination pagination, string keyword)
        {
            var data = new
            {
                rows = await _ordersApp.GetList(pagination, keyword),
                pagination.total,
                pagination.page,
                pagination.records
            };

            return(Content(data.ToJson()));
        }
        /// <summary>
        /// 今日就诊-治疗单详情
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <IActionResult> GetIntactInfo(BaseInput input)
        {
            var entity = await _patVisitApp.GetForm(input.KeyValue);

            var patient = await _patientApp.GetForm(entity.F_Pid);

            var data = new GetIntactInfoOutput
            {
                checkPerson       = entity.F_CheckPerson,
                dialysisStartTime = entity.F_DialysisStartTime,
                dialysisEndTime   = entity.F_DialysisEndTime,
                endPerson         = entity.F_EndPerson,
                memo           = entity.F_Memo,
                percent        = 0,
                puncturePerson = entity.F_PuncturePerson,
                startPerson    = entity.F_StartPerson
            };

            data.patient = new Patients
            {
                patientId     = patient.F_Id,
                headIcon      = patient.F_HeadIcon,
                ideaWeight    = patient.F_IdealWeight,
                maritalStatus = patient.F_MaritalStatus,
                patientGender = patient.F_Gender,
                patientName   = patient.F_Name
            };
            if (patient.F_BirthDay != null)
            {
                data.patient.patientAge = ((DateTime.Now - patient.F_BirthDay.ToDate()).TotalDays / 365).ToInt();
            }
            data.vitalSigns = new VitalSigns
            {
                diastolicPressure = entity.F_DiastolicPressure,
                systolicPressure  = entity.F_SystolicPressure,
                temperature       = entity.F_Temperature,
                pulse             = entity.F_Pulse
            };
            data.dialysisParameter = new DialysisParameter
            {
                accessName           = entity.F_AccessName,
                bloodSpeed           = entity.F_BloodSpeed,
                Ca                   = entity.F_Ca,
                dialysateTemperature = entity.F_DialysateTemperature,
                dialysisType         = entity.F_DialysisType,
                dialyzerType1        = entity.F_DialyzerType1,
                dialyzerType2        = entity.F_DialyzerType2,
                dilutionType         = entity.F_DilutionType,
                estimateHours        = entity.F_EstimateHours,
                exchangeAmount       = entity.F_ExchangeAmount,
                exchangeSpeed        = entity.F_ExchangeSpeed,
                Hco3                 = entity.F_Hco3,
                heparinAddAmount     = entity.F_HeparinAddAmount,
                heparinAddSpeedUnit  = entity.F_HeparinAddSpeedUnit,
                heparinAmount        = entity.F_HeparinAmount,
                heparinType          = entity.F_HeparinType,
                heparinUnit          = entity.F_HeparinUnit,
                K              = entity.F_K,
                LowCa          = entity.F_LowCa,
                Na             = entity.F_Na,
                vascularAccess = entity.F_VascularAccess
            };
            data.weightSet = new WeightSet
            {
                weightYT = entity.F_WeightYT,
                weightST = entity.F_WeightST,
                weightTQ = entity.F_WeightTQ,
                weightTH = entity.F_WeightTH
            };
            var punctureRecord = await _punctureApp.GetSingle(entity.F_Pid, entity.F_VisitDate.ToDate());

            if (punctureRecord != null)
            {
                data.punctureRecord = new PunctureRecord
                {
                    point1 = punctureRecord.F_Point1,
                    point2 = punctureRecord.F_Point2
                }
            }
            ;
            //OrdersApp ordersApp = new OrdersApp();
            var orders = (await _ordersApp.GetList(entity.F_Pid, entity.F_VisitDate.ToDate(), entity.F_VisitDate.ToDate().AddDays(1), true))
                         .Where(t => t.F_OrderType.Equals("药疗")).OrderBy(t => t.F_IsTemporary).ToList();

            //医生医嘱
            foreach (var item in orders)
            {
                data.doctorOrders.Add(new DoctorOrder
                {
                    id                  = item.F_Id,
                    isTemporary         = item.F_IsTemporary,
                    orderText           = item.F_OrderText,
                    orderUnitSpec       = item.F_OrderUnitSpec,
                    orderAmount         = item.F_OrderAmount,
                    orderFrequency      = item.F_OrderFrequency,
                    orderAdministration = item.F_OrderAdministration,
                    orderStatus         = item.F_OrderStatus
                });
            }
            //护士医嘱
            //查询医嘱执行记录
            var orderExecRecord = await _ordersApp.GetPerformedOrderListJson(entity.F_Pid, entity.F_VisitDate.ToDate());

            foreach (var item in orders.Where(t => t.F_OrderStatus >= 1))
            {
                var nurserOrder = new NurserOrder
                {
                    id                  = item.F_Id,
                    isTemporary         = item.F_IsTemporary,
                    orderText           = item.F_OrderText,
                    orderUnitSpec       = item.F_OrderUnitSpec,
                    orderAmount         = item.F_OrderAmount,
                    orderFrequency      = item.F_OrderFrequency,
                    orderAdministration = item.F_OrderAdministration
                };
                var find = orderExecRecord.FirstOrDefault(t => t.F_Oid.Equals(item.F_Id));
                if (find != null)
                {
                    nurserOrder.execTime  = find.F_NurseOperatorTime;
                    nurserOrder.nurseName = find.F_Nurse;
                }
                data.nurserOrders.Add(nurserOrder);
            }
            //观察记录
            var obs = _dialysisObservationApp.GetListByVisit(entity.F_Id);

            foreach (var item in obs.OrderBy(t => t.F_NurseOperatorTime))
            {
                data.observations.Add(new Observations
                {
                    id           = item.F_Id,
                    ssy          = item.F_SSY,
                    szy          = item.F_SZY,
                    hr           = item.F_HR,
                    a            = item.F_A,
                    bf           = item.F_BF,
                    ufr          = item.F_UFR,
                    v            = item.F_V,
                    c            = item.F_C,
                    t            = item.F_T,
                    ufv          = item.F_UFV,
                    tmp          = item.F_TMP,
                    gsl          = item.F_GSL,
                    memo         = item.F_MEMO,
                    nurseName    = item.F_Nurse,
                    operatorTime = item.F_NurseOperatorTime
                });
            }
            return(Ok(data));
        }
        public async Task <IActionResult> ExecOrder([FromBody] ExecOrderInput input)
        {
            //await _ordersApp.ExecOrder(keyValue);
            //计费
            //var jArr = keyValue.ToJArrayObject();

            //if (jArr.Count == 0)
            //{
            //    return BadRequest("未选择医嘱");
            //}

            var c = (from r in input.items
                     join o in await _ordersApp.GetList() on r.id equals o.F_Id
                     select new
            {
                o.F_Nurse,
                o.F_NurseOperatorTime,
                o.F_OrderAdministration,
                o.F_OrderAmount,
                o.F_OrderCode,
                o.F_OrderFrequency,
                o.F_OrderSpec,
                o.F_OrderText,
                o.F_OrderType,
                o.F_OrderUnitAmount,
                o.F_OrderUnitSpec,
                o.F_Pid
            }).ToList();

            var patient = await _patientApp.GetForm(c.FirstOrDefault()?.F_Pid);

            var user = await _usersService.GetCurrentUserAsync();

            var date  = DateTime.Now;
            var drugs = (from r in c
                         where r.F_OrderType == "药疗"
                         select r).ToList();

            if (drugs.Count > 0)
            {
                //DrugsApp drugsApp = new DrugsApp();
                //StorageApp storageApp = new StorageApp();
                foreach (var item in drugs)
                {
                    //var sl = item.F_OrderAmount.ToFloat(2) * 100  / item.F_OrderUnitAmount.ToFloat(2) * 100;
                    //int i = (int)sl;
                    var fz    = (item.F_OrderAmount.ToFloat(4) * 10000).ToInt();
                    var fm    = (item.F_OrderUnitAmount.ToFloat(4) * 10000).ToInt();
                    int count = fz % fm == 0 ? fz / fm : fz / fm + 1;  //非整数倍  数量追加1
                    var dict  = await _drugsApp.GetForm(item.F_OrderCode);

                    //计费
                    await _billingApp.SubmitForm(new BillingEntity
                    {
                        F_Amount          = count,
                        F_BillingDateTime = date,
                        F_BillingPerson   = user.F_RealName,
                        F_BillingPersonId = user.F_Id,
                        F_Charges         = dict.F_Charges,
                        F_Costs           = (dict.F_Charges * count).ToFloat(2),
                        F_DialylisNo      = patient.F_DialysisNo,
                        F_Pid             = patient.F_Id,
                        F_PGender         = patient.F_Gender,
                        F_PName           = patient.F_Name,
                        F_ItemClass       = "药品",
                        F_ItemCode        = dict.F_DrugCode,
                        F_ItemId          = dict.F_Id,
                        F_ItemName        = dict.F_DrugName,
                        F_ItemSpec        = dict.F_DrugSpec,
                        F_ItemSpell       = dict.F_DrugSpell,
                        F_ItemUnit        = dict.F_DrugUnit,
                        F_Supplier        = dict.F_DrugSupplier,
                        F_EnabledMark     = true,
                        F_IsAcct          = false
                    }, new object());

                    //减库存
                    var storage = await _storageApp.GetFormByItemId(item.F_OrderCode);

                    if (storage != null)
                    {
                        storage.F_Amount -= count;
                        await _storageApp.UpdateForm(storage);
                    }
                }
            }

            var treatments = (from r in c
                              where r.F_OrderType == "治疗"
                              select r).ToList();

            if (treatments.Count > 0)
            {
                //TreatmentApp treatmentApp = new TreatmentApp();
                foreach (var item in treatments)
                {
                    var dict = await _treatmentApp.GetForm(item.F_OrderCode);

                    var amount = item.F_OrderAmount.ToFloat(2);
                    //计费
                    await _billingApp.SubmitForm(new BillingEntity
                    {
                        F_Amount          = amount,
                        F_BillingDateTime = date,
                        F_BillingPerson   = user.F_RealName,
                        F_BillingPersonId = user.F_Id,
                        F_Charges         = dict.F_Charges,
                        F_Costs           = (dict.F_Charges *amount).ToFloat(2),
                        F_DialylisNo      = patient.F_DialysisNo,
                        F_Pid             = patient.F_Id,
                        F_PGender         = patient.F_Gender,
                        F_PName           = patient.F_Name,
                        F_ItemClass       = "诊疗",
                        F_ItemCode        = dict.F_TreatmentCode,
                        F_ItemId          = dict.F_Id,
                        F_ItemName        = dict.F_TreatmentName,
                        F_ItemSpec        = dict.F_TreatmentSpec,
                        F_ItemSpell       = dict.F_TreatmentSpell,
                        F_ItemUnit        = dict.F_TreatmentUnit,
                        F_EnabledMark     = true,
                        F_IsAcct          = false
                    }, new object());
                }
            }

            //添加执行历史记录
            foreach (var item in input.items)
            {
                var order = await _ordersApp.GetForm(item.id);

                if (order == null)
                {
                    continue;
                }
                order.F_NurseOperatorTime = item.operateTime?.ToDate() ?? DateTime.Now;
                order.F_Nurse             = user.F_RealName;//
                await _ordersApp.UpdateForm(order);

                //claim = claimsIdentity?.FindFirst(t => t.Type == ClaimTypes.NameIdentifier));
                //添加执行日志
                var logEntity = new OrdersExecLogEntity
                {
                    F_Oid                 = order.F_Id,
                    F_Pid                 = order.F_Pid,
                    F_VisitDate           = order.F_VisitDate,
                    F_VisitNo             = order.F_VisitNo,
                    F_OrderType           = order.F_OrderType,
                    F_OrderStartTime      = order.F_OrderStartTime,
                    F_OrderStopTime       = order.F_OrderStopTime,
                    F_OrderCode           = order.F_OrderCode,
                    F_OrderText           = order.F_OrderText,
                    F_OrderSpec           = order.F_OrderSpec,
                    F_OrderUnitAmount     = order.F_OrderUnitAmount,
                    F_OrderUnitSpec       = order.F_OrderUnitSpec,
                    F_OrderAmount         = order.F_OrderAmount,
                    F_OrderFrequency      = order.F_OrderFrequency,
                    F_OrderAdministration = order.F_OrderAdministration,
                    F_IsTemporary         = order.F_IsTemporary,
                    F_Doctor              = order.F_Doctor,
                    F_DoctorOrderTime     = order.F_DoctorOrderTime,
                    F_DoctorAuditTime     = order.F_DoctorAuditTime,
                    F_Nurse               = order.F_Nurse,
                    F_NurseId             = user.F_Id,
                    F_NurseOperatorTime   = order.F_NurseOperatorTime,
                    F_Memo                = order.F_Memo
                };
                logEntity.Create();
                logEntity.F_CreatorUserId = user.F_Id;
                await _ordersExecLogApp.InsertForm(logEntity);
            }

            return(Ok("执行成功"));
        }