/// <summary>
        /// 获取门诊预结算参数
        /// </summary>
        /// <returns></returns>
        private OutpatientPlanBirthPreSettlementParam GetOutpatientPlanBirthPreSettlementParam(
            OutpatientPlanBirthPreSettlementUiParam param
            )
        {
            var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId);

            userBase.TransKey = param.TransKey;
            var outpatientParam = new GetOutpatientPersonParam()
            {
                User    = userBase,
                UiParam = param,
            };
            var outpatientPerson = _serviceBasicService.GetOutpatientPerson(outpatientParam);

            if (outpatientPerson == null)
            {
                throw new Exception("his中未获取到当前病人!!!");
            }
            var outpatientDetailPerson = _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam()
            {
                User       = userBase,
                BusinessId = param.BusinessId,
            });
            //获取主诊断
            var    diagnosisData             = outpatientPerson.DiagnosisList.FirstOrDefault(c => c.IsMainDiagnosis == "是");
            var    inpatientDiagnosisDataDto = diagnosisData;
            string mainDiagnosis             = null;

            if (inpatientDiagnosisDataDto != null)
            {
                if (!string.IsNullOrWhiteSpace(inpatientDiagnosisDataDto.ProjectCode))
                {
                    mainDiagnosis = inpatientDiagnosisDataDto.ProjectCode;
                }
                else
                {
                    throw new Exception("未对码诊断:" + "[" + inpatientDiagnosisDataDto.DiseaseName + "]" + "[" + inpatientDiagnosisDataDto.DiseaseCoding + "]");
                }
            }

            var resultData = new OutpatientPlanBirthPreSettlementParam()
            {
                OutpatientNo  = CommonHelp.GuidToStr(param.BusinessId),//outpatientPerson.OutpatientNumber,
                DiagnosisDate = Convert.ToDateTime(outpatientPerson.VisitDate).ToString("yyyyMMddHHmmss"),
                ProjectNum    = outpatientDetailPerson.Count(),
                TotalAmount   = outpatientPerson.MedicalTreatmentTotalCost,
                AfferentSign  = param.AfferentSign,
                IdentityMark  = param.IdentityMark,
                AdmissionMainDiagnosisIcd10 = mainDiagnosis,
            };
            var rowDataList = new List <PlanBirthSettlementRow>();
            //升序
            var dataSort = outpatientDetailPerson.OrderBy(c => c.BillTime).ToArray();
            int num      = 0;

            foreach (var item in dataSort)
            {
                if (string.IsNullOrWhiteSpace(item.MedicalInsuranceProjectCode))
                {
                    throw new Exception("[" + item + "]名称:" + item.DirectoryName + "未对码!!!");
                }
                if (!string.IsNullOrWhiteSpace(item.MedicalInsuranceProjectCode))
                {
                    var row = new PlanBirthSettlementRow()
                    {
                        ColNum           = num,
                        ProjectCode      = item.MedicalInsuranceProjectCode,
                        ProjectName      = item.DirectoryName,
                        UnitPrice        = item.UnitPrice,
                        Quantity         = item.Quantity,
                        TotalAmount      = item.Amount,
                        Formulation      = item.Formulation,
                        ManufacturerName = item.DrugProducingArea,
                        Dosage           = item.Dosage,
                        Specification    = item.Specification,
                        Usage            = item.Usage
                    };

                    rowDataList.Add(row);
                    num++;
                }
            }

            resultData.RowDataList = rowDataList;


            return(resultData);
        }
        /// <summary>
        /// 门诊计划生育预结算
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public WorkerHospitalizationPreSettlementDto OutpatientPlanBirthPreSettlement(OutpatientPlanBirthPreSettlementUiParam param)
        {
            WorkerHospitalizationPreSettlementDto data = null;
            var userBase = _serviceBasicService.GetUserBaseInfo(param.UserId);

            userBase.TransKey = param.TransKey;

            var outpatientParam = new GetOutpatientPersonParam()
            {
                User    = userBase,
                UiParam = param,
            };
            var outpatientPerson = _serviceBasicService.GetOutpatientPerson(outpatientParam);

            if (outpatientPerson == null)
            {
                throw new Exception("his中未获取到当前病人!!!");
            }
            var outpatientDetailPerson = _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam()
            {
                User       = userBase,
                BusinessId = param.BusinessId,
            });
            var iniParam = GetOutpatientPlanBirthPreSettlementParam
                               (param);

            iniParam.AfferentSign = param.AfferentSign;
            iniParam.IdentityMark = param.IdentityMark;
            //医保执行
            data = _outpatientDepartmentRepository.OutpatientPlanBirthPreSettlement(iniParam);
            //保存门诊病人
            outpatientParam.IsSave = true;
            outpatientParam.Id     = Guid.NewGuid();
            _serviceBasicService.GetOutpatientPerson(outpatientParam);
            var saveData = new MedicalInsuranceDto
            {
                AdmissionInfoJson = JsonConvert.SerializeObject(param),
                BusinessId        = param.BusinessId,
                Id                    = Guid.NewGuid(),
                IsModify              = false,
                InsuranceType         = 999,
                MedicalInsuranceState = MedicalInsuranceState.MedicalInsurancePreSettlement,
                AfferentSign          = param.AfferentSign,
                IdentityMark          = param.IdentityMark,
                IsBirthHospital       = 1
            };

            //存中间库
            _medicalInsuranceSqlRepository.SaveMedicalInsurance(userBase, saveData);
            //日志写入
            _systemManageRepository.AddHospitalLog(new AddHospitalLogParam()
            {
                User            = userBase,
                JoinOrOldJson   = JsonConvert.SerializeObject(iniParam),
                ReturnOrNewJson = JsonConvert.SerializeObject(data),
                RelationId      = outpatientParam.Id,
                BusinessId      = param.BusinessId,
                Remark          = "[R][OutpatientDepartment]门诊计划生育预结算"
            });
            //明细存入
            _serviceBasicService.GetOutpatientDetailPerson(new OutpatientDetailParam()
            {
                IsSave     = true,
                BusinessId = param.BusinessId,
                User       = userBase
            });
            return(data);
        }