/// <summary>
        /// 门诊计划生育结算
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public WorkerHospitalizationPreSettlementDto OutpatientPlanBirthSettlement(OutpatientPlanBirthSettlementParam param)
        {
            WorkerHospitalizationPreSettlementDto data = null;
            var xmlStr = XmlHelp.SaveXml(param);

            if (!xmlStr)
            {
                throw new Exception("门诊计划生育结算保存参数出错");
            }
            int result = MedicalInsuranceDll.CallService_cxjb("SYBX005");

            if (result != 1)
            {
                throw new Exception("门诊计划生育结算执行出错!!!");
            }
            var dataIni = XmlHelp.DeSerializerModel(new WorkerBirthPreSettlementJsonDto(), true);

            if (dataIni != null)
            {
                data = AutoMapper.Mapper.Map <WorkerHospitalizationPreSettlementDto>(dataIni);
            }
            return(data);
        }
        /// <summary>
        /// 获取门诊计划生育结算参数
        /// </summary>
        /// <returns></returns>
        public OutpatientPlanBirthSettlementParam GetOutpatientPlanBirthSettlementParam(
            OutpatientPlanBirthSettlementUiParam 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 OutpatientPlanBirthSettlementParam()
            {
                OutpatientNo   = outpatientPerson.OutpatientNumber,
                DiagnosisDate  = Convert.ToDateTime(outpatientPerson.VisitDate).ToString("yyyyMMddHHmmss"),
                ProjectNum     = outpatientDetailPerson.Count(),
                TotalAmount    = outpatientPerson.MedicalTreatmentTotalCost,
                AfferentSign   = param.AfferentSign,
                AccountPayment = string.IsNullOrWhiteSpace(param.AccountPayment) == true?0: Convert.ToDecimal(param.AccountPayment),
                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);
        }