/// <summary>
        /// 处方上传
        /// </summary>
        /// <returns></returns>
        public ApiJsonResultData PrescriptionUpload(PrescriptionUploadWebParam param, HisBaseParam baseParam)
        {   //选择性上次
            var resultData = new ApiJsonResultData();

            if (param.BusinessIdDetailList != null && param.BusinessIdDetailList.Any())
            {
                var queryParam = new InpatientInfoDetailQueryBasiclevelParam();
                queryParam.IdList = param.BusinessIdDetailList;

                var resultSaveData = HttpHelp.HttpPost(Logs.ToJson(queryParam), "InpatientInfoDetailQuery",
                                                       new List <OutpatientDetailQueryBasiclevelDto>());
                if (resultSaveData.Any())
                {
                    var uploadData = resultSaveData.OrderBy(c => c.Id).ToList();

                    var uploadParam = new PrescriptionUploadParam();
                    uploadParam.PI_ZHY = param.PI_ZHY;
                    uploadParam.PI_JBR = baseParam.EmpIDCode;
                    uploadParam.CFMX   = uploadData.Select(c => new PrescriptionUploadCFMX()
                    {
                        CO     = "0",
                        AKA072 = "0",
                        AKC229 = "0"
                    }).ToList();
                }
            }

            return(resultData);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取处方上传入参
        /// </summary>
        /// <returns></returns>
        private PrescriptionUploadParam GetPrescriptionUploadParam(List <QueryInpatientInfoDetailDto> param,
                                                                   List <QueryMedicalInsurancePairCodeDto> pairCodeList, UserInfoDto user, string insuranceType)
        {
            var resultData = new PrescriptionUploadParam();

            resultData.Operators = CommonHelp.GuidToStr(user.UserId);
            var rowDataList = new List <PrescriptionUploadRowParam>();

            foreach (var item in param)
            {
                var pairCodeData = pairCodeList.FirstOrDefault(c => c.DirectoryCode == item.DirectoryCode);

                if (pairCodeData != null)
                {
                    //自付金额
                    decimal residentSelfPayProportion = 0;
                    if (insuranceType == "342") //居民
                    {
                        residentSelfPayProportion = CommonHelp.ValueToDouble(
                            (item.Amount + item.AdjustmentDifferenceValue) *
                            pairCodeData.ResidentSelfPayProportion);
                    }

                    if (insuranceType == "310") //职工
                    {
                        residentSelfPayProportion = CommonHelp.ValueToDouble(
                            (item.Amount + item.AdjustmentDifferenceValue) * pairCodeData.WorkersSelfPayProportion);
                    }

                    var rowData = new PrescriptionUploadRowParam()
                    {
                        ColNum                    = 0,
                        PrescriptionNum           = item.DocumentNo,
                        PrescriptionSort          = item.DataSort,
                        ProjectCode               = pairCodeData.ProjectCode,
                        FixedEncoding             = pairCodeData.FixedEncoding,
                        DirectoryDate             = CommonHelp.FormatDateTime(item.BillTime),
                        DirectorySettlementDate   = CommonHelp.FormatDateTime(item.BillTime),
                        ProjectCodeType           = pairCodeData.ProjectCodeType,
                        ProjectName               = pairCodeData.ProjectName,
                        ProjectLevel              = pairCodeData.ProjectLevel,
                        UnitPrice                 = item.UnitPrice,
                        Quantity                  = item.Quantity,
                        Amount                    = item.Amount,
                        ResidentSelfPayProportion = residentSelfPayProportion, //自付金额计算
                        Formulation               = pairCodeData.Formulation,
                        Dosage                    = (!string.IsNullOrWhiteSpace(item.Dosage))
                            ? CommonHelp.ValueToDouble(Convert.ToDecimal(item.Dosage))
                            : 0,
                        UseFrequency    = "0",
                        Usage           = item.Usage,
                        Specification   = item.Specification,
                        Unit            = item.Unit,
                        UseDays         = 0,
                        Remark          = "",
                        DetailId        = item.DetailId,
                        DoctorJobNumber = item.OperateDoctorId,
                        Id = item.Id,
                        LimitApprovalDate   = "",
                        LimitApprovalUser   = "",
                        LimitApprovalMark   = "",
                        LimitApprovalRemark = ""
                    };
                    //是否现在使用药品
                    if (pairCodeData.RestrictionSign == "1")
                    {
                        rowData.LimitApprovalDate = CommonHelp.FormatDateTime(item.BillTime);
                        rowData.LimitApprovalUser = rowData.DoctorJobNumber;
                        rowData.LimitApprovalMark = "1";
                    }

                    rowDataList.Add(rowData);
                }
            }

            resultData.RowDataList = rowDataList;
            return(resultData);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 处方数据上传
        /// </summary>
        /// <param name="param"></param>
        /// <param name="businessId"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private PrescriptionUploadDto PrescriptionUploadData(PrescriptionUploadParam param, string businessId,
                                                             UserInfoDto user)
        {
            var data   = new PrescriptionUploadDto();
            var rowXml = param.RowDataList.Select(c => new HospitalizationFeeUploadRowXml()
            {
                SerialNumber = c.DetailId
            }).ToList();
            var xmlStr = XmlHelp.SaveXml(param);

            if (xmlStr)
            {
                int result = MedicalInsuranceDll.CallService_cxjb("CXJB004");
                if (result == 1)
                {
                    //如果业务id存在则不直接抛出异常
                    if (!string.IsNullOrWhiteSpace(businessId))
                    {
                        data = XmlHelp.DeSerializerModel(new PrescriptionUploadDto(), false);
                    }
                    else
                    {
                        data = XmlHelp.DeSerializerModel(new PrescriptionUploadDto(), true);
                    }

                    if (data.ReturnState == "1")
                    {
                        //交易码
                        var transactionId = Guid.NewGuid().ToString("N");
                        //添加批次
                        var updateFeeParam = param.RowDataList.Select(d => new UpdateHospitalizationFeeParam
                        {
                            Id            = d.Id,
                            BatchNumber   = data.ProjectBatch,
                            TransactionId = transactionId,
                            UploadAmount  = d.Amount
                        }).ToList();
                        _medicalInsuranceSqlRepository.UpdateHospitalizationFee(updateFeeParam, false, user);

                        //回参
                        var xmlData = new HospitalizationFeeUploadXml()
                        {
                            MedicalInsuranceHospitalizationNo = param.MedicalInsuranceHospitalizationNo,
                            RowDataList = rowXml,
                        };

                        var strXmlBackParam = XmlSerializeHelper.HisXmlSerialize(xmlData);
                        user.TransKey = businessId;
                        var saveXml = new SaveXmlDataParam()
                        {
                            User = user,
                            MedicalInsuranceBackNum = "CXJB004",
                            MedicalInsuranceCode    = "31",
                            BusinessId = businessId,
                            BackParam  = strXmlBackParam
                        };
                        //存基层
                        _webBasicRepository.SaveXmlData(saveXml);
                        var batchConfirmParam = new BatchConfirmParam()
                        {
                            ConfirmType = 1,
                            MedicalInsuranceHospitalizationNo = param.MedicalInsuranceHospitalizationNo,
                            BatchNumber = data.ProjectBatch,
                            Operators   = CommonHelp.GuidToStr(user.UserId)
                        };
                        var batchConfirmData = BatchConfirm(batchConfirmParam);
                        //如果批次号确认失败,更新病人处方上传标示为 0(未上传)
                        if (batchConfirmData == false)
                        {
                            _medicalInsuranceSqlRepository.UpdateHospitalizationFee(updateFeeParam, true, user);
                        }
                    }
                }
                else
                {
                    throw new Exception("[" + user.UserId + "]" + "处方上传执行出错!!!");
                }
            }

            return(data);
        }