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 = "医保已结算,但生成收据失败。请手动检查此单" }); } }