Example #1
0
        public ReceiptPrint GeneratePrint(string hospitalCode, PatientData patient, HisOrderData orderData, SettleResultData resultData)
        {
            decimal yibaoTotal = 0;

            foreach (var form in orderData.ChargeItemForms)
            {
                foreach (var item in form.ChargeItems)
                {
                    // 参与结算的
                    if (!string.IsNullOrEmpty(item.ChargeItem.ChannelData?.Id))
                    {
                        yibaoTotal += item.Total;
                    }
                }
            }

            ReceiptPrint print = new ReceiptPrint();

            print.HospitalCode = hospitalCode;
            print.YibaoTotal   = yibaoTotal;
            //TODO:设置医保打印数据
            //print.PatientName = patient.P3;

            return(print);
        }
        public void Handle(ProcessInternalStateChangedEvent eventData)
        {
            HisOrderData hisOrderData = null;

            try
            {
                hisOrderData = eventData.Process.GetDataStoreItem <HisOrderData>("HisData");
                var resultData = eventData.Process.GetDataStoreItem <SettleResultData>("SettleResult");
                var receipt    = _receiptProvider.GenerateReceipt(hisOrderData, new ReceiptDto
                {
                    //TODO:设置报销费用
                    //Reimbursement = resultData.CalculateResultInfo.P10
                });

                //收费打印单
                string hospitalCode = _settingManager.GetSettingValue("<%= classify(name) %>.HospitalCode.Tenant");
                var    patient      = eventData.Process.GetDataStoreItem <PatientData>("Patient");
                receipt.Print = _receiptProvider.GeneratePrint(hospitalCode, patient, hisOrderData, resultData);

                eventData.Process.Receipt = receipt;
                eventData.Process.Action(new GenerateReceiptAction());
            }
            catch (Exception ex)
            {
                Logger.Error($"处理收据时报错:processId:{eventData.Process.Id}, error:{ex}");
                eventData.Process.Action(new SettleFailAction
                {
                    Error = "医保已结算,但生成收据失败。请手动检查此单"
                });
            }
        }