protected static FR_Bool Execute(DbConnection Connection, DbTransaction Transaction, P_L5PO_UPOS_1546 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Bool();

            //Put your code here
            var status = ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Status.Query()
            {
                Tenant_RefID             = securityTicket.TenantID,
                GlobalPropertyMatchingID = Parameter.Status,
                IsDeleted = false
            }).SingleOrDefault();

            if (status != null)
            {
                var procurementOrderHeader = new ORM_ORD_PRC_ProcurementOrder_Header();
                procurementOrderHeader.Load(Connection, Parameter.ProcurementOrderHeaderID);

                //if procurement order header with given ID doesn't exist, don't make changes in database
                if (procurementOrderHeader != null)
                {
                    ORM_ORD_PRC_ProcurementOrder_StatusHistory statusHistory = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                    statusHistory.Tenant_RefID = securityTicket.TenantID;
                    statusHistory.ORD_PRC_ProcurementOrder_StatusHistoryID = Guid.NewGuid();
                    statusHistory.ProcurementOrder_Header_RefID            = Parameter.ProcurementOrderHeaderID;
                    statusHistory.ProcurementOrder_Status_RefID            = status.ORD_PRC_ProcurementOrder_StatusID;
                    statusHistory.Save(Connection, Transaction);

                    procurementOrderHeader.Current_ProcurementOrderStatus_RefID = status.ORD_PRC_ProcurementOrder_StatusID;
                    procurementOrderHeader.Save(Connection, Transaction);
                }
            }


            return(returnValue);

            #endregion UserCode
        }
Esempio n. 2
0
        protected static FR_CAS_CDO_1250 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CDO_1250 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_CAS_CDO_1250();
            returnValue.Result = new CAS_CDO_1250();
            //Put your code here

            var treatment_planned_action_id = cls_Get_Treatment_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GTPAfCID_0946()
            {
                CaseID = Parameter.case_id
            }, securityTicket).Result;

            var drug_order_status_latestQ = new ORM_ORD_PRC_ProcurementOrder_Status.Query();
            drug_order_status_latestQ.ORD_PRC_ProcurementOrder_StatusID = Parameter.ord_drug_order_header.Current_ProcurementOrderStatus_RefID;
            drug_order_status_latestQ.Tenant_RefID = securityTicket.TenantID;
            drug_order_status_latestQ.IsDeleted    = false;

            var drug_order_status_latest = ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, drug_order_status_latestQ).SingleOrDefault();

            if (drug_order_status_latest.Status_Code == 6)
            {
                var previous_status = cls_Get_Previous_Order_Status_for_HeaderID.Invoke(Connection, Transaction, new P_OR_GPOSfHID_1347()
                {
                    HeaderID = Parameter.ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID
                }, securityTicket).Result;
                returnValue.Result.previous_status = previous_status != null ? "MO" + previous_status.OrderStatus : "";
            }
            else
            {
                returnValue.Result.previous_status = "MO" + drug_order_status_latest.Status_Code;
            }

            var cancellation_code   = drug_order_status_latest.Status_Code == 0 ? 9 : 6;
            var cancellation_status = String.Format("MO{0}", cancellation_code);

            var new_status = new ORM_ORD_PRC_ProcurementOrder_Status();
            new_status.Status_Code = cancellation_code;
            new_status.GlobalPropertyMatchingID = String.Format("mm.doc.connect.drug.order.status.{0}", cancellation_status.ToLower());
            new_status.Tenant_RefID             = securityTicket.TenantID;
            new_status.Modification_Timestamp   = DateTime.Now;

            Parameter.ord_drug_order_header.Current_ProcurementOrderStatus_RefID = new_status.ORD_PRC_ProcurementOrder_StatusID;
            Parameter.ord_drug_order_header.Save(Connection, Transaction);

            new_status.Status_Name = new Dict(ORM_ORD_PRC_ProcurementOrder_Status.TableName);

            foreach (var lang in Parameter.all_languagesL)
            {
                new_status.Status_Name.AddEntry(lang.CMN_LanguageID, cancellation_status);
            }

            new_status.Save(Connection, Transaction);

            var new_status_history_entry = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
            new_status_history_entry.IsStatus_Canceled                     = true;
            new_status_history_entry.Tenant_RefID                          = securityTicket.TenantID;
            new_status_history_entry.Modification_Timestamp                = DateTime.Now;
            new_status_history_entry.ProcurementOrder_Header_RefID         = Parameter.ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;
            new_status_history_entry.ProcurementOrder_Status_RefID         = new_status.ORD_PRC_ProcurementOrder_StatusID;
            new_status_history_entry.TriggeredAt_Date                      = DateTime.Now;
            new_status_history_entry.TriggeredBy_BusinessParticipant_RefID = Parameter.created_by_bpt;

            new_status_history_entry.Save(Connection, Transaction);

            var ord_drug_order_position_history_entry = new ORM_ORD_PRC_ProcurementOrder_Position_History();
            ord_drug_order_position_history_entry.Tenant_RefID = securityTicket.TenantID;
            ord_drug_order_position_history_entry.ProcurementOrder_Position_RefID = Parameter.procurement_order_position_id;
            ord_drug_order_position_history_entry.IsRemoved = true;
            ord_drug_order_position_history_entry.Modification_Timestamp = DateTime.Now;

            ord_drug_order_position_history_entry.Save(Connection, Transaction);

            var practice_invoice_universal_property = ORM_HEC_CAS_Case_UniversalProperty.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalProperty.Query()
            {
                GlobalPropertyMatchingID = "mm.doc.connect.case.practice.invoice",
                Tenant_RefID             = securityTicket.TenantID,
                IsDeleted = false
            }).SingleOrDefault();

            var practice_invoice_universal_property_value = ORM_HEC_CAS_Case_UniversalPropertyValue.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query()
            {
                HEC_CAS_Case_UniversalProperty_RefID = practice_invoice_universal_property.HEC_CAS_Case_UniversalPropertyID,
                HEC_CAS_Case_RefID = Parameter.case_id,
                Tenant_RefID       = securityTicket.TenantID,
                IsDeleted          = false
            }).SingleOrDefault();

            if (practice_invoice_universal_property_value != null)
            {
                practice_invoice_universal_property_value.IsDeleted = true;
                practice_invoice_universal_property_value.Modification_Timestamp = DateTime.Now;

                practice_invoice_universal_property_value.Save(Connection, Transaction);
            }

            return(returnValue);

            #endregion UserCode
        }
Esempio n. 3
0
        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
        }
Esempio n. 4
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_OR_COS_0840 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            List <Case_Model>             cases             = new List <Case_Model>();
            List <PatientDetailViewModel> patientDetailList = new List <PatientDetailViewModel>();
            List <Order_Model>            OrderModelL       = new List <Order_Model>();
            //Put your code here
            foreach (var ParameterInstance in Parameter.ParameterArray)
            {
                var procurmentHeader = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Header.Query()
                {
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID,
                    ORD_PRC_ProcurementOrder_HeaderID = ParameterInstance.Order_ID
                }).Single();


                var newOrderStatus = new ORM_ORD_PRC_ProcurementOrder_Status();
                newOrderStatus.Tenant_RefID           = securityTicket.TenantID;
                newOrderStatus.Status_Code            = ParameterInstance.Status_To;
                newOrderStatus.Modification_Timestamp = DateTime.Now;
                newOrderStatus.Save(Connection, Transaction);

                var newOrderStatusHistory = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                newOrderStatusHistory.Tenant_RefID = securityTicket.TenantID;
                newOrderStatusHistory.ProcurementOrder_Status_RefID = newOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
                newOrderStatusHistory.IsStatus_RejectedBySupplier   = true;
                newOrderStatusHistory.ProcurementOrder_Header_RefID = procurmentHeader.ORD_PRC_ProcurementOrder_HeaderID;
                newOrderStatusHistory.Save(Connection, Transaction);

                procurmentHeader.Current_ProcurementOrderStatus_RefID = newOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
                procurmentHeader.Save(Connection, Transaction);

                #region Update Case Elastic
                var caseForUpdate = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435()
                {
                    CaseID = ParameterInstance.CaseID
                }, securityTicket).Result;
                var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124()
                {
                    PatientID = caseForUpdate.patient_id
                }, securityTicket).Result;
                var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1608()
                {
                    DiagnoseID = caseForUpdate.diagnose_id
                }, securityTicket).Result;
                var drug_details = cls_Get_Drug_Details_for_DrugID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1614()
                {
                    DrugID = caseForUpdate.drug_id
                }, securityTicket).Result;
                var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
                {
                    DoctorID = caseForUpdate.op_doctor_id
                }, securityTicket).Result.SingleOrDefault();
                var case_status = cls_Check_Case_Status.Invoke(Connection, Transaction, new P_CAS_CCS_1639()
                {
                    CaseID = ParameterInstance.CaseID
                }, securityTicket).Result;
                if (case_status == null)
                {
                    var case_model_elastic = Get_Cases.GetCaseforCaseID(caseForUpdate.case_id.ToString(), securityTicket);
                    if (case_model_elastic != null)
                    {
                        case_model_elastic.status_drug_order                   = ParameterInstance.Status_To_Str;
                        case_model_elastic.order_modification_timestamp        = caseForUpdate.order_modification_timestamp;
                        case_model_elastic.order_modification_timestamp_string = caseForUpdate.order_modification_timestamp.ToString("dd.MM.yyyy");

                        cases.Add(case_model_elastic);
                    }
                }
                #endregion

                var orderM = Get_Orders.GetOrderforOrderID(procurmentHeader.ORD_PRC_ProcurementOrder_HeaderID.ToString(), securityTicket);
                if (orderM != null)
                {
                    orderM.status_drug_order                   = ParameterInstance.Status_To_Str;
                    orderM.order_modification_timestamp        = DateTime.Now;
                    orderM.order_modification_timestamp_string = DateTime.Now.ToString("dd.MM.yyyy");

                    OrderModelL.Add(orderM);

                    var patientDetalTreatmentWithOrder = Retrieve_Patients.Get_PatientDetaiForIDandOrderID(orderM.id, securityTicket).Where(i => i.detail_type == "op").SingleOrDefault();


                    if (patientDetalTreatmentWithOrder == null)
                    {
                        PatientDetailViewModel patient_detail = new PatientDetailViewModel();
                        patient_detail.case_id                = orderM.case_id;
                        patient_detail.date                   = orderM.treatment_date;
                        patient_detail.date_string            = patient_detail.date.ToString("dd.MM.");
                        patient_detail.detail_type            = "order";
                        patient_detail.diagnose_or_medication = orderM.drug;
                        patient_detail.practice_id            = orderM.practice_id;
                        patient_detail.id           = orderM.id;
                        patient_detail.order_id     = orderM.id;
                        patient_detail.case_id      = orderM.case_id;
                        patient_detail.order_status = orderM.status_drug_order;
                        patient_detail.patient_id   = patient_details.id.ToString();
                        patient_detail.drug_id      = orderM.drug_id;

                        patientDetailList.Add(patient_detail);
                    }
                    else
                    {
                        patientDetalTreatmentWithOrder.date         = orderM.treatment_date;
                        patientDetalTreatmentWithOrder.date_string  = patientDetalTreatmentWithOrder.date.ToString("dd.MM.");
                        patientDetalTreatmentWithOrder.case_id      = orderM.case_id;
                        patientDetalTreatmentWithOrder.order_id     = orderM.id;
                        patientDetalTreatmentWithOrder.practice_id  = orderM.practice_id;
                        patientDetalTreatmentWithOrder.drug         = orderM.drug;
                        patientDetalTreatmentWithOrder.drug_id      = orderM.drug_id;
                        patientDetalTreatmentWithOrder.order_status = orderM.status_drug_order;
                        patientDetalTreatmentWithOrder.patient_id   = patient_details.id.ToString();

                        patientDetailList.Add(patientDetalTreatmentWithOrder);
                    }
                }
            }

            if (patientDetailList.Count != 0)
            {
                Add_New_Patient.ImportPatientDetailsToElastic(patientDetailList, securityTicket.TenantID.ToString());
            }

            if (OrderModelL.Count != 0)
            {
                Add_New_Order.Import_Order_Data_to_ElasticDB(OrderModelL, securityTicket.TenantID.ToString());
            }

            if (cases.Count != 0)
            {
                Add_New_Case.Import_Case_Data_to_ElasticDB(cases, securityTicket.TenantID.ToString());
            }

            return(returnValue);

            #endregion UserCode
        }
Esempio n. 5
0
        protected static FR_OR_CAOS_1424 Execute(DbConnection Connection, DbTransaction Transaction, P_OR_CAOS_1424 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_OR_CAOS_1424();
            returnValue.Result = new OR_CAOS_1424();
            //Put your code here
            var statuses = new List <string>();
            statuses.Add(Parameter.Status_From.ToString());

            var ordersForChange = cls_Get_all_Orders_with_Status.Invoke(Connection, Transaction, new P_OR_GOwS_1428()
            {
                Status = statuses.ToArray()
            }, securityTicket).Result;

            #region Create Orders Report
            if (Parameter.Status_To_Str == "MO2")
            {
                returnValue.Result.ReportURL = cls_Create_Orders_Report.Invoke(Connection, Transaction, new P_OR_COR_1437 {
                    GroupByPharmacy = true, Statuses = new int[] { 1, 6 }
                }, securityTicket).Result;

                //Check with Nemanja what this code shoud to do, it is same as code in cls_Change_Order_Status and it was in cls_Create_Orders_Report
                #region change status
                var statusDeleted          = 6;
                var ordersForChangeDeleted = cls_Get_all_Orders_with_Status.Invoke(Connection, Transaction, new P_OR_GOwS_1428()
                {
                    Status = new string[] { statusDeleted.ToString() }
                }, securityTicket).Result;

                foreach (var order in ordersForChangeDeleted)
                {
                    var procurmentHeader = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Header.Query()
                    {
                        IsDeleted    = false,
                        Tenant_RefID = securityTicket.TenantID,
                        ORD_PRC_ProcurementOrder_HeaderID = order.OrderID
                    }).Single();

                    var newOrderStatus = new ORM_ORD_PRC_ProcurementOrder_Status();
                    newOrderStatus.Tenant_RefID = securityTicket.TenantID;
                    newOrderStatus.Status_Code  = 7;

                    newOrderStatus.Save(Connection, Transaction);

                    var newOrderStatusHistory = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                    newOrderStatusHistory.Tenant_RefID = securityTicket.TenantID;
                    newOrderStatusHistory.ProcurementOrder_Status_RefID = newOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
                    newOrderStatusHistory.IsStatus_RejectedBySupplier   = true;
                    newOrderStatusHistory.ProcurementOrder_Header_RefID = procurmentHeader.ORD_PRC_ProcurementOrder_HeaderID;

                    newOrderStatusHistory.Save(Connection, Transaction);

                    procurmentHeader.Current_ProcurementOrderStatus_RefID = newOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
                    procurmentHeader.Save(Connection, Transaction);
                }
                #endregion
            }
            #endregion

            if (ordersForChange.Any())
            {
                P_OR_COS_0840 param = new P_OR_COS_0840()
                {
                    ParameterArray = ordersForChange.Select(order =>
                    {
                        P_OR_COS_0840a parameter = new P_OR_COS_0840a();
                        parameter.CaseID         = order.CaseID;
                        parameter.Order_ID       = order.OrderID;
                        parameter.Status_To      = Parameter.Status_To;
                        parameter.Status_To_Str  = Parameter.Status_To_Str;

                        return(parameter);
                    }).ToArray()
                };

                var data = cls_Change_Order_Status.Invoke(Connection, Transaction, param, securityTicket);
            }

            returnValue.Result.Orders = ordersForChange;
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 6
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6TR_SaOQTwPO_1620 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here

            P_L6TR_SQT_1308 param = new P_L6TR_SQT_1308();
            param = Parameter.QuickTreatment;

            Guid TreatmentID = cls_Save_Quick_Treatment.Invoke(Connection, Transaction, param, securityTicket).Result;

            #region Save Order

            var status_query = new ORM_ORD_PRC_ProcurementOrder_Status.Query();
            status_query.IsDeleted                = false;
            status_query.Tenant_RefID             = securityTicket.TenantID;
            status_query.GlobalPropertyMatchingID = STLD_ORD_CUO_CustomerOrder_Status.Ordered.ToString();
            var notOrderedstatus = ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, status_query).First();

            var prod_param = new P_L6PD_GPaPOSfT_1702();
            prod_param.TreatmentID = TreatmentID;
            var products = cls_Get_Product_and_ProcurementOrderStatuses_for_TreatmentID.Invoke(Connection, Transaction, prod_param, securityTicket).Result;

            var notOrdered_Products = products.Where(i => i.BoundTo_ProcurementOrderPosition_RefID == Guid.Empty);

            if (notOrdered_Products.Count() == 0)
            {
                return(returnValue);
            }

            #region Save Header and Status

            var header_query = new ORM_ORD_PRC_ProcurementOrder_Header.Query();
            header_query.IsDeleted    = false;
            header_query.Tenant_RefID = securityTicket.TenantID;
            var headers = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, header_query);

            var count = 0;
            if (headers != null)
            {
                count = headers.Count();
            }

            String ordernumber = "000000000000" + (count + 1).ToString();
            ordernumber = ordernumber.Substring(ordernumber.Length - 12);

            var header = new ORM_ORD_PRC_ProcurementOrder_Header();
            header.ORD_PRC_ProcurementOrder_HeaderID    = Guid.NewGuid();
            header.Current_ProcurementOrderStatus_RefID = notOrderedstatus.ORD_PRC_ProcurementOrder_StatusID;
            header.ProcurementOrder_Number = ordernumber;
            header.ProcurementOrder_Date   = DateTime.Now;
            header.Creation_Timestamp      = DateTime.Now;
            header.Tenant_RefID            = securityTicket.TenantID;
            header.Save(Connection, Transaction);

            var history = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
            history.ORD_PRC_ProcurementOrder_StatusHistoryID = Guid.NewGuid();
            history.ProcurementOrder_Header_RefID            = header.ORD_PRC_ProcurementOrder_HeaderID;
            history.ProcurementOrder_Status_RefID            = notOrderedstatus.ORD_PRC_ProcurementOrder_StatusID;
            history.StatusHistoryComment = "";
            history.Creation_Timestamp   = DateTime.Now;
            history.Tenant_RefID         = securityTicket.TenantID;
            history.Save(Connection, Transaction);


            #endregion

            int cnt = 0;

            foreach (var product in notOrdered_Products)
            {
                cnt++;

                var position = new ORM_ORD_PRC_ProcurementOrder_Position();
                position.ORD_PRC_ProcurementOrder_PositionID = Guid.NewGuid();
                position.ProcurementOrder_Header_RefID       = header.ORD_PRC_ProcurementOrder_HeaderID;
                position.Position_OrdinalNumber           = cnt;
                position.Position_Quantity                = product.Quantity;
                position.Position_ValuePerUnit            = 1;
                position.Position_ValueTotal              = decimal.Parse(product.Quantity.ToString());
                position.CMN_PRO_Product_Variant_RefID    = Guid.Empty;
                position.CMN_PRO_Product_RefID            = product.CMN_PRO_ProductID;
                position.CMN_PRO_Product_Release_RefID    = Guid.Empty;
                position.Position_RequestedDateOfDelivery = product.ExpectedDateOfDelivery;
                position.Creation_Timestamp               = DateTime.Now;
                position.Tenant_RefID = securityTicket.TenantID;
                position.Save(Connection, Transaction);


                var item = new ORM_HEC_Patient_Treatment_RequiredProduct();
                item.Load(Connection, Transaction, product.HEC_Patient_Treatment_RequiredProductID);
                item.BoundTo_CustomerOrderPosition_RefID = position.ORD_PRC_ProcurementOrder_PositionID;
                item.Save(Connection, Transaction);
            }

            #endregion

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5SR_SRH_1545 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            Guid HeaderID = Parameter.ReceiptHeaderID;

            var businessParticipant = CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction,
                                                                                               new CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query()
            {
                IfTenant_Tenant_RefID = securityTicket.TenantID,
                IsDeleted             = false
            }).Single();

            bool isNew = HeaderID == Guid.Empty;
            var  expectedDeliveryHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header();
            var  receiptHeader          = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header();
            var  procurementHeader      = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header();
            var  receiptToProcurement   = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader();

            #region Receipt Header
            if (isNew)
            {
                var incrNumberParam = new P_L2NR_GaIINfUA_1454()
                {
                    GlobalStaticMatchingID = EnumUtils.GetEnumDescription(ENumberRangeUsageAreaType.StockReceiptNumber)
                };
                var receiptNumber = cls_Get_and_Increase_IncreasingNumber_for_UsageArea.Invoke(Connection, Transaction, incrNumberParam, securityTicket).Result.Current_IncreasingNumber;

                receiptHeader = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header();
                receiptHeader.ReceiptNumber            = receiptNumber;
                receiptHeader.LOG_RCP_Receipt_HeaderID = Guid.NewGuid();
                receiptHeader.Creation_Timestamp       = DateTime.Now;
                receiptHeader.Tenant_RefID             = securityTicket.TenantID;
                receiptHeader.ReceiptHeaderITL         = receiptHeader.LOG_RCP_Receipt_HeaderID.ToString();
                receiptHeader.IsTakenIntoStock         = false;
            }
            else
            {
                var query = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header.Query
                {
                    LOG_RCP_Receipt_HeaderID = Parameter.ReceiptHeaderID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                };
                receiptHeader = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header.Query.Search(Connection, Transaction, query).Single();
            }
            HeaderID = receiptHeader.LOG_RCP_Receipt_HeaderID;
            receiptHeader.ProvidingSupplier_RefID = Parameter.SupplierID;
            receiptHeader.Save(Connection, Transaction);

            #endregion Receipt Header

            #region Expected Delivery Header
            if (isNew)
            {
                var incrNumberParam = new P_L2NR_GaIINfUA_1454()
                {
                    GlobalStaticMatchingID = EnumUtils.GetEnumDescription(ENumberRangeUsageAreaType.ExpectedDeliveryNumber)
                };
                var expectedDeliveryNumber = cls_Get_and_Increase_IncreasingNumber_for_UsageArea.Invoke(Connection, Transaction, incrNumberParam, securityTicket).Result.Current_IncreasingNumber;

                expectedDeliveryHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header
                {
                    ORD_PRC_ExpectedDelivery_HeaderID = Guid.NewGuid(),
                    Tenant_RefID           = securityTicket.TenantID,
                    Creation_Timestamp     = DateTime.Now,
                    ExpectedDeliveryNumber = expectedDeliveryNumber,
                    IsDeliveryOpen         = true,
                    IsDeliveryClosed       = false,
                };
                expectedDeliveryHeader.ExpectedDeliveryHeaderITL = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID.ToString();

                // save receipt header with new expected delivery header
                receiptHeader.ExpectedDeliveryHeader_RefID = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID;
                receiptHeader.Save(Connection, Transaction);
            }
            else
            {
                var query = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header.Query
                {
                    ORD_PRC_ExpectedDelivery_HeaderID = receiptHeader.ExpectedDeliveryHeader_RefID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                };
                expectedDeliveryHeader = CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header.Query.Search(Connection, Transaction, query).Single();
            }
            if (Parameter.LatestDeliveryDate != null)
            {
                expectedDeliveryHeader.ExpectedDeliveryDate = Parameter.LatestDeliveryDate.Value;
            }
            expectedDeliveryHeader.Save(Connection, Transaction);

            #endregion Expected Delivery Header

            #region Procurement Order

            if (isNew)
            {
                procurementHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header();
                procurementHeader.ORD_PRC_ProcurementOrder_HeaderID = Guid.NewGuid();
                procurementHeader.Creation_Timestamp = DateTime.Now;
                procurementHeader.Tenant_RefID       = securityTicket.TenantID;
                procurementHeader.CreatedBy_BusinessParticipant_RefID = businessParticipant.CMN_BPT_BusinessParticipantID;
                procurementHeader.IsCreatedForExpectedDelivery        = true;
                procurementHeader.ProcurementOrder_Currency_RefID     = cls_Get_DefaultCurrency_for_Tenant.Invoke(Connection, Transaction, securityTicket).Result.CMN_CurrencyID;

                receiptToProcurement = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader();
                receiptToProcurement.AssignmentID                          = Guid.NewGuid();
                receiptToProcurement.Creation_Timestamp                    = DateTime.Now;
                receiptToProcurement.Tenant_RefID                          = securityTicket.TenantID;
                receiptToProcurement.LOG_RCP_Receipt_Header_RefID          = receiptHeader.LOG_RCP_Receipt_HeaderID;
                receiptToProcurement.ORD_PRO_ProcurementOrder_Header_RefID = procurementHeader.ORD_PRC_ProcurementOrder_HeaderID;
                receiptToProcurement.Save(Connection, Transaction);
            }
            else
            {
                var query = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query
                {
                    LOG_RCP_Receipt_Header_RefID = HeaderID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                };
                receiptToProcurement = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query.Search(Connection, Transaction, query).Single();

                var query2 = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header.Query
                {
                    ORD_PRC_ProcurementOrder_HeaderID = receiptToProcurement.ORD_PRO_ProcurementOrder_Header_RefID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                };
                procurementHeader = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, query2).Single();
            }

            #region get status for procurement order

            var newProcurementOrderStatusID = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction,
                                                                                                           new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query()
            {
                GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(EProcurementStatus.Ordered),
                Tenant_RefID             = securityTicket.TenantID,
                IsDeleted = false
            }).Single().ORD_PRC_ProcurementOrder_StatusID;
            #endregion

            procurementHeader.Current_ProcurementOrderStatus_RefID = newProcurementOrderStatusID;
            procurementHeader.ProcurementOrder_Supplier_RefID      = Parameter.SupplierID;
            procurementHeader.Save(Connection, Transaction);

            if (!string.IsNullOrEmpty(Parameter.ProcurementOrderStatus))
            {
                var queryStatus = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query()
                {
                    GlobalPropertyMatchingID = Parameter.ProcurementOrderStatus,
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                };
                var status = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, queryStatus).Single();

                var statusHistory = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                statusHistory.ORD_PRC_ProcurementOrder_StatusHistoryID = Guid.NewGuid();
                statusHistory.ProcurementOrder_Header_RefID            = procurementHeader.ORD_PRC_ProcurementOrder_HeaderID;
                statusHistory.ProcurementOrder_Status_RefID            = status.ORD_PRC_ProcurementOrder_StatusID;
                statusHistory.IsDeleted          = false;
                statusHistory.Tenant_RefID       = securityTicket.TenantID;
                statusHistory.Creation_Timestamp = DateTime.Now;

                statusHistory.Save(Connection, Transaction);
            }

            #endregion Procurement Order

            returnValue.Result = HeaderID;
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 8
0
        protected static FR_CAS_CDO_1202 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CDO_1202 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_CAS_CDO_1202();
            returnValue.Result = new CAS_CDO_1202();
            //Put your code here
            var statusCodePrefix = "MO";
            var statusCode       = 0;

            var drugOrderStatus = String.Format("{0}{1}", statusCodePrefix, statusCode);

            var hec_drugQ = new ORM_HEC_Product.Query();
            hec_drugQ.Tenant_RefID  = securityTicket.TenantID;
            hec_drugQ.IsDeleted     = false;
            hec_drugQ.HEC_ProductID = Parameter.drug_id;

            var hec_drug = ORM_HEC_Product.Query.Search(Connection, Transaction, hec_drugQ).SingleOrDefault();
            if (hec_drug != null)
            {
                var ord_drug_order_header = new ORM_ORD_PRC_ProcurementOrder_Header();
                ord_drug_order_header.CreatedBy_BusinessParticipant_RefID = Parameter.created_by_bpt;
                ord_drug_order_header.ProcurementOrder_Date   = DateTime.Now;
                ord_drug_order_header.Tenant_RefID            = securityTicket.TenantID;
                ord_drug_order_header.ProcurementOrder_Number = cls_Get_Next_Order_Number.Invoke(Connection, Transaction, securityTicket).Result.order_number;

                returnValue.Result.procurement_order_header_id = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;

                var drug_order_status = new ORM_ORD_PRC_ProcurementOrder_Status();
                drug_order_status.GlobalPropertyMatchingID = String.Format("mm.doc.connect.drug.order.status.{0}", drugOrderStatus.ToLower());
                drug_order_status.Status_Code  = statusCode;
                drug_order_status.Tenant_RefID = securityTicket.TenantID;
                drug_order_status.Status_Name  = new Dict(ORM_ORD_PRC_ProcurementOrder_Status.TableName);
                foreach (var lang in Parameter.all_languagesL)
                {
                    drug_order_status.Status_Name.AddEntry(lang.CMN_LanguageID, drugOrderStatus);
                }

                drug_order_status.Save(Connection, Transaction);

                ord_drug_order_header.Current_ProcurementOrderStatus_RefID = drug_order_status.ORD_PRC_ProcurementOrder_StatusID;
                ord_drug_order_header.Save(Connection, Transaction);

                var drug_order_status_history = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                drug_order_status_history.ProcurementOrder_Header_RefID = ord_drug_order_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 = Parameter.created_by_bpt;

                drug_order_status_history.Save(Connection, Transaction);

                var ord_drug_order_position = new ORM_ORD_PRC_ProcurementOrder_Position();
                ord_drug_order_position.CMN_PRO_Product_RefID            = hec_drug.Ext_PRO_Product_RefID;
                ord_drug_order_position.Position_RequestedDateOfDelivery = Parameter.delivery_date;
                ord_drug_order_position.ProcurementOrder_Header_RefID    = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;
                ord_drug_order_position.Tenant_RefID = securityTicket.TenantID;
                ord_drug_order_position.RequestedDateOfDelivery_TimeFrame_From = Parameter.is_alternative_delivery_date ? Parameter.alternative_delivery_date_from : Parameter.treatment_date.AddHours(08).AddMinutes(00).AddSeconds(00);
                ord_drug_order_position.RequestedDateOfDelivery_TimeFrame_To   = Parameter.is_alternative_delivery_date ? Parameter.alternative_delivery_date_to : Parameter.treatment_date.AddHours(17).AddMinutes(59).AddSeconds(59);
                ord_drug_order_position.IsProFormaOrderPosition = Parameter.is_label_only;
                ord_drug_order_position.Position_Comment        = Parameter.order_comment;

                if (Parameter.is_send_invoice_to_practice)
                {
                    var id = Guid.Empty;
                    var practice_account = cls_Get_Practice_AccountID_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPAIDfPID_1351()
                    {
                        PracticeID = Parameter.practice_id
                    }, securityTicket).Result;
                    if (practice_account != null)
                    {
                        id = practice_account.accountID;
                    }

                    var invoice_practice_accountQ = new ORM_USR_Account.Query();
                    invoice_practice_accountQ.USR_AccountID = id;
                    invoice_practice_accountQ.Tenant_RefID  = securityTicket.TenantID;
                    invoice_practice_accountQ.IsDeleted     = false;

                    var invoice_practice_account = ORM_USR_Account.Query.Search(Connection, Transaction, invoice_practice_accountQ).SingleOrDefault();
                    if (invoice_practice_account != null)
                    {
                        ord_drug_order_position.BillTo_BusinessParticipant_RefID = invoice_practice_account.BusinessParticipant_RefID;
                    }
                }

                ord_drug_order_position.Save(Connection, Transaction);

                var ord_drug_order_history = new ORM_ORD_PRC_ProcurementOrder_Position_History();
                ord_drug_order_history.Creation_Timestamp     = DateTime.Now;
                ord_drug_order_history.IsCreated              = true;
                ord_drug_order_history.Modification_Timestamp = DateTime.Now;
                ord_drug_order_history.Tenant_RefID           = securityTicket.TenantID;
                ord_drug_order_history.TriggeredBy_BusinessParticipant_RefID = Parameter.created_by_bpt;
                ord_drug_order_history.ProcurementOrder_Position_RefID       = ord_drug_order_position.ORD_PRC_ProcurementOrder_PositionID;

                ord_drug_order_history.Save(Connection, Transaction);

                var hec_drug_order_position = new ORM_HEC_PRC_ProcurementOrder_Position();
                hec_drug_order_position.Creation_Timestamp = DateTime.Now;
                hec_drug_order_position.Ext_ORD_PRC_ProcurementOrder_Position_RefID = ord_drug_order_position.ORD_PRC_ProcurementOrder_PositionID;
                hec_drug_order_position.Modification_Timestamp   = DateTime.Now;
                hec_drug_order_position.OrderedFor_Patient_RefID = Parameter.patient_id;
                hec_drug_order_position.Tenant_RefID             = securityTicket.TenantID;
                hec_drug_order_position.IfProFormaOrderPosition_PrintLabelOnly = Parameter.is_label_only;
                hec_drug_order_position.IsOrderForPatient_PatientFeeWaived     = Parameter.is_patient_fee_waived;

                if (Parameter.treatment_doctor_id != Guid.Empty)
                {
                    hec_drug_order_position.OrderedFor_Doctor_RefID      = Parameter.treatment_doctor_id;
                    hec_drug_order_position.OrderedForDoctor_DisplayName = GenericUtils.GetDoctorName(Parameter.treatment_doctor_details);
                }
                else
                {
                    var doctor_id = cls_Get_DoctorID_for_AccountID.Invoke(Connection, Transaction, securityTicket).Result;
                    if (doctor_id != null)
                    {
                        var doctor = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
                        {
                            DoctorID = doctor_id.DoctorID
                        }, securityTicket).Result.SingleOrDefault();
                        if (doctor != null)
                        {
                            hec_drug_order_position.OrderedFor_Doctor_RefID      = doctor.id;
                            hec_drug_order_position.OrderedForDoctor_DisplayName = GenericUtils.GetDoctorName(doctor);
                        }
                    }
                }

                hec_drug_order_position.OrderedForPatient_DisplayName = Parameter.patient_details.patient_last_name + " " + Parameter.patient_details.patient_first_name;

                hec_drug_order_position.Save(Connection, Transaction);

                returnValue.Result.procurement_order_position_id = hec_drug_order_position.HEC_PRC_ProcurementOrder_PositionID;

                var practice_invoice_universal_property = ORM_HEC_CAS_Case_UniversalProperty.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalProperty.Query()
                {
                    GlobalPropertyMatchingID = "mm.doc.connect.case.practice.invoice",
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).SingleOrDefault();

                if (practice_invoice_universal_property == null)
                {
                    practice_invoice_universal_property = new ORM_HEC_CAS_Case_UniversalProperty();
                    practice_invoice_universal_property.Tenant_RefID             = securityTicket.TenantID;
                    practice_invoice_universal_property.PropertyName             = "Send Invoice to Practice";
                    practice_invoice_universal_property.IsValue_Boolean          = true;
                    practice_invoice_universal_property.GlobalPropertyMatchingID = "mm.doc.connect.case.practice.invoice";
                    practice_invoice_universal_property.Modification_Timestamp   = DateTime.Now;

                    practice_invoice_universal_property.Save(Connection, Transaction);
                }

                var practice_invoice_universal_property_value = ORM_HEC_CAS_Case_UniversalPropertyValue.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query()
                {
                    HEC_CAS_Case_RefID = Parameter.case_id,
                    HEC_CAS_Case_UniversalProperty_RefID = practice_invoice_universal_property.HEC_CAS_Case_UniversalPropertyID,
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).SingleOrDefault();

                if (practice_invoice_universal_property_value == null)
                {
                    practice_invoice_universal_property_value = new ORM_HEC_CAS_Case_UniversalPropertyValue();
                    practice_invoice_universal_property_value.Tenant_RefID       = securityTicket.TenantID;
                    practice_invoice_universal_property_value.HEC_CAS_Case_RefID = Parameter.case_id;
                    practice_invoice_universal_property_value.HEC_CAS_Case_UniversalProperty_RefID = practice_invoice_universal_property.HEC_CAS_Case_UniversalPropertyID;
                }
                practice_invoice_universal_property_value.Modification_Timestamp = DateTime.Now;
                practice_invoice_universal_property_value.Value_Boolean          = Parameter.is_send_invoice_to_practice;

                practice_invoice_universal_property_value.Save(Connection, Transaction);
            }

            return(returnValue);

            #endregion UserCode
        }