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 = "医保已结算,但生成收据失败。请手动检查此单"
                });
            }
        }
        public void Handle(ProcessInternalStateChangedEvent eventData)
        {
            if (eventData.Process.Channel == Metadata.Channel.< %= classify(name) % > &&
                                                                   eventData.Process.Type == ProcessType.Refund)
            {
                var chargeProcess = _processManager.GetProcess(eventData.Process.ChargeProcessId.Value);

                var patient      = chargeProcess.GetDataStoreItem(nameof(PreSettleAction.Patient));
                var hisData      = chargeProcess.GetDataStoreItem(nameof(PreSettleAction.HisData));
                var settleResult = chargeProcess.GetDataStoreItem(nameof(SettleAction.SettleResult));
                eventData.Process.SetDataStoreItem("patient", patient);
                eventData.Process.SetDataStoreItem("hisData", hisData);
                eventData.Process.SetDataStoreItem("settleResult", settleResult);
            }
        }
예제 #3
0
        public void Handle(ProcessInternalStateChangedEvent eventData)
        {
            try
            {
                // his data;
                var chargeReceipt = _processManager.GetProcess(eventData.Process.ChargeProcessId.Value).Receipt;
                var refundReceipt = _receiptProvider.GenerateRefundReceipt(chargeReceipt);

                eventData.Process.Receipt = refundReceipt;
                eventData.Process.Action(new GenerateReceiptAction());
            }
            catch (Exception ex)
            {
                Logger.Error($"处理收据时报错:processId:{eventData.Process.Id}, error:{ex}");

                eventData.Process.Action(new SettleFailAction
                {
                    Error = "医保已结算,但生成收据失败。请手动检查此单"
                });
            }
        }