///<summary> /// Method Invocation of wrapper classes ///<summary> protected static FR_String Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_OR_COR_1437 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { bool cleanupConnection = Connection == null; bool cleanupTransaction = Transaction == null; FR_String functionReturn = new FR_String(); try { if (cleanupConnection == true) { Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString); Connection.Open(); } if (cleanupTransaction == true) { Transaction = Connection.BeginTransaction(); } functionReturn = Execute(Connection, Transaction, Parameter, securityTicket); #region Cleanup Connection/Transaction //Commit the transaction if (cleanupTransaction == true) { Transaction.Commit(); } //Close the connection if (cleanupConnection == true) { Connection.Close(); } #endregion } catch (Exception ex) { try { if (cleanupTransaction == true && Transaction != null) { Transaction.Rollback(); } } catch { } try { if (cleanupConnection == true && Connection != null) { Connection.Close(); } } catch { } throw new Exception("Exception occured in method cls_Create_Orders_Report", ex); } return(functionReturn); }
protected static FR_String Execute(DbConnection Connection, DbTransaction Transaction, P_OR_DOPDFRfOID Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_String(); //Put your code here return(returnValue); #endregion UserCode }
protected static FR_String Execute(DbConnection Connection, DbTransaction Transaction, P_L5AR_SSPfPS_1335 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_String(); for (int i = 0; i < Parameter.Priorities.Count(); i++) { var productSupplier = new ORM_CMN_PRO_Product_Supplier(); if (Parameter.Priorities[i].Product_SupplierID != Guid.Empty) { var fetched = productSupplier.Load(Connection, Transaction, Parameter.Priorities[i].Product_SupplierID); if (fetched.Status == FR_Status.Success) { productSupplier.SupplierPriority = Parameter.Priorities[i].SupplierPriority; productSupplier.Save(Connection, Transaction); } } } return(returnValue); #endregion UserCode }
protected static FR_String Execute(DbConnection Connection, DbTransaction Transaction, P_OR_COR_1437 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_String(); //Put your code here var downloadURL = ""; var DateForElastic = DateTime.Now; var orderStatusesForReport = Parameter.Statuses.Select(x => x.ToString()).ToArray(); var ordersForReportData = new OR_GOfRfS_1038[] { }; if (Parameter.GroupByPharmacy) { ordersForReportData = cls_Get_Orders_For_Steribase_Report.Invoke(Connection, Transaction, securityTicket).Result.Where(x => x.StatusCode != 10).Select(x => new OR_GOfRfS_1038 { Patient_RefID = x.Patient_RefID, StatusCode = x.StatusCode, CaseID = x.CaseID, StatusID = x.StatusID, BusinesParticipantWhoCreatedOrder = x.BusinesParticipantWhoCreatedOrder, OrderID = x.OrderID, OrderNumber = x.OrderNumber, CaseNumber = x.CaseNumber, DrugName = x.DrugName, PZN = x.PZN, DeliveryDate = x.DeliveryDate, DeliveryTimeFrom = x.DeliveryTimeFrom, DeliveryTimeTo = x.DeliveryTimeTo, OnlyLabel = x.OnlyLabel, ChargesFee = x.ChargesFee, SendInvoiceToPractice = x.SendInvoiceToPractice, TreatmentDate = x.TreatmentDate, DoctorID = x.DoctorID, OrderCreationTimestamp = x.OrderCreationTimestamp, CaseCreationDate = x.CaseCreationDate, OrderComment = x.OrderComment, HeaderComment = x.HeaderComment, IsDeleted = x.IsDeleted, PharmacyName = x.PharmacyName, PharmacyID = x.PharmacyID, }).ToArray(); } else { ordersForReportData = cls_Get_Orders_for_Report_for_Statuses.Invoke(Connection, Transaction, new P_OR_GOfRfS_1038 { OrderStatuses = orderStatusesForReport }, securityTicket).Result.ToArray(); } var allOrderStatuses = ordersForReportData.Any() ? cls_Get_Order_Status_History_for_OrderIDs.Invoke(Connection, Transaction, new P_OR_GOSHfOIDs_1528() { OrderIDs = ordersForReportData.Select(t => t.OrderID).ToArray() }, securityTicket).Result.GroupBy(t => t.OrderID).ToDictionary(t => t.Key, t => t.ToList()) : new Dictionary <Guid, List <OR_GOSHfOIDs_1528> >(); var orderForReportL = new List <OrdersForReportModel>(); var orderForGlobalReport = new List <OrdersForReportModel>(); var patientDataCache = new Dictionary <Guid, P_PA_GPDfPID_1124>(); var doctorDataCache = new Dictionary <Guid, DO_GDDfDID_0823>(); var practiceDataCache = new Dictionary <Guid, DO_GPDFR_0840>(); var practiceData = new DO_GPDFR_0840(); var practiceID = Guid.Empty; var documentCreatCount = 0; var documentList = new List <Documents>(); var allDocuments = new List <Documents>(); var OrderFromDate = ordersForReportData.Any() ? ordersForReportData.Min(ord => ord.OrderCreationTimestamp) : DateTime.MinValue; var patientInsurancesCache = cls_Get_Patient_Insurance_Data_on_Tenant.Invoke(Connection, Transaction, securityTicket).Result.GroupBy(t => t.PatientID).ToDictionary(t => t.Key, t => t.ToList()); var businessParticipants = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new ORM_CMN_BPT_BusinessParticipant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).GroupBy(t => t.CMN_BPT_BusinessParticipantID).ToDictionary(t => t.Key, t => t.Single()); var reportName = ""; var orderGroupedByPharmacy = new Dictionary <Guid, List <OR_GOfRfS_1038> >(); if (Parameter.GroupByPharmacy) { orderGroupedByPharmacy = ordersForReportData.GroupBy(x => x.PharmacyID).ToDictionary(x => x.Key, x => x.ToList()); } else { orderGroupedByPharmacy = new Dictionary <Guid, List <OR_GOfRfS_1038> >() { { Guid.NewGuid(), ordersForReportData.ToList() } }; } foreach (var pharmacy in orderGroupedByPharmacy) { orderForReportL = new List <OrdersForReportModel>(); documentList = new List <Documents>(); #region Prepare data foreach (var orderData in pharmacy.Value) { // todo: update pre-fetch if (!patientDataCache.ContainsKey(orderData.Patient_RefID)) { patientDataCache.Add(orderData.Patient_RefID, cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = orderData.Patient_RefID }, securityTicket).Result); } var patientData = patientDataCache[orderData.Patient_RefID]; if (orderData.DoctorID == Guid.Empty) { if (businessParticipants.ContainsKey(orderData.BusinesParticipantWhoCreatedOrder)) { var bptWhoCreatedOred = businessParticipants[orderData.BusinesParticipantWhoCreatedOrder]; if (bptWhoCreatedOred.IsCompany) { practiceID = cls_Get_PracticeID_for_BusinesParticipant.Invoke(Connection, Transaction, new P_DO_GPIDFBPT_1700() { PracticeBusinessParticipant = orderData.BusinesParticipantWhoCreatedOrder }, securityTicket).Result.FirstOrDefault().PracticeID; } else { var doctorID = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, BusinessParticipant_RefID = orderData.BusinesParticipantWhoCreatedOrder }).SingleOrDefault().HEC_DoctorID; practiceID = cls_Get_PracticeID_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GPIDfDID_1353() { DoctorID = doctorID }, securityTicket).Result.FirstOrDefault().HEC_MedicalPractiseID; } } if (!practiceDataCache.ContainsKey(practiceID)) { var practiceD = cls_Get_Practice_Details_for_Report.Invoke(Connection, Transaction, new P_DO_GPDFR_0840() { PracticeID = practiceID }, securityTicket).Result; if (practiceD != null) { practiceDataCache.Add(practiceID, practiceD); } } practiceData = practiceDataCache[practiceID]; } if (!doctorDataCache.ContainsKey(orderData.DoctorID)) { doctorDataCache.Add(orderData.DoctorID, cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = orderData.DoctorID }, securityTicket).Result.SingleOrDefault()); } var doctorData = doctorDataCache[orderData.DoctorID]; var orderForReport = new OrdersForReportModel(); switch (patientData.gender) { case 0: orderForReport.PatientSalutation = "Herr"; break; case 1: orderForReport.PatientSalutation = "Frau"; break; default: orderForReport.PatientSalutation = "-"; break; } var orderStatus = "Bestellung"; if (orderData.StatusCode == 6 || orderData.StatusCode == 7) { orderStatus = "Stornierung"; } else if (orderData.StatusCode == 10) { orderStatus = "Bestellt bei einer nicht kooperierenden Apotheke"; } var hipData = patientInsurancesCache[orderData.Patient_RefID].Where(t => t.InsuranceDate.Date <= orderData.CaseCreationDate.Date).FirstOrDefault(); orderForReport.HIP = hipData == null ? "-" : hipData.HipName; orderForReport.PatientInsuranceNumber = hipData == null ? "-" : hipData.InsuranceStateCode; orderForReport.PatientStatusNumber = hipData == null ? "-" : hipData.InsuranceIdNumber; orderForReport.PatientFirstName = patientData.patient_first_name; orderForReport.PatientLastName = patientData.patient_last_name; orderForReport.PatientBirthDate = patientData.birthday; orderForReport.CaseNumber = Convert.ToInt32(orderData.CaseNumber); orderForReport.OrderNumber = Convert.ToInt32(orderData.OrderNumber); orderForReport.OrderType = orderStatus; orderForReport.DrugName = orderData.DrugName; orderForReport.Pzn = orderData.PZN; orderForReport.TreatmentDate = orderData.TreatmentDate; orderForReport.DeliveryDate = orderData.DeliveryDate < orderData.TreatmentDate ? orderData.DeliveryDate : orderData.TreatmentDate; orderForReport.DeliveryTimeFrom = orderData.DeliveryTimeFrom.ToString("HH:mm") == "00:00" ? orderData.DeliveryTimeFrom.AddHours(8) : orderData.DeliveryTimeFrom; orderForReport.DeliveryTimeTo = orderData.DeliveryTimeTo.ToString("HH:mm") == "23:59" ? orderData.DeliveryTimeFrom.AddHours(18) : orderData.DeliveryTimeTo; orderForReport.ChargesFee = orderData.ChargesFee ? "Ja" : "Nein"; orderForReport.OnlyLabel = orderData.OnlyLabel ? "Ja" : "Nein"; orderForReport.PracticeInvoice = orderData.SendInvoiceToPractice ? "Ja" : "Nein"; orderForReport.OrderComment = orderData.OrderComment; orderForReport.HeaderComment = orderData.HeaderComment; orderForReport.PharmacyName = orderData.PharmacyID == Guid.Empty ? "-" : orderData.PharmacyName; if (allOrderStatuses.ContainsKey(orderData.OrderID)) { var orderStatuses = allOrderStatuses[orderData.OrderID]; if (orderStatuses.Any(t => t.StatusCode == 1)) { orderForReport.DateOfSubmission = orderStatuses.First(t => t.StatusCode == 1).StatusChangedOn; } } if (orderData.DoctorID != Guid.Empty) { orderForReport.PracticeName = doctorData != null ? doctorData.practice : "-"; orderForReport.TreatmentDoctor = doctorData != null ? doctorData.first_name + " " + doctorData.last_name : "-"; orderForReport.Street = doctorData != null ? doctorData.address : "-"; orderForReport.City = doctorData != null ? doctorData.city : "-"; orderForReport.Zip = doctorData != null ? doctorData.ZIP : "-"; } else { orderForReport.PracticeName = practiceData != null ? practiceData.Name : "-"; orderForReport.TreatmentDoctor = "-"; orderForReport.Street = practiceData != null ? practiceData.Street_Name + " " + practiceData.Street_Number : "-"; orderForReport.City = practiceData != null ? practiceData.City : "-"; orderForReport.Zip = practiceData != null ? practiceData.ZIP : "-"; } if (orderData.StatusCode == 6 && !ordersForReportData.Any(r => r.OrderID != orderData.OrderID && orderData.CaseID == orderData.CaseID)) { var originalOrder = new OrdersForReportModel(); GenericUtils.CloneObject <OrdersForReportModel>(orderForReport, originalOrder); originalOrder.OrderType = "Bestellung"; orderForReportL.Add(originalOrder); } orderForReportL.Add(orderForReport); } orderForGlobalReport.AddRange(orderForReportL); #endregion #region create report if (orderForReportL.Any()) { var documentExcel = new Documents(); if (Parameter.GroupByPharmacy) { reportName = String.Format("{0} {1}", pharmacy.Value.First().PharmacyName, "Bestellungexport f�r Steribase" + DateTime.Now.ToString("dd.MM.yyyy_HH.mm")); } else { reportName = String.Format("{0} {1}", "CompleteOrdersReport", DateTime.Now.ToString("dd.MM.yyyy_HH.mm")); } documentExcel.documentName = reportName; documentExcel.documentOutputLocation = GenerateReportOrders.CreateOrdersXlsReport(orderForReportL, documentExcel.documentName); documentExcel.mimeType = UtilMethods.GetMimeType(documentExcel.documentOutputLocation); documentExcel.receiver = "Steribase"; documentList.Add(documentExcel); allDocuments.Add(documentExcel); foreach (var item in documentList) { var ms = new MemoryStream(File.ReadAllBytes(item.documentOutputLocation)); var byteArrayFile = ms.ToArray(); var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); var uploadedFrom = HttpContext.Current.Request.UserHostAddress; var documentID = documentProvider.UploadDocument(byteArrayFile, item.documentOutputLocation, securityTicket.SessionTicket, uploadedFrom); downloadURL = documentProvider.GenerateDownloadLink(documentID, securityTicket.SessionTicket, true, true); var parameterDoc = new P_ARCH_UD_1326(); parameterDoc.DocumentID = documentID; parameterDoc.Mime = item.mimeType; parameterDoc.DocumentName = item.documentName; parameterDoc.DocumentDate = DateForElastic; parameterDoc.Receiver = item.receiver; parameterDoc.ContractID = item.ContractID; if (Parameter.GroupByPharmacy) { parameterDoc.Description = pharmacy.Value.First().PharmacyName + " - Bestellungen von " + OrderFromDate.ToString("dd.MM.yyyy") + " - " + DateForElastic.ToString("dd.MM.yyyy"); } else { parameterDoc.Description = reportName; } cls_Upload_Report.Invoke(Connection, Transaction, parameterDoc, securityTicket); } documentCreatCount++; } #endregion } #region create all report if (documentCreatCount > 1) { documentList = new List <Documents>(); if (orderForGlobalReport.Any()) { var documentExcel = new Documents(); reportName = "Bestellungexport f�r Steribase " + DateTime.Now.ToString("dd.MM.yyyy_HH.mm"); documentExcel.documentName = reportName; documentExcel.documentOutputLocation = GenerateReportOrders.CreateOrdersXlsReport(orderForGlobalReport, documentExcel.documentName); documentExcel.mimeType = UtilMethods.GetMimeType(documentExcel.documentOutputLocation); documentExcel.receiver = "Steribase"; documentList.Add(documentExcel); allDocuments.Add(documentExcel); foreach (var item in documentList) { var ms = new MemoryStream(File.ReadAllBytes(item.documentOutputLocation)); var byteArrayFile = ms.ToArray(); var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); var uploadedFrom = HttpContext.Current.Request.UserHostAddress; var documentID = documentProvider.UploadDocument(byteArrayFile, item.documentOutputLocation, securityTicket.SessionTicket, uploadedFrom); downloadURL = documentProvider.GenerateDownloadLink(documentID, securityTicket.SessionTicket, true, true); var parameterDoc = new P_ARCH_UD_1326(); parameterDoc.DocumentID = documentID; parameterDoc.Mime = item.mimeType; parameterDoc.DocumentName = item.documentName; parameterDoc.DocumentDate = DateForElastic; parameterDoc.Receiver = item.receiver; parameterDoc.ContractID = item.ContractID; parameterDoc.Description = "Bestellungen von " + OrderFromDate.ToString("dd.MM.yyyy") + " - " + DateForElastic.ToString("dd.MM.yyyy"); cls_Upload_Report.Invoke(Connection, Transaction, parameterDoc, securityTicket); } } } #region Create Dictionary And Zip returnValue.Result = ""; if (allDocuments.Any()) { var directoryPath = Path.GetTempPath() + reportName; var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); if (documentCreatCount == 1) { var doc = allDocuments.First(); var fname = directoryPath + "\\" + doc.documentName + ".xlsx"; var ms = new MemoryStream(File.ReadAllBytes(doc.documentOutputLocation)); byte[] bytes = ms.ToArray(); var mime = UtilMethods.GetMimeType(fname); var documentID = documentProvider.UploadDocument(bytes, fname, securityTicket.SessionTicket, HttpContext.Current.Request.UserHostAddress); returnValue.Result = documentProvider.GenerateDownloadLink(documentID, securityTicket.SessionTicket, true, true); } else { if (Directory.Exists(directoryPath)) { Directory.Delete(directoryPath, true); } Directory.CreateDirectory(directoryPath); var fileVersion = 1; foreach (var doc in allDocuments) { var fname = directoryPath + "\\" + doc.documentName + ".xlsx"; if (File.Exists(fname)) { fname = directoryPath + "\\" + doc.documentName + "(" + fileVersion++ + ")" + ".xlsx"; } else { fileVersion = 1; } var ms = new MemoryStream(File.ReadAllBytes(doc.documentOutputLocation)); File.WriteAllBytes(fname, ms.ToArray()); } byte[] bytes = new byte[] { }; var zipName = Path.GetTempPath() + "\\" + reportName + ".zip"; ZipFile.CreateFromDirectory(directoryPath, zipName); using (FileStream fs = new FileStream(zipName, FileMode.Open)) { using (MemoryStream ms = new MemoryStream()) { fs.CopyTo(ms); bytes = ms.ToArray(); } } var mime = UtilMethods.GetMimeType(zipName); var documentID = documentProvider.UploadDocument(bytes, zipName, securityTicket.SessionTicket, HttpContext.Current.Request.UserHostAddress); returnValue.Result = documentProvider.GenerateDownloadLink(documentID, securityTicket.SessionTicket, true, true); Directory.Delete(directoryPath, true); File.Delete(zipName); } } #endregion #endregion return(returnValue); #endregion UserCode }
protected static FR_String Execute(DbConnection Connection, DbTransaction Transaction, P_OR_SOtMM_1311 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_String(); //Put your code here var data = cls_Get_Account_Information_with_PracticeID.Invoke(Connection, Transaction, securityTicket).Result; var isNewPharmacy = Parameter.Order.default_pharmacy == Guid.Empty; var current_order_status = isNewPharmacy ? "MO10" : "MO1"; var current_order_status_code = isNewPharmacy ? 10 : 1; var all_languages = ORM_CMN_Language.Query.Search(Connection, Transaction, new ORM_CMN_Language.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); var practice_info = cls_Get_Practice_Details_for_Report.Invoke(Connection, Transaction, new P_DO_GPDFR_0840() { PracticeID = data.PracticeID }, securityTicket).Result; var trigger_acc = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { USR_AccountID = securityTicket.AccountID }).Single(); var culture = new CultureInfo("de", true); var delivery_date = DateTime.ParseExact(Parameter.Order.delivery_date, "dd.MM.yyyy", culture); var delivery_date_from = DateTime.ParseExact(Parameter.Order.delivery_date_from, "HH:mm", culture); delivery_date_from = delivery_date.AddHours(delivery_date_from.Hour).AddMinutes(delivery_date_from.Minute); var delivery_date_to = DateTime.ParseExact(Parameter.Order.delivery_date_to, "HH:mm", culture); delivery_date_to = delivery_date.AddHours(delivery_date_to.Hour).AddMinutes(delivery_date_to.Minute); var drug_names = new List <string>(); var cmn_products = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); var hec_products = ORM_HEC_Product.Query.Search(Connection, Transaction, new ORM_HEC_Product.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); var drugs = cls_Get_Drug_Details_on_Tenant.Invoke(Connection, Transaction, securityTicket).Result; #region save and get pharmacy if (isNewPharmacy) { Parameter.Order.default_pharmacy = cls_Save_Pharmacy.Invoke(Connection, Transaction, new P_PH_SP_1124 { Pharmacy = new Pharmacy.Model.Pharmacy(Guid.Empty, Parameter.Order.pharmacy_name, String.Empty, String.Empty, String.Empty, Parameter.Order.pharmacy_street, Parameter.Order.pharmacy_street_number, Parameter.Order.pharmacy_zip_code, Parameter.Order.pharmacy_town, true, String.Empty) }, securityTicket).Result; } var pharmacy = cls_Get_Pharmacy_for_PharmacyID.Invoke(Connection, Transaction, new P_PH_GPfPID_1535 { PharmacyID = Parameter.Order.default_pharmacy }, securityTicket).Result; #endregion var ordersForReport = new List <ReportOrderItem>(); foreach (var order_id in Parameter.Order.order_ids) { #region Status var header = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Header.Query() { ORD_PRC_ProcurementOrder_HeaderID = order_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); header.ProcurementOrder_Supplier_RefID = pharmacy != null ? pharmacy.CompanyBPID : Guid.Empty; var header_comment = new ORM_ORD_PRC_ProcurementOrder_Note(); header_comment.Comment = Parameter.Order.comment; header_comment.Title = "Order comment"; header_comment.Tenant_RefID = securityTicket.TenantID; header_comment.ORD_PRC_ProcurementOrder_Header_RefID = order_id; header_comment.Save(Connection, Transaction); ORM_ORD_PRC_ProcurementOrder_Position.Query order_positionQ = new ORM_ORD_PRC_ProcurementOrder_Position.Query(); order_positionQ.Tenant_RefID = securityTicket.TenantID; order_positionQ.IsDeleted = false; order_positionQ.ProcurementOrder_Header_RefID = order_id; var order_position = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, order_positionQ).SingleOrDefault(); var position_comment = order_position != null ? order_position.Position_Comment ?? String.Empty : String.Empty; var drug_order_status = new ORM_ORD_PRC_ProcurementOrder_Status(); drug_order_status.GlobalPropertyMatchingID = String.Format("mm.doc.connect.drug.order.status.{0}", current_order_status.ToLower()); drug_order_status.Status_Code = current_order_status_code; drug_order_status.Tenant_RefID = securityTicket.TenantID; drug_order_status.Status_Name = new Dict(ORM_ORD_PRC_ProcurementOrder_Status.TableName); foreach (var lang in all_languages) { drug_order_status.Status_Name.AddEntry(lang.CMN_LanguageID, current_order_status); } drug_order_status.Save(Connection, Transaction); var drug_order_status_history = new ORM_ORD_PRC_ProcurementOrder_StatusHistory(); drug_order_status_history.ProcurementOrder_Header_RefID = header.ORD_PRC_ProcurementOrder_HeaderID; drug_order_status_history.ProcurementOrder_Status_RefID = drug_order_status.ORD_PRC_ProcurementOrder_StatusID; drug_order_status_history.Tenant_RefID = securityTicket.TenantID; drug_order_status_history.IsStatus_Created = true; drug_order_status_history.TriggeredAt_Date = DateTime.Now; drug_order_status_history.TriggeredBy_BusinessParticipant_RefID = trigger_acc.BusinessParticipant_RefID; drug_order_status_history.Save(Connection, Transaction); header.Current_ProcurementOrderStatus_RefID = drug_order_status.ORD_PRC_ProcurementOrder_StatusID; header.Save(Connection, Transaction); #endregion Status var ord_drug_order = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Position.Query() { ProcurementOrder_Header_RefID = order_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); ord_drug_order.Position_RequestedDateOfDelivery = delivery_date.Date; ord_drug_order.RequestedDateOfDelivery_TimeFrame_From = delivery_date_from; ord_drug_order.RequestedDateOfDelivery_TimeFrame_To = delivery_date_to; ord_drug_order.Save(Connection, Transaction); var hec_drug_order = ORM_HEC_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, new ORM_HEC_PRC_ProcurementOrder_Position.Query() { Ext_ORD_PRC_ProcurementOrder_Position_RefID = ord_drug_order.ORD_PRC_ProcurementOrder_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); var drug_id = ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query() { BoundTo_HealthcareProcurementOrderPosition_RefID = hec_drug_order.HEC_PRC_ProcurementOrder_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single().HealthcareProduct_RefID; var drugName = drugs.First(t => t.DrugID == drug_id).DrugName; drug_names.Add(drugName); if (Parameter.Order.doctor_id != Guid.Empty) { var authorizing_doctor_details = cls_Get_Doctor_BasicInformation_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDBIfDID_1034() { DoctorID = Parameter.Order.doctor_id }, securityTicket).Result; hec_drug_order.Clearing_Doctor_RefID = Parameter.Order.doctor_id; hec_drug_order.ClearingDoctor_DisplayName = GenericUtils.GetDoctorName(authorizing_doctor_details); hec_drug_order.Save(Connection, Transaction); } var shipping_address = new ORM_CMN_UniversalContactDetail(); shipping_address.Modification_Timestamp = DateTime.Now; shipping_address.Tenant_RefID = securityTicket.TenantID; shipping_address.Street_Name = Parameter.Order.street; shipping_address.Street_Number = Parameter.Order.number; shipping_address.ZIP = Parameter.Order.zip; shipping_address.Town = Parameter.Order.city; shipping_address.CompanyName_Line1 = Parameter.Order.receiver; shipping_address.Save(Connection, Transaction); var ord_drug_order_header = new ORM_ORD_PRC_ProcurementOrder_Header(); ord_drug_order_header.Load(Connection, Transaction, ord_drug_order.ProcurementOrder_Header_RefID); ord_drug_order_header.ShippingAddressUCD_RefID = shipping_address.CMN_UniversalContactDetailID; ord_drug_order_header.Modification_Timestamp = DateTime.Now; ord_drug_order_header.ProcurementOrder_Supplier_RefID = pharmacy != null ? pharmacy.CompanyBPID : Guid.Empty; ord_drug_order_header.Save(Connection, Transaction); ordersForReport.Add(new ReportOrderItem { Name = drugName, PositionComment = position_comment, Patient = new ReportOrderPatientInformation { PatientID = hec_drug_order.OrderedFor_Patient_RefID, FeeWaived = hec_drug_order.IsOrderForPatient_PatientFeeWaived } }); } #region Send e-mail if urgent order var defaultshippingDateOffset = cls_Get_Practice_PropertyValue_for_PropertyName_and_PracticeID.Invoke(Connection, Transaction, new P_DO_GPPVfPNaPID_0916() { PracticeID = data.PracticeID, PropertyName = "Default Shipping Date Offset" }, securityTicket).Result.NumericValue; var company_settings = cls_Get_Company_Settings.Invoke(Connection, Transaction, securityTicket).Result; var ordernum = company_settings.ImmediateOrderInterval; if (delivery_date > DateTime.Now.AddDays(-defaultshippingDateOffset).AddMinutes(ordernum)) { try { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); var mailToL = new List <String>(); var accountMails = cls_Get_All_Account_LoginEmails_Who_Receive_Notifications.Invoke(Connection, Transaction, securityTicket).Result.ToList(); foreach (var mail in accountMails) { mailToL.Add(mail.LoginEmail); } var mailToFromCompanySettings = company_settings.Email; mailToL.Add(mailToFromCompanySettings); var appName = WebConfigurationManager.AppSettings["mmAppUrl"]; var prefix = HttpContext.Current.Request.Url.AbsoluteUri.Contains("https") ? "https://" : "http://"; var imageUrl = HttpContext.Current.Request.Url.AbsoluteUri.Substring(0, HttpContext.Current.Request.Url.AbsoluteUri.IndexOf("api")) + "Content/images/logo.png"; var email_template = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/UrgentOrderEmailTemplate.html")); var subjectsJson = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/EmailSubjects.json")); dynamic subjects = JsonConvert.DeserializeObject(subjectsJson); var subjectMail = subjects["UrgentOrderSubject"].ToString(); email_template = EmailTemplater.SetTemplateData(email_template, new { orders = drug_names.Select(t => new { order_date_time_from = delivery_date_from.ToString("dd.MM.yyyy HH:mm"), order_date_time_to = delivery_date_to.ToString("HH:mm"), name = data.AccountInformation.name, drug_name = t }), mmapp_dashboard_url = prefix + HttpContext.Current.Request.Url.Authority + "/" + appName, medios_connect_logo_url = imageUrl }, "{{", "}}"); var mailFrom = WebConfigurationManager.AppSettings["mailFrom"]; var mailsDistinct = mailToL.Distinct().ToList(); foreach (var mailTo in mailsDistinct) { EmailNotificationSenderUtil.SendEmail(mailFrom, mailTo, subjectMail, email_template); } } catch (Exception ex) { LogUtils.Logger.LogDocAppInfo(new LogUtils.LogEntry(System.Reflection.MethodInfo.GetCurrentMethod(), ex, null, "Urgent order: Email sending failed."), "EmailExceptions"); } } #endregion SEND MAIL URGENT ORDER #region Update case order number var case_order_number = cls_Save_Case_Order_Number_for_OrderIDs.Invoke(Connection, Transaction, new P_CAS_SCONfOID_1442 { order_ids = Parameter.Order.order_ids.ToArray(), practice_bsnr = practice_info.BSNR }, securityTicket).Result; #endregion #region Create PDF report if (isNewPharmacy) { #region patient information var patients_info = cls_Get_Patient_Details_for_PatientIDs.Invoke(Connection, Transaction, new P_PA_GPDfPIDs_1354 { PatientIDs = ordersForReport.Select(x => x.Patient).Select(x => x.PatientID).Distinct().ToArray() }, securityTicket).Result; foreach (var order in ordersForReport) { var patient_info = patients_info.Single(x => x.PatientID == order.Patient.PatientID); order.Patient.FirstName = patient_info.FirstName; order.Patient.LastName = patient_info.LastName; order.Patient.BirthDate = patient_info.BirthDate; order.Patient.Hip = patient_info.HipName; order.Patient.InsuranceStatus = patient_info.InsuranceStatus; } #endregion #region Repack data for report var orderPdfReport = new OrderPdfReportGenerator(); var reportOrderInfo = new ReportOrderInformation { DeliveryDate = delivery_date, DeliveryTimeFrom = delivery_date_from, DeliveryTimeTo = delivery_date_to, CreationDate = DateTime.Now, OrderNumber = case_order_number, HeaderComment = Parameter.Order.comment ?? String.Empty, OrderedDrugs = ordersForReport, }; var reportPractice = new OrderParticipantInformation { City = practice_info.City, Email = practice_info.Contact_Email, Name = practice_info.Name, Number = practice_info.Street_Number, Phone = practice_info.Contact_Telephone, Street = practice_info.Street_Name, Zip = practice_info.ZIP }; var reportPharmacy = new OrderParticipantInformation { Name = pharmacy.PharmacyName, Street = pharmacy.Street_Name, Number = pharmacy.Street_Number, Zip = pharmacy.ZIP, City = pharmacy.Town, Email = pharmacy.Contact_Email, Phone = pharmacy.Contact_Telephone }; #endregion var bytes = orderPdfReport.Generate( new Model.OrderReportParameters { Orders = reportOrderInfo, Pharmacy = reportPharmacy, Practice = reportPractice }, HttpContext.Current.Server.MapPath("~/ReportContent/SubmitOrderPdfReportContent.xml") ); var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); var fileName = String.Format("{0}-{1}-{2}.pdf", "Submited Orders", pharmacy.PharmacyName, DateTime.Now.ToString("dd.MM.yyyy HH:mm")); var documentID = documentProvider.UploadDocument(bytes, fileName, securityTicket.SessionTicket, HttpContext.Current.Request.UserHostAddress); var reportURL = documentProvider.GenerateDownloadLink(documentID, securityTicket.SessionTicket, true, true); var parameterDoc = new P_OR_UOPDFR_1049(); parameterDoc.DocumentID = documentID; parameterDoc.Mime = UtilMethods.GetMimeType(fileName); parameterDoc.DocumentName = fileName; parameterDoc.CaseOrderNumber = case_order_number; parameterDoc.OrderIDs = Parameter.Order.order_ids.ToArray(); cls_Upload_Order_PDF_Report.Invoke(Connection, Transaction, parameterDoc, securityTicket); returnValue.Result = reportURL; } #endregion return(returnValue); #endregion UserCode }
protected static FR_String Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SCONfOID_1442 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_String(); //Put your code here var caseOrderNumber = 00001; var lastCaseOrderNumber = cls_Get_Last_Case_Order_Number_for_PracticeBSNR.Invoke(Connection, Transaction, new P_CAS_GLCONfPBSNR_1534 { PracticeBSNR = String.Format("%{0}-%", Parameter.practice_bsnr) }, securityTicket).Result; if (lastCaseOrderNumber != null) { caseOrderNumber = lastCaseOrderNumber.CaseOrderNumber + 1; } var newCaseNumber = String.Format("{0}-{1}", Parameter.practice_bsnr, caseOrderNumber.ToString("D5")); var cases = cls_Get_CaseIDs_for_OrderIDs.Invoke(Connection, Transaction, new P_CAS_GCIDsfOIDs_1508 { OrderIDs = Parameter.order_ids }, securityTicket).Result; foreach (var cas in cases) { var case_universal_property = ORM_HEC_CAS_Case_UniversalProperty.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalProperty.Query() { GlobalPropertyMatchingID = ECaseProperty.CaseOrderNumber.Value(), Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); if (case_universal_property == null) { case_universal_property = new ORM_HEC_CAS_Case_UniversalProperty(); case_universal_property.Tenant_RefID = securityTicket.TenantID; case_universal_property.PropertyName = "Case order number"; case_universal_property.IsValue_Boolean = true; case_universal_property.GlobalPropertyMatchingID = ECaseProperty.CaseOrderNumber.Value(); case_universal_property.Modification_Timestamp = DateTime.Now; case_universal_property.Save(Connection, Transaction); } #region parameter value var case_universal_property_value = ORM_HEC_CAS_Case_UniversalPropertyValue.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query() { HEC_CAS_Case_RefID = cas.CaseID, HEC_CAS_Case_UniversalProperty_RefID = case_universal_property.HEC_CAS_Case_UniversalPropertyID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); if (case_universal_property_value == null) { case_universal_property_value = new ORM_HEC_CAS_Case_UniversalPropertyValue(); case_universal_property_value.Tenant_RefID = securityTicket.TenantID; case_universal_property_value.HEC_CAS_Case_RefID = cas.CaseID; case_universal_property_value.HEC_CAS_Case_UniversalProperty_RefID = case_universal_property.HEC_CAS_Case_UniversalPropertyID; } case_universal_property_value.Modification_Timestamp = DateTime.Now; case_universal_property_value.Value_String = newCaseNumber; case_universal_property_value.Save(Connection, Transaction); } #endregion returnValue.Result = newCaseNumber; return(returnValue); #endregion UserCode }