protected static FR_CAS_CCTS_1001 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCTS_1001 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_CAS_CCTS_1001(); returnValue.Result = new CAS_CCTS_1001(); var StatusForCase = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { IsDeleted = false, IsActive = true, Tenant_RefID = securityTicket.TenantID, BIL_BillPosition_TransmitionStatusID = Parameter.BIL_BillPosition_TransmitionStatusID }).SingleOrDefault(); if (!Parameter.AreCasesPaymentAndStatus) { if (StatusForCase != null) { returnValue.Result.Old_Status_Modification_Timestamp = StatusForCase.Modification_Timestamp; StatusForCase.Modification_Timestamp = DateTime.Now; StatusForCase.IsActive = false; StatusForCase.Save(Connection, Transaction); returnValue.Result.New_Status_Modification_Timestamp = StatusForCase.Modification_Timestamp; var NewStatusForCase = new ORM_BIL_BillPosition_TransmitionStatus(); NewStatusForCase.IsDeleted = false; NewStatusForCase.Creation_Timestamp = DateTime.Now; NewStatusForCase.Modification_Timestamp = DateTime.Now; NewStatusForCase.Tenant_RefID = securityTicket.TenantID; NewStatusForCase.IsActive = true; NewStatusForCase.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); NewStatusForCase.BillPosition_RefID = StatusForCase.BillPosition_RefID; NewStatusForCase.TransmitionCode = Convert.ToInt32(Parameter.StatusTo); NewStatusForCase.TransmittedOnDate = DateTime.Now; NewStatusForCase.TransmitionStatusKey = StatusForCase.TransmitionStatusKey; NewStatusForCase.Save(Connection, Transaction); returnValue.Result.New_BIL_BillPosition_TransmitionStatusID = NewStatusForCase.BIL_BillPosition_TransmitionStatusID; } } return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CPASfPAID_1654 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here String[] treatment_gpos = cls_Get_All_GPOS_Billing_Codes_for_GlobalPropertyMatchingID.Invoke(Connection, Transaction, new P_CAS_GAGPOSBCfGPMID_1516() { GlobalPropertyMatchingID = "mm.docconnect.gpos.catalog.operation" }, securityTicket).Result.Select(gpos => gpos.BillingCode).ToArray(); String[] aftercare_gpos = cls_Get_All_GPOS_Billing_Codes_for_GlobalPropertyMatchingID.Invoke(Connection, Transaction, new P_CAS_GAGPOSBCfGPMID_1516() { GlobalPropertyMatchingID = "mm.docconnect.gpos.catalog.nachsorge" }, securityTicket).Result.Select(gpos => gpos.BillingCode).ToArray(); var is_treatment = cls_Get_PerformedActionType_GlobalPropertyMatchingID_for_PlannedActionID.Invoke(Connection, Transaction, new P_CAS_GPAGPMIDfPAID_1652() { PlannedActionID = Parameter.planned_action_id }, securityTicket).Result.GlobalPropertyMatchingID.Equals("mm.docconect.doc.app.performed.action.treatment"); var case_id = Guid.Empty; if (is_treatment) { ORM_HEC_ACT_PlannedAction.Query planned_actionQ = new ORM_HEC_ACT_PlannedAction.Query(); planned_actionQ.HEC_ACT_PlannedActionID = Parameter.planned_action_id; planned_actionQ.Tenant_RefID = securityTicket.TenantID; planned_actionQ.IsDeleted = false; var planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, planned_actionQ).SingleOrDefault(); if (planned_action != null) { ORM_HEC_CAS_Case_RelevantPerformedAction.Query relevant_performed_actionQ = new ORM_HEC_CAS_Case_RelevantPerformedAction.Query(); relevant_performed_actionQ.PerformedAction_RefID = planned_action.IfPlannedFollowup_PreviousAction_RefID; relevant_performed_actionQ.Tenant_RefID = securityTicket.TenantID; relevant_performed_actionQ.IsDeleted = false; var relevant_performed_action = ORM_HEC_CAS_Case_RelevantPerformedAction.Query.Search(Connection, Transaction, relevant_performed_actionQ).SingleOrDefault(); if (relevant_performed_action != null) { case_id = relevant_performed_action.Case_RefID; } } } else { ORM_HEC_CAS_Case_RelevantPlannedAction.Query relevant_planned_actionQ = new ORM_HEC_CAS_Case_RelevantPlannedAction.Query(); relevant_planned_actionQ.PlannedAction_RefID = Parameter.planned_action_id; relevant_planned_actionQ.Tenant_RefID = securityTicket.TenantID; relevant_planned_actionQ.IsDeleted = false; var relevant_planned_action = ORM_HEC_CAS_Case_RelevantPlannedAction.Query.Search(Connection, Transaction, relevant_planned_actionQ).SingleOrDefault(); if (relevant_planned_action != null) { case_id = relevant_planned_action.Case_RefID; } } var case_to_submit = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435() { CaseID = case_id }, securityTicket).Result; if (case_to_submit != null) { var current_status = "FS1"; var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1357() { DiagnoseID = case_to_submit.diagnose_id }, securityTicket).Result; var drug_details = cls_Get_Drug_Details_for_DrugID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1614() { DrugID = case_to_submit.drug_id }, securityTicket).Result; var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.op_doctor_id }, securityTicket).Result.SingleOrDefault(); var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_PA_GPDfPID_1729() { PatientID = case_to_submit.patient_id }, securityTicket).Result; var aftercare_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.ac_doctor_id }, securityTicket).Result.SingleOrDefault(); var treatment_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = case_to_submit.practice_id }, securityTicket).Result.FirstOrDefault(); var aftercare_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = case_to_submit.aftercare_doctors_practice_id }, securityTicket).Result.FirstOrDefault(); var practice_defaults = cls_Get_Practice_Default_Settings_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDSfPID_0909() { PracticeID = case_to_submit.practice_id }, securityTicket).Result; if (is_treatment) { #region CHANGE TREATMENT STATUS var bill_positions = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = case_id }, securityTicket).Result; foreach (var bill_position in bill_positions) { var billing_code = cls_Get_BillingCode_for_CaseBillCodeID.Invoke(Connection, Transaction, new P_CAS_GBCfCBCID_1334() { CaseBillCodeID = bill_position.hec_case_bill_code_id }, securityTicket).Result; if (!aftercare_gpos.Contains(billing_code.BillingCode)) { ORM_BIL_BillPosition_TransmitionStatus.Query transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.BillPosition_RefID = bill_position.bill_position_id; transmition_statusQ.TransmitionStatusKey = "treatment"; transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; transmition_statusQ.IsActive = true; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null) { if (Parameter.change_status) { transmition_status.IsActive = false; transmition_status.Modification_Timestamp = Parameter.status_date; transmition_status.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus position_status = new ORM_BIL_BillPosition_TransmitionStatus(); position_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); position_status.BillPosition_RefID = bill_position.bill_position_id; position_status.Creation_Timestamp = Parameter.status_date; position_status.IsActive = true; position_status.PrimaryComment = Parameter.primary_comment; position_status.SecondaryComment = Parameter.secondary_comment; position_status.Modification_Timestamp = Parameter.status_date; position_status.TransmitionCode = Parameter.new_status; position_status.TransmittedOnDate = Parameter.status_date; position_status.Tenant_RefID = securityTicket.TenantID; position_status.TransmitionStatusKey = "treatment"; #region CREATE SNAPSHOT DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details.catalog_display_name, DiagnosisName = diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = treatment_practice_details.practice_name, IFPerformedResponsibleBPFullName = treatment_doctor_details.title + " " + treatment_doctor_details.last_name + " " + treatment_doctor_details.first_name, Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { position_status.TransmissionDataXML = snapshot.XmlFileString; } #endregion position_status.Save(Connection, Transaction); } else { current_status = "FS" + transmition_status.TransmitionCode; } } } } #endregion } else { var bill_positions = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = case_id }, securityTicket).Result; foreach (var bill_position in bill_positions) { #region CHANGE AFTERCARE STATUS var billing_code = cls_Get_BillingCode_for_CaseBillCodeID.Invoke(Connection, Transaction, new P_CAS_GBCfCBCID_1334() { CaseBillCodeID = bill_position.hec_case_bill_code_id }, securityTicket).Result; if (aftercare_gpos.Contains(billing_code.BillingCode)) { ORM_BIL_BillPosition_TransmitionStatus.Query transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.BillPosition_RefID = bill_position.bill_position_id; transmition_statusQ.TransmitionStatusKey = "aftercare"; transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; transmition_statusQ.IsActive = true; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null) { if (Parameter.change_status) { transmition_status.IsActive = false; transmition_status.Modification_Timestamp = Parameter.status_date; transmition_status.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus position_status = new ORM_BIL_BillPosition_TransmitionStatus(); position_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); position_status.BillPosition_RefID = bill_position.bill_position_id; position_status.Creation_Timestamp = Parameter.status_date; position_status.IsActive = true; position_status.PrimaryComment = Parameter.primary_comment; position_status.SecondaryComment = Parameter.secondary_comment; position_status.Modification_Timestamp = Parameter.status_date; position_status.TransmitionCode = Parameter.new_status; position_status.TransmittedOnDate = Parameter.status_date; position_status.Tenant_RefID = securityTicket.TenantID; position_status.TransmitionStatusKey = "aftercare"; #region CREATE SNAPSHOT DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details.catalog_display_name, DiagnosisName = diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = treatment_practice_details.practice_name, IFPerformedResponsibleBPFullName = treatment_doctor_details.title + " " + treatment_doctor_details.last_name + " " + treatment_doctor_details.first_name, Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { position_status.TransmissionDataXML = snapshot.XmlFileString; } #endregion position_status.Save(Connection, Transaction); } else { current_status = "FS" + transmition_status.TransmitionCode; } } } #endregion } } Submitted_Case_Model submitted_case_model_elastic = new Submitted_Case_Model(); submitted_case_model_elastic.diagnose = diagnose_details != null ? diagnose_details.diagnose_name + " (" + diagnose_details.catalog_display_name + ": " + diagnose_details.diagnose_icd_10 + ")" : ""; submitted_case_model_elastic.id = is_treatment ? case_to_submit.treatment_planned_action_id.ToString() : case_to_submit.aftercare_planned_action_id.ToString(); submitted_case_model_elastic.case_id = case_id.ToString(); submitted_case_model_elastic.localization = case_to_submit.localization; submitted_case_model_elastic.management_pauschale = practice_defaults.WaiveServiceFee ? "waived" : "deducted"; submitted_case_model_elastic.patient_birthdate = DateTime.SpecifyKind(case_to_submit.Patient_BirthDate.AddHours(2).AddMinutes(33).AddSeconds(44), DateTimeKind.Local); submitted_case_model_elastic.patient_birthdate_string = case_to_submit.Patient_BirthDate.ToString("dd.MM.yyyy"); submitted_case_model_elastic.patient_name = patient_details != null ? patient_details.patient_last_name + ", " + patient_details.patient_first_name : ""; submitted_case_model_elastic.status = "FS" + Parameter.new_status; submitted_case_model_elastic.status_date = Parameter.status_date; submitted_case_model_elastic.status_date_string = Parameter.status_date.ToString("dd.MM.yyyy"); submitted_case_model_elastic.treatment_date = case_to_submit.treatment_date; submitted_case_model_elastic.treatment_date_day_month = case_to_submit.treatment_date.ToString("dd.MM."); submitted_case_model_elastic.treatment_date_month_year = case_to_submit.treatment_date.ToString("MMMM yyyy", new System.Globalization.CultureInfo("de", true)); submitted_case_model_elastic.drug = drug_details != null ? drug_details.drug_name : ""; submitted_case_model_elastic.type = is_treatment ? "op" : "ac"; submitted_case_model_elastic.treatment_date_string = case_to_submit.treatment_date.ToString("dd.MM.yyyy"); submitted_case_model_elastic.patient_insurance_number = patient_details.insurance_id; if (is_treatment) { submitted_case_model_elastic.doctor_name = treatment_doctor_details != null ? treatment_doctor_details.title + " " + treatment_doctor_details.last_name + " " + treatment_doctor_details.first_name : "-"; submitted_case_model_elastic.practice_name = treatment_doctor_details.practice; submitted_case_model_elastic.doctor_lanr = treatment_doctor_details.lanr; submitted_case_model_elastic.practice_bsnr = treatment_practice_details.practice_BSNR; } else { submitted_case_model_elastic.doctor_name = aftercare_doctor_details.title + " " + aftercare_doctor_details.last_name + " " + aftercare_doctor_details.first_name; submitted_case_model_elastic.practice_name = aftercare_doctor_details.practice; submitted_case_model_elastic.doctor_lanr = aftercare_doctor_details.lanr; submitted_case_model_elastic.practice_bsnr = aftercare_practice_details.practice_BSNR; } submitted_case_model_elastic.hip_name = patient_details != null ? patient_details.health_insurance_provider : "-"; List <Submitted_Case_Model> cases_to_submit = new List <Submitted_Case_Model>(); cases_to_submit.Add(submitted_case_model_elastic); Add_New_Submitted_Case.Import_Submitted_Case_Data_to_ElasticDB(cases_to_submit, securityTicket.TenantID.ToString()); } return(returnValue); #endregion UserCode }
protected static FR_CAS_SCCS_1520 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SCCS_1520 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_CAS_SCCS_1520(); returnValue.Result = new CAS_SCCS_1520(); //Put your code here var Ids_eligible = new List <Guid>(); var StatusOld = DateTime.Now; var StatusNew = DateTime.Now; var settlements = new List <Settlement_Model>(); var patientDetailList = new List <PatientDetailViewModel>(); var itemsForChange = Parameter.ids_to_change.Count(); //filter case eligibility foreach (var id in Parameter.ids_to_change) { if (Parameter.status_to == 8) { var settlementEdit = Get_Settlement.GetSettlementForID(id.ToString(), securityTicket); if (settlementEdit != null) { if (settlementEdit.status == "FS4" || settlementEdit.status == "FS12") { Ids_eligible.Add(id); } } } else if (Parameter.status_to == 9) { var settlementEdit = Get_Settlement.GetSettlementForID(id.ToString(), securityTicket); if (settlementEdit != null) { if (settlementEdit.status == "FS7") { Ids_eligible.Add(id); } } } } var itemsChanged = Ids_eligible.Count; foreach (var ideligible in Ids_eligible) { #region update setttlement elastic var settlementEdit = Get_Settlement.GetSettlementForID(ideligible.ToString(), securityTicket); settlementEdit.status = Parameter.status_to == 8 ? "FS" + 7 : "FS" + 12; settlementEdit.status_date = DateTime.Now; settlements.Add(settlementEdit); PatientDetailViewModel patient_detail = Retrieve_Patients.Get_PatientDetaiForID(settlementEdit.id, securityTicket); if (patient_detail != null) { patient_detail.status = settlementEdit.status; patientDetailList.Add(patient_detail); } #endregion List <CAS_GCTCfCID_1427> casePositions = cls_Get_Case_TransmitionCode_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCTCfCID_1427() { CaseID = Guid.Parse(settlementEdit.case_id) }, securityTicket).Result.ToList(); var aftercareNum = casePositions.Count(fs => fs.fs_key == "aftercare"); foreach (var item in casePositions) { if (item.fs_key == "treatment") { var StatusForCase = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { IsDeleted = false, IsActive = true, Tenant_RefID = securityTicket.TenantID, BIL_BillPosition_TransmitionStatusID = item.status_id }).SingleOrDefault(); if (StatusForCase != null) { StatusOld = StatusForCase.Modification_Timestamp; StatusForCase.Modification_Timestamp = DateTime.Now; StatusForCase.IsActive = false; StatusForCase.Save(Connection, Transaction); StatusNew = StatusForCase.Modification_Timestamp; var NewStatusForCase = new ORM_BIL_BillPosition_TransmitionStatus(); NewStatusForCase.IsDeleted = false; NewStatusForCase.Creation_Timestamp = DateTime.Now; NewStatusForCase.Modification_Timestamp = DateTime.Now; NewStatusForCase.Tenant_RefID = securityTicket.TenantID; NewStatusForCase.IsActive = true; NewStatusForCase.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); NewStatusForCase.BillPosition_RefID = StatusForCase.BillPosition_RefID; NewStatusForCase.TransmitionCode = Convert.ToInt32(Parameter.status_to) == 9 ? 12 : 7; NewStatusForCase.TransmittedOnDate = DateTime.Now; NewStatusForCase.TransmitionStatusKey = StatusForCase.TransmitionStatusKey; NewStatusForCase.Save(Connection, Transaction); } } else { if ((aftercareNum > 1 && (item.fs_status != 8)) || aftercareNum == 0) { var StatusForCase = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { IsDeleted = false, IsActive = true, Tenant_RefID = securityTicket.TenantID, BIL_BillPosition_TransmitionStatusID = item.status_id }).SingleOrDefault(); if (StatusForCase != null) { StatusOld = StatusForCase.Modification_Timestamp; StatusForCase.Modification_Timestamp = DateTime.Now; StatusForCase.IsActive = false; StatusForCase.Save(Connection, Transaction); StatusNew = StatusForCase.Modification_Timestamp; var NewStatusForCase = new ORM_BIL_BillPosition_TransmitionStatus(); NewStatusForCase.IsDeleted = false; NewStatusForCase.Creation_Timestamp = DateTime.Now; NewStatusForCase.Modification_Timestamp = DateTime.Now; NewStatusForCase.Tenant_RefID = securityTicket.TenantID; NewStatusForCase.IsActive = true; NewStatusForCase.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); NewStatusForCase.BillPosition_RefID = StatusForCase.BillPosition_RefID; NewStatusForCase.TransmitionCode = Convert.ToInt32(Parameter.status_to) == 9 ? 12 : 7; NewStatusForCase.TransmittedOnDate = DateTime.Now; NewStatusForCase.TransmitionStatusKey = StatusForCase.TransmitionStatusKey; NewStatusForCase.Save(Connection, Transaction); } } } } if (settlements.Count != 0) { Add_new_Settlement.Import_Settlement_to_ElasticDB(settlements, securityTicket.TenantID.ToString()); } if (patientDetailList.Count != 0) { Add_New_Patient.ImportPatientDetailsToElastic(patientDetailList, securityTicket.TenantID.ToString()); } } returnValue.Result.number_of_ids_changed = itemsChanged; returnValue.Result.number_of_ids_to_change = itemsForChange; returnValue.Result.status_to = Parameter.status_to; return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCFSP_1751 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); var returnValue = new FR_Guid(); var mailSent = false; bool isACCanceled = false; Guid aftercareID = Guid.Empty; var gpos_type = EGposType.Oct.Value(); if (Parameter.caseType == "op") { gpos_type = EGposType.Operation.Value(); } else if (Parameter.caseType == "ac") { gpos_type = EGposType.Aftercare.Value(); } var case_to_submit = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435() { CaseID = Parameter.case_id }, securityTicket).Result; var treatment_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = case_to_submit.practice_id }, securityTicket).Result.FirstOrDefault(); var aftercare_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = case_to_submit.aftercare_doctors_practice_id }, securityTicket).Result.FirstOrDefault(); var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = case_to_submit.patient_id }, securityTicket).Result; var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.op_doctor_id }, securityTicket).Result.SingleOrDefault(); var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1608() { DiagnoseID = case_to_submit.diagnose_id }, securityTicket).Result; var aftercare_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.ac_doctor_id }, securityTicket).Result.SingleOrDefault(); if (Parameter.caseType == "oct") { var relevant_action = ORM_HEC_CAS_Case_RelevantPlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_RelevantPlannedAction.Query() { PlannedAction_RefID = Parameter.planned_action_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); if (relevant_action.Case_RefID != Parameter.case_id) { Parameter.case_id = relevant_action.Case_RefID; } } var current_case_status = cls_Get_Case_TransmitionCode_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCTCfCID_1427() { CaseID = Parameter.case_id }, securityTicket).Result.FirstOrDefault(st => st.gpos_type == gpos_type && st.fs_status != 8 && st.fs_status != 17 && st.fs_status != 11); if (current_case_status == null) { throw new Exception(String.Format("Current FS status not found for case id: {0}, planned action id: {1}, case type: {2}", Parameter.case_id, Parameter.planned_action_id, Parameter.caseType)); } var current_status = "FS" + current_case_status.fs_status; if (Parameter.caseType == "op") { var bill_positions = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = Parameter.case_id }, securityTicket).Result; #region CHANGE TREATMENT STATUS foreach (var bill_position in bill_positions) { ORM_BIL_BillPosition_TransmitionStatus.Query transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.BillPosition_RefID = bill_position.bill_position_id; transmition_statusQ.TransmitionStatusKey = "treatment"; transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; transmition_statusQ.IsActive = true; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null && transmition_status.TransmitionCode != 8 && transmition_status.TransmitionCode != 11) { transmition_status.IsActive = false; transmition_status.Modification_Timestamp = DateTime.Now; transmition_status.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus position_status = new ORM_BIL_BillPosition_TransmitionStatus(); position_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); position_status.BillPosition_RefID = bill_position.bill_position_id; position_status.Creation_Timestamp = DateTime.Now; position_status.IsActive = true; position_status.PrimaryComment = Parameter.reasonForCancelation; position_status.Modification_Timestamp = DateTime.Now; position_status.TransmitionCode = transmition_status.TransmitionCode != 2 ? 8 : 11; position_status.TransmittedOnDate = DateTime.Now; position_status.Tenant_RefID = securityTicket.TenantID; position_status.TransmitionStatusKey = "treatment"; #region CREATE SNAPSHOT DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details == null ? "-" : diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details == null ? "-" : diagnose_details.catalog_display_name, DiagnosisName = diagnose_details == null ? "-" : diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = treatment_practice_details.practice_name, IFPerformedResponsibleBPFullName = GenericUtils.GetDoctorName(treatment_doctor_details), Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { position_status.TransmissionDataXML = snapshot.XmlFileString; } #endregion position_status.Save(Connection, Transaction); current_status = "FS" + position_status.TransmitionCode; } } #region Aftercare e-mail var aftercarePlannedAction = cls_Get_Aftercare_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GAPAfCID_0959 { CaseID = Parameter.case_id }, securityTicket).Result; if (aftercarePlannedAction != null) { var originalAftercarePlannedAction = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query { HEC_ACT_PlannedActionID = aftercarePlannedAction.planned_action_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false, IsCancelled = false }).SingleOrDefault(); if (originalAftercarePlannedAction != null) { if (!originalAftercarePlannedAction.IsPerformed) { originalAftercarePlannedAction.IsCancelled = true; originalAftercarePlannedAction.Save(Connection, Transaction); isACCanceled = true; aftercareID = originalAftercarePlannedAction.HEC_ACT_PlannedActionID; } else { if (!mailSent) { 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); } // mailToL.Add(emailTo); var mailToFromCompanySettings = cls_Get_Company_Settings.Invoke(Connection, Transaction, securityTicket).Result.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/TreatmentCancelledFromSettlementPageEmailTemplate.html")); var subjectsJson = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/EmailSubjects.json")); dynamic subjects = JsonConvert.DeserializeObject(subjectsJson); var subjectMail = subjects["TreatmentCancelledFromSettlementPageSubject"].ToString(); email_template = EmailTemplater.SetTemplateData(email_template, new { patient_first_name = patient_details.patient_first_name, patient_last_name = patient_details.patient_last_name, treatment_date = case_to_submit.treatment_date.ToString("dd.MM.yyyy"), treatment_doctor_title = treatment_doctor_details.title, treatment_doctor_first_name = treatment_doctor_details.first_name, treatment_doctor_last_name = treatment_doctor_details.last_name, aftercare_doctor_title = aftercare_doctor_details.title, doctors_comment = Parameter.reasonForCancelation, aftercare_doctor_first_name = aftercare_doctor_details.first_name, aftercare_doctor_last_name = aftercare_doctor_details.last_name, mmapp_treatment_page_url = prefix + HttpContext.Current.Request.Url.Authority + "/" + appName + "/#/treatment", medios_connect_logo_url = imageUrl }, "{{", "}}"); try { string mailFrom = WebConfigurationManager.AppSettings["mailFrom"]; var mailsDistinct = mailToL.Distinct().ToList(); foreach (var mailTo in mailsDistinct) { EmailNotificationSenderUtil.SendEmail(mailFrom, mailTo, subjectMail, email_template); } mailSent = true; } catch (Exception ex) { LogUtils.Logger.LogDocAppInfo(new LogUtils.LogEntry(System.Reflection.MethodInfo.GetCurrentMethod(), ex, null, "Cancel case from settlement: Email sending failed."), "EmailExceptions"); } } } } } #endregion #region OCT e-mail var oct_planned_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PlannedOct.Value() }, securityTicket).Result; var patient_consent_valid_for_months_parameter = cls_Get_ConsentValidForMonths_for_LatestConsent_before_TreatmentDate_for_PatientID.Invoke(Connection, Transaction, new P_PA_GCVfMfLCbTDfPID_0930() { PatientID = case_to_submit.patient_id, TreatmentDate = case_to_submit.treatment_date.Date }, securityTicket).Result; var performedOcts = cls_Get_NonCancelledOcts_in_OpRenewedConsentTimespan.Invoke(Connection, Transaction, new P_CAS_GNCOctsiOPRCT_1416() { PatientID = case_to_submit.patient_id, PlannedOctActionTypeID = oct_planned_action_type_id, ConsentStart = case_to_submit.treatment_date.Date, ConsentEnd = case_to_submit.treatment_date.Date.AddMonths(patient_consent_valid_for_months_parameter != null && patient_consent_valid_for_months_parameter.consent_valid_for_months < 200000 ? Convert.ToInt32(patient_consent_valid_for_months_parameter.consent_valid_for_months) : 12) }, securityTicket).Result; if (performedOcts.Any()) { 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 = cls_Get_Company_Settings.Invoke(Connection, Transaction, securityTicket).Result.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/TreatmentCancelledFromSettlementPageOctSubmittedEmailTemplate .html")); var subjectsJson = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/EmailSubjects.json")); dynamic subjects = JsonConvert.DeserializeObject(subjectsJson); var subjectMail = subjects["TreatmentCancelledFromSettlementPageSubject"].ToString(); email_template = EmailTemplater.SetTemplateData(email_template, new { patient_first_name = patient_details.patient_first_name, patient_last_name = patient_details.patient_last_name, treatment_date = case_to_submit.treatment_date.ToString("dd.MM.yyyy"), treatment_doctor_title = treatment_doctor_details.title, treatment_doctor_first_name = treatment_doctor_details.first_name, treatment_doctor_last_name = treatment_doctor_details.last_name, octs = performedOcts, doctors_comment = Parameter.reasonForCancelation, mmapp_treatment_page_url = prefix + HttpContext.Current.Request.Url.Authority + "/" + appName + "/#/treatment", medios_connect_logo_url = imageUrl }, "{{", "}}"); try { string mailFrom = WebConfigurationManager.AppSettings["mailFrom"]; var mailsDistinct = mailToL.Distinct().ToList(); foreach (var mailTo in mailsDistinct) { EmailNotificationSenderUtil.SendEmail(mailFrom, mailTo, subjectMail, email_template); } mailSent = true; } catch (Exception ex) { LogUtils.Logger.LogDocAppInfo(new LogUtils.LogEntry(System.Reflection.MethodInfo.GetCurrentMethod(), ex, null, "Cancel case from settlement: Email sending failed."), "EmailExceptions"); } } #endregion #region OCT withdrawal var treatment_year_start_date = cls_Get_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GTY_1125() { Date = case_to_submit.treatment_date, LocalizationCode = case_to_submit.localization, PatientID = case_to_submit.patient_id }, securityTicket).Result; var treatment_year_length = cls_Get_TreatmentYearLength.Invoke(Connection, Transaction, new P_CAS_GTYL_1317() { Date = case_to_submit.treatment_date, PatientID = case_to_submit.patient_id }, securityTicket).Result; var ops_in_treatment_year = cls_Get_OpDates_for_PatientID_and_LocalizationCode_in_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GOpDfPIDaLCiTY_1110() { LocalizationCode = case_to_submit.localization, PatientID = case_to_submit.patient_id, TreatmentYearStartDate = treatment_year_start_date, TreatmentYearEndDate = treatment_year_start_date.AddDays(treatment_year_length - 1) }, securityTicket).Result; if (!ops_in_treatment_year.Any(t => t.CaseID != Parameter.case_id && ((!t.IsPerformed && !t.IsDeleted) || (t.IsPerformed && t.FsStatus != 8 && t.FsStatus != 11 && t.FsStatus != 17)))) { foreach (var potential_op in ops_in_treatment_year) { var non_performed_oct = cls_Get_NonPerformed_Oct_for_CaseID_and_PlannedActionTypeID.Invoke(Connection, Transaction, new P_CAS_GNPOctfCIDaPATID_1240() { CaseID = potential_op.CaseID, OctPlannedActionTypeID = oct_planned_action_type_id }, securityTicket).Result; if (non_performed_oct != null) { var oct_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = non_performed_oct.action_id }).Single(); oct_planned_action.IsCancelled = true; oct_planned_action.Modification_Timestamp = DateTime.Now; oct_planned_action.Save(Connection, Transaction); break; } } } #endregion #endregion } else if (Parameter.caseType == "oct") { #region CHANGE OCT STATUS var oct_planned_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PlannedOct.Value() }, securityTicket).Result; var oct_performed_data = cls_Get_PerformedActionDate_for_PlannedActionID.Invoke(Connection, Transaction, new P_CAS_GPADfPAID_1613() { ActionID = Parameter.planned_action_id }, securityTicket).Result; var treatment_year_start_date = cls_Get_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GTY_1125() { Date = oct_performed_data.performed_on_date, LocalizationCode = oct_performed_data.localization, PatientID = case_to_submit.patient_id }, securityTicket).Result; var treatment_year_length = cls_Get_TreatmentYearLength.Invoke(Connection, Transaction, new P_CAS_GTYL_1317() { Date = oct_performed_data.performed_on_date, PatientID = case_to_submit.patient_id }, securityTicket).Result; var relevant_actions = cls_Get_RelevantActionIDs_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GRAIDsfPIDaLC_1011() { ActionTypeID = oct_planned_action_type_id, PatientID = case_to_submit.patient_id, LocalizationCode = oct_performed_data.localization, TreatmentYearStartDate = treatment_year_start_date, TreatmentYearEndDate = treatment_year_start_date.AddDays(treatment_year_length - 1) }, securityTicket).Result; var case_ids = relevant_actions.Select(t => t.case_id).ToArray(); var bill_positions = cls_Get_BillPositionIDs_for_CaseIDs_and_GposType.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCIDsaGposT_1018() { CaseIDs = case_ids, GposType = EGposType.Oct.Value() }, securityTicket).Result; for (var i = 0; i < relevant_actions.Length; i++) { var relevant_action = relevant_actions[i]; if (relevant_action.action_id == Parameter.planned_action_id) { var bill_position = bill_positions[i]; ORM_BIL_BillPosition_TransmitionStatus.Query transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.BillPosition_RefID = bill_position.bill_position_id; transmition_statusQ.TransmitionStatusKey = "oct"; transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; transmition_statusQ.IsActive = true; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null && transmition_status.TransmitionCode != 8 && transmition_status.TransmitionCode != 11 && transmition_status.TransmitionCode != 17) { transmition_status.IsActive = false; transmition_status.Modification_Timestamp = DateTime.Now; transmition_status.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus position_status = new ORM_BIL_BillPosition_TransmitionStatus(); position_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); position_status.BillPosition_RefID = bill_position.bill_position_id; position_status.Creation_Timestamp = DateTime.Now; position_status.IsActive = true; position_status.PrimaryComment = Parameter.reasonForCancelation; position_status.Modification_Timestamp = DateTime.Now; position_status.TransmitionCode = transmition_status.TransmitionCode != 2 ? 8 : 11; position_status.TransmittedOnDate = DateTime.Now; position_status.Tenant_RefID = securityTicket.TenantID; position_status.TransmitionStatusKey = "oct"; #region CREATE SNAPSHOT DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var oct_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.oct_doctor_id }, securityTicket).Result.SingleOrDefault(); var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details.catalog_display_name, DiagnosisName = diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = oct_doctor_details != null ? oct_doctor_details.practice : null, IFPerformedResponsibleBPFullName = oct_doctor_details != null ? GenericUtils.GetDoctorName(oct_doctor_details) : null, Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { position_status.TransmissionDataXML = snapshot.XmlFileString; } #endregion position_status.Save(Connection, Transaction); current_status = "FS" + position_status.TransmitionCode; } break; } } #endregion } else { var bill_positions = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = Parameter.case_id }, securityTicket).Result; foreach (var bill_position in bill_positions) { #region CHANGE AFTERCARE STATUS ORM_BIL_BillPosition_TransmitionStatus.Query transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.BillPosition_RefID = bill_position.bill_position_id; transmition_statusQ.TransmitionStatusKey = "aftercare"; transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; transmition_statusQ.IsActive = true; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null && transmition_status.TransmitionCode != 8 && transmition_status.TransmitionCode != 11 && transmition_status.TransmitionCode != 17) { transmition_status.IsActive = false; transmition_status.Modification_Timestamp = DateTime.Now; transmition_status.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus position_status = new ORM_BIL_BillPosition_TransmitionStatus(); position_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); position_status.BillPosition_RefID = bill_position.bill_position_id; position_status.Creation_Timestamp = DateTime.Now; position_status.IsActive = true; position_status.PrimaryComment = Parameter.reasonForCancelation; position_status.Modification_Timestamp = DateTime.Now; position_status.TransmitionCode = transmition_status.TransmitionCode != 2 ? 8 : 11; position_status.TransmittedOnDate = DateTime.Now; position_status.Tenant_RefID = securityTicket.TenantID; position_status.TransmitionStatusKey = "aftercare"; #region CREATE SNAPSHOT DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details.catalog_display_name, DiagnosisName = diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = treatment_practice_details.practice_name, IFPerformedResponsibleBPFullName = GenericUtils.GetDoctorName(treatment_doctor_details), Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { position_status.TransmissionDataXML = snapshot.XmlFileString; } #endregion position_status.Save(Connection, Transaction); current_status = "FS" + position_status.TransmitionCode; } #endregion } } #region Send e-mail if (current_case_status != null && current_case_status.fs_status != 1 && !mailSent) { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); List <String> 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); } // mailToL.Add(emailTo); string mailToFromCompanySettings = cls_Get_Company_Settings.Invoke(Connection, Transaction, securityTicket).Result.Email; mailToL.Add(mailToFromCompanySettings); string 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/AftercareCancelledFromSettlementPageEmailTemplate.html")); var subjectsJson = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/EmailSubjects.json")); dynamic subjects = JsonConvert.DeserializeObject(subjectsJson); var subjectMail = subjects["AftercareCancelledFromSettlementPageSubject"].ToString(); email_template = EmailTemplater.SetTemplateData(email_template, new { case_type = Parameter.caseType == "op" ? "Behandlung" : Parameter.caseType == "ac" ? "Nachsorge" : "OCT", patient_first_name = patient_details.patient_first_name, patient_last_name = patient_details.patient_last_name, treatment_date = case_to_submit.treatment_date.ToString("dd.MM.yyyy"), doctor_title = Parameter.caseType == "op" || Parameter.caseType == "oct" ? treatment_doctor_details.title : aftercare_doctor_details.title, doctor_first_name = Parameter.caseType == "op" || Parameter.caseType == "oct" ? treatment_doctor_details.first_name : aftercare_doctor_details.first_name, doctor_last_name = Parameter.caseType == "op" || Parameter.caseType == "oct" ? treatment_doctor_details.last_name : aftercare_doctor_details.last_name, mmapp_treatment_page_url = prefix + HttpContext.Current.Request.Url.Authority + "/" + appName + "/#/treatment", medios_connect_logo_url = imageUrl }, "{{", "}}"); try { string 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, "Cancel treatment/aftercare from settlement: Email sending failed."), "EmailExceptions"); } } #endregion returnValue.Result = case_to_submit.patient_id; return(returnValue); #endregion UserCode }
public static void ExportCasesFromOldSystem(DbConnection Connection, DbTransaction Transaction, SessionSecurityTicket securityTicket) { Console.WriteLine("----- Retrieving cases from DB started."); List <ED_GATOS_1212> treatments = cls_Get_All_Treatments_OLD_System.Invoke(Connection, Transaction, securityTicket).Result.ToList(); Console.WriteLine("----- Cases retrieved."); List <CaseModel> caseList = new List <CaseModel>(); List <ED_GATOS_1212> moreThenOneArticleList = new List <ED_GATOS_1212>(); List <ED_GATOS_1212> moreThenOneDiagnoseList = new List <ED_GATOS_1212>(); List <ED_GATOS_1212> moreThenOneAftercareList = new List <ED_GATOS_1212>(); List <ED_GAAOS_1312> aftercareList = new List <ED_GAAOS_1312>(); //key treatmentID, list of aftercares for the treatment (only if there is more then one) Dictionary <Guid, List <ED_GAAOS_1312> > aftercarDictionaryForMoreThenOneAftercare = new Dictionary <Guid, List <ED_GAAOS_1312> >(); int counter = 1; foreach (var treatment in treatments) { CaseModel caseModel = new CaseModel(); caseModel.opFSStatuses = new FS(); caseModel.acFSStatuses = new FS(); caseModel.patientFirstName = treatment.PatientFirstName; caseModel.patientLastName = treatment.PatientLastName; caseModel.hip = treatment.HealthInsurance_Number; caseModel.treatmentDate = treatment.isTreatmentPerformed ? treatment.treatmentPerformedDate.ToString("dd.MM.yyyy") : treatment.treatmentScheduledDate.ToString("dd.MM.yyyy"); caseModel.op1 = treatment.treatmentScheduledDate.ToString("dd.MM.yyyy"); caseModel.op2 = treatment.isTreatmentPerformed? treatment.treatmentPerformedDate.ToString("dd.MM.yyyy") : "not performed"; caseModel.opFSStatuses.fs1 = caseModel.op2; caseModel.localization = treatment.IsTreatmentOfLeftEye ? "L" : "R"; caseModel.bevacizumabFSStatuses = new FS(); caseModel.managementFeeFSStatuses = new FS(); caseModel.opDocFirstName = treatment.isTreatmentPerformed ? treatment.OPperformedDoctorFirstName : treatment.OPScheduledDoctorFirstName; caseModel.opDocLastName = treatment.isTreatmentPerformed ? treatment.OPperformedDoctorLastName : treatment.OPperformedDoctorLastName; caseModel.opDocLANR = treatment.isTreatmentPerformed ? treatment.OPperformedDoctorLANR : treatment.OPscheduledDoctorLANR; caseModel.treatmentPractice = new Practice(); caseModel.aftercarePractice = new Practice(); caseModel.treatmentPractice.BSNR = treatment.BSNR; caseModel.treatmentPractice.Name = treatment.PracticeName; //drugs if (treatment.Articles.Length > 1) { moreThenOneArticleList.Add(treatment); caseModel.drugName = treatment.Articles[0].ArticleName; caseModel.pzn = treatment.Articles[0].PZN; } else { if (treatment.Articles.Length != 0) { caseModel.drugName = treatment.Articles[0].ArticleName; caseModel.pzn = treatment.Articles[0].PZN; } } //diagnoses if (treatment.Diagnoses.Length > 1) { var diagnosesGroupped = treatment.Diagnoses.GroupBy(w => w.ICD10_Code).ToList(); if (diagnosesGroupped.Count > 1) { moreThenOneDiagnoseList.Add(treatment); continue; } else { caseModel.icd10 = treatment.Diagnoses[0].ICD10_Code; } } else { if (treatment.Diagnoses.Length != 0) { caseModel.icd10 = treatment.Diagnoses[0].ICD10_Code; } } if (treatment.isTreatmentBilled) { var billPositions = cls_Get_All_BillPositions_for_TreatmentID_from_OLD_System.Invoke(Connection, Transaction, new P_ED_GABfTIDOS_1712 { TreatmentID = treatment.HEC_Patient_TreatmentID }, securityTicket).Result.ToList(); bool isOldBillWay = false; foreach (var billPosition in billPositions) { #region Behandlung || Behandlung | Nachsorge if (billPosition.External_PositionType == "Behandlung" || billPosition.External_PositionType == "Behandlung | Nachsorge") { if (billPosition.External_PositionType == "Behandlung | Nachsorge") { isOldBillWay = true; } caseModel.opSettlementNumber = billPosition.VorgangsNummer; caseModel.opFSStatuses.gpos = billPosition.GPOS; int activeCode = 0; activeCode = billPosition.TransmitionCode; // TODO: Edited cases: 2, 5, 6 switch (activeCode) { case 2: caseModel.op5 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs2 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); //caseModel.opFSStatuses.fs1 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 3: caseModel.op6 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs4 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 4: caseModel.op7 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs5 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 5: caseModel.op8 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs7 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); //caseModel.opFSStatuses.fs2 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 6: caseModel.op8 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs7 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs4 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 7: caseModel.op10 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs8 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; } if (activeCode != 2) { var transmitionStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmitionStatusQuery.Tenant_RefID = securityTicket.TenantID; transmitionStatusQuery.BillPosition_RefID = billPosition.BIL_BillPositionID; transmitionStatusQuery.TransmitionCode = 2; var transmitionStatusList = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmitionStatusQuery).ToList(); var status2 = new ORM_BIL_BillPosition_TransmitionStatus(); if (transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault() != null) { status2 = transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault(); } else { status2 = transmitionStatusList.First(); } caseModel.op5 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.opFSStatuses.fs1 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); } } #endregion #region Wartezeitenmanagement if (billPosition.External_PositionType == "Wartezeitenmanagement") { caseModel.managementFeeSettlementNumber = billPosition.VorgangsNummer; caseModel.managementFeeFSStatuses.gpos = billPosition.GPOS; int activeCode = 0; activeCode = billPosition.TransmitionCode; switch (activeCode) { case 2: caseModel.managementFeeFSStatuses.fs1 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 3: caseModel.managementFeeFSStatuses.fs4 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 4: caseModel.managementFeeFSStatuses.fs5 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 5: caseModel.managementFeeFSStatuses.fs2 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 6: caseModel.managementFeeFSStatuses.fs7 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 7: caseModel.managementFeeFSStatuses.fs8 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; } if (activeCode != 2) { var transmitionStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmitionStatusQuery.Tenant_RefID = securityTicket.TenantID; transmitionStatusQuery.BillPosition_RefID = billPosition.BIL_BillPositionID; transmitionStatusQuery.TransmitionCode = 2; var transmitionStatusList = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmitionStatusQuery).ToList(); var status2 = new ORM_BIL_BillPosition_TransmitionStatus(); if (transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault() != null) { status2 = transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault(); } else { status2 = transmitionStatusList.First(); } caseModel.managementFeeFSStatuses.fs1 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); } } #endregion #region Zusatzposition Bevacuzimab if (billPosition.External_PositionType == "Zusatzposition Bevacuzimab") { caseModel.bevacizumabSettlementNumber = billPosition.VorgangsNummer; caseModel.bevacizumabFSStatuses.gpos = billPosition.GPOS; int activeCode = 0; activeCode = billPosition.TransmitionCode; switch (activeCode) { case 2: caseModel.bevacizumabFSStatuses.fs1 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 3: caseModel.bevacizumabFSStatuses.fs4 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 4: caseModel.bevacizumabFSStatuses.fs5 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 5: caseModel.bevacizumabFSStatuses.fs2 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 6: caseModel.bevacizumabFSStatuses.fs7 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 7: caseModel.bevacizumabFSStatuses.fs8 = billPosition.TransmittedOnDate.ToString("dd.MM.yyyy"); break; } if (activeCode != 2) { var transmitionStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmitionStatusQuery.Tenant_RefID = securityTicket.TenantID; transmitionStatusQuery.BillPosition_RefID = billPosition.BIL_BillPositionID; transmitionStatusQuery.TransmitionCode = 2; var transmitionStatusList = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmitionStatusQuery).ToList(); var status2 = new ORM_BIL_BillPosition_TransmitionStatus(); if (transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault() != null) { status2 = transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault(); } else { status2 = transmitionStatusList.First(); } caseModel.bevacizumabFSStatuses.fs1 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); } } #endregion } #region Aftercare //Aftercare var aftercareArray = cls_Get_All_Aftercares_OLD_System.Invoke(Connection, Transaction, new P_ED_GAAOS_1312 { TreatmentID = treatment.HEC_Patient_TreatmentID }, securityTicket).Result; if (aftercareArray.Length > 1) { if (aftercareArray.Length != 2) { moreThenOneAftercareList.Add(treatment); aftercarDictionaryForMoreThenOneAftercare.Add(treatment.HEC_Patient_TreatmentID, aftercareArray.ToList()); continue; } else { if (aftercareArray[0].FollowupID != aftercareArray[1].FollowupID) { moreThenOneAftercareList.Add(treatment); aftercarDictionaryForMoreThenOneAftercare.Add(treatment.HEC_Patient_TreatmentID, aftercareArray.ToList()); continue; } else { aftercareArray = aftercareArray.Where(f => f.BIL_BillPositionID != Guid.Empty).ToArray(); } } } if (aftercareArray.Length != 0) { ED_GAAOS_1312 aftercare = aftercareArray[0]; caseModel.acDocFirstName = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorFirstName : aftercare.ScheduledDoctorFirstName; caseModel.acDocLastName = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorLastName : aftercare.ScheduledDoctorLastName; caseModel.acDocLANR = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorLANR : aftercare.ScheduledDoctorLANR; caseModel.ac1 = aftercare.IfSheduled_Date.ToString("dd.MM.yyyy"); caseModel.aftercarePractice.BSNR = aftercare.BSNR; caseModel.aftercarePractice.Name = aftercare.PracticeName; if (aftercare.isTreatmentPerformed) { caseModel.ac2 = aftercare.IfTreatmentPerformed_Date.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs1 = caseModel.ac2; } if (isOldBillWay) { caseModel.acSettlementNumber = caseModel.opSettlementNumber; caseModel.acFSStatuses.fs1 = caseModel.opFSStatuses.fs1; caseModel.acFSStatuses.fs2 = caseModel.opFSStatuses.fs2; caseModel.acFSStatuses.fs4 = caseModel.opFSStatuses.fs4; caseModel.acFSStatuses.fs5 = caseModel.opFSStatuses.fs5; caseModel.acFSStatuses.fs7 = caseModel.opFSStatuses.fs7; caseModel.acFSStatuses.fs8 = caseModel.opFSStatuses.fs8; caseModel.acFSStatuses.gpos = caseModel.opFSStatuses.gpos; } else { if (aftercare.isTreatmentBilled) { caseModel.acSettlementNumber = aftercare.VorgangsNummer; caseModel.acFSStatuses.gpos = aftercare.GPOS; switch (aftercare.TransmitionCode) { case 2: caseModel.ac6 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs2 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 3: caseModel.ac7 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs4 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 4: caseModel.ac8 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs5 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 5: caseModel.ac9 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs7 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 6: caseModel.ac9 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs7 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs4 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 7: caseModel.ac11 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs8 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; } if (aftercare.TransmitionCode != 2) { var transmitionStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmitionStatusQuery.Tenant_RefID = securityTicket.TenantID; transmitionStatusQuery.BillPosition_RefID = aftercare.BIL_BillPositionID; transmitionStatusQuery.TransmitionCode = 2; var transmitionStatusList = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmitionStatusQuery).ToList(); if (transmitionStatusList.Count > 0) { var status2 = new ORM_BIL_BillPosition_TransmitionStatus(); if (transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault() != null) { status2 = transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault(); } else { status2 = transmitionStatusList.First(); } caseModel.ac6 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs1 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); } } } } } } else { //Treatment was never billed var aftercareArray = cls_Get_All_Aftercares_OLD_System.Invoke(Connection, Transaction, new P_ED_GAAOS_1312 { TreatmentID = treatment.HEC_Patient_TreatmentID }, securityTicket).Result; if (aftercareArray.Length > 1) { if (aftercareArray.Length != 2) { moreThenOneAftercareList.Add(treatment); aftercarDictionaryForMoreThenOneAftercare.Add(treatment.HEC_Patient_TreatmentID, aftercareArray.ToList()); continue; } else { if (aftercareArray[0].FollowupID != aftercareArray[1].FollowupID) { moreThenOneAftercareList.Add(treatment); aftercarDictionaryForMoreThenOneAftercare.Add(treatment.HEC_Patient_TreatmentID, aftercareArray.ToList()); continue; } else { aftercareArray = aftercareArray.Where(f => f.BIL_BillPositionID != Guid.Empty).ToArray(); } } } if (aftercareArray.Length != 0) { var aftercare = aftercareArray[0]; caseModel.acDocFirstName = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorFirstName : aftercare.ScheduledDoctorFirstName; caseModel.acDocLastName = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorLastName : aftercare.ScheduledDoctorLastName; caseModel.acDocLANR = aftercare.isTreatmentPerformed ? aftercare.PerformedDoctorLANR : aftercare.ScheduledDoctorLANR; caseModel.aftercarePractice.BSNR = aftercare.BSNR; caseModel.aftercarePractice.Name = aftercare.PracticeName; caseModel.ac1 = aftercare.IfSheduled_Date.ToString("dd.MM.yyyy"); if (aftercare.isTreatmentBilled) { caseModel.ac2 = aftercare.IfTreatmentPerformed_Date.ToString("dd.MM.yyyy"); } if (aftercare.isTreatmentPerformed) { caseModel.acSettlementNumber = aftercare.VorgangsNummer; } if (aftercare.isTreatmentBilled) { caseModel.acSettlementNumber = aftercare.VorgangsNummer; caseModel.acFSStatuses.gpos = aftercare.GPOS; switch (aftercare.TransmitionCode) { case 2: caseModel.ac6 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs1 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 3: caseModel.ac7 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs4 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 4: caseModel.ac8 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs5 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 5: caseModel.ac9 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs2 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 6: caseModel.ac9 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs7 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; case 7: caseModel.ac11 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs8 = aftercare.TransmittedOnDate.ToString("dd.MM.yyyy"); break; } if (aftercare.TransmitionCode != 2) { var transmitionStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmitionStatusQuery.Tenant_RefID = securityTicket.TenantID; transmitionStatusQuery.BillPosition_RefID = aftercare.BIL_BillPositionID; transmitionStatusQuery.TransmitionCode = 2; var transmitionStatusList = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmitionStatusQuery).ToList(); if (transmitionStatusList.Count > 0) { var status2 = new ORM_BIL_BillPosition_TransmitionStatus(); if (transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault() != null) { status2 = transmitionStatusList.Where(p => p.IsDeleted = false).SingleOrDefault(); } else { status2 = transmitionStatusList.First(); } caseModel.ac6 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); caseModel.acFSStatuses.fs1 = status2.TransmittedOnDate.ToString("dd.MM.yyyy"); } } } } } #endregion caseList.Add(caseModel); Console.WriteLine(counter + "___________________________________________" + treatments.Count); counter++; } Console.WriteLine("----- Creating XLS."); string file_aftercare = ExportCasesXLSTemplate.ExportCasesMoreThenOneAftercare(moreThenOneAftercareList, aftercarDictionaryForMoreThenOneAftercare); MemoryStream ms = new MemoryStream(File.ReadAllBytes(file_aftercare)); string file_article = ExportCasesXLSTemplate.ExportCasesMoreThenOneArticle(moreThenOneArticleList); ms = new MemoryStream(File.ReadAllBytes(file_article)); string file_diagnose = ExportCasesXLSTemplate.ExportCasesMoreThenOneDiagnose(moreThenOneDiagnoseList); ms = new MemoryStream(File.ReadAllBytes(file_diagnose)); string file = ExportCasesXLSTemplate.ExportCasesBeforeUploadToDB(caseList); ms = new MemoryStream(File.ReadAllBytes(file)); Console.WriteLine("----- XLS created."); }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCtSE_1100 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE"); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); //Get statuses from Resources var FS1 = Properties.Resources.FS1; var FS2 = Properties.Resources.FS2; var FS3 = Properties.Resources.FS3; var FS4 = Properties.Resources.FS4; var FS5 = Properties.Resources.FS5; var FS6 = Properties.Resources.FS6; var FS7 = Properties.Resources.FS7; var FS8 = Properties.Resources.FS8; var FS9 = Properties.Resources.FS9; var FS10 = Properties.Resources.FS10; var FS11 = Properties.Resources.FS11; Guid treatment_performed_action_type_id = Guid.Empty; var treatment_performed_action_type = ORM_HEC_ACT_ActionType.Query.Search(Connection, Transaction, new ORM_HEC_ACT_ActionType.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, GlobalPropertyMatchingID = "mm.docconect.doc.app.performed.action.treatment" }).SingleOrDefault(); if (treatment_performed_action_type == null) { treatment_performed_action_type = new ORM_HEC_ACT_ActionType(); treatment_performed_action_type.GlobalPropertyMatchingID = "mm.docconect.doc.app.performed.action.treatment"; treatment_performed_action_type.Creation_Timestamp = DateTime.Now; treatment_performed_action_type.Modification_Timestamp = DateTime.Now; treatment_performed_action_type.Tenant_RefID = securityTicket.TenantID; treatment_performed_action_type.Save(Connection, Transaction); treatment_performed_action_type_id = treatment_performed_action_type.HEC_ACT_ActionTypeID; } else { treatment_performed_action_type_id = treatment_performed_action_type.HEC_ACT_ActionTypeID; } List <Submitted_Case_Model> allCases = Get_All_Cases_With_Custom_Status.Get_All_Submited_Cases_With_Custom_Status("FS2", securityTicket); List <Submitted_Case_Model> allCases_FS11 = Get_All_Cases_With_Custom_Status.Get_All_Submited_Cases_With_Custom_Status("FS11", securityTicket); List <Submitted_Case_Model> newCaseList = new List <Submitted_Case_Model>(); List <Settlement_Model> settlements = new List <Settlement_Model>(); List <PatientDetailViewModel> patientDetailList = new List <PatientDetailViewModel>(); List <DateTime> OldTransmitionDateList = new List <DateTime>(); Dictionary <Guid, int> consentValidToCache = new Dictionary <Guid, int>(); //List<Guid> casesToChange = new List<Guid>(); //List<string> typeList = new List<string>(); List <NegativeResponseModel> NegativeResponseList = new List <NegativeResponseModel>(); var preexaminationsCache = cls_Get_Patient_Preexaminations_on_Tenant.Invoke(Connection, Transaction, securityTicket).Result.GroupBy(t => t.PatientID).ToDictionary(t => t.Key, t => t.GroupBy(c => c.Localization).ToDictionary(d => d.Key, d => d)); DateTime DateForElastic = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); var casesForReport = cls_Get_Cases_For_Report.Invoke(Connection, Transaction, new P_CAS_GCFR_0910() { Status = 2 }, securityTicket).Result; var casesForReport_FS11 = cls_Get_Cases_For_Report.Invoke(Connection, Transaction, new P_CAS_GCFR_0910() { Status = 11 }, securityTicket).Result; Dictionary <string, string> serviceFeeValueCache = new Dictionary <string, string>(); List <CaseForReportModel> caseModelList = new List <CaseForReportModel>(); foreach (var item in Parameter.CasesToBeChanged) { try { var errorCase = casesForReport.SingleOrDefault(i => int.Parse(i.PositionNumber) == int.Parse(item.bill_number)); bool shouldChangeToFS8 = false; if (errorCase == null) { errorCase = casesForReport_FS11.SingleOrDefault(i => int.Parse(i.PositionNumber) == int.Parse(item.bill_number)); shouldChangeToFS8 = true; } var management_fee_value = "-"; if (!string.IsNullOrEmpty(errorCase.BillingCode)) { if (!serviceFeeValueCache.ContainsKey(errorCase.BillingCode)) { var service_fee_value = cls_Get_ServiceFeeValue_for_BillingCode.Invoke(Connection, Transaction, new P_CAS_GSFVfBC_1721() { BillingCode = errorCase.BillingCode }, securityTicket).Result; if (service_fee_value != null) { serviceFeeValueCache.Add(errorCase.BillingCode, service_fee_value.service_fee); } } management_fee_value = serviceFeeValueCache[errorCase.BillingCode]; } var negativeTransmitionQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); negativeTransmitionQuery.Tenant_RefID = securityTicket.TenantID; negativeTransmitionQuery.IsDeleted = false; negativeTransmitionQuery.BillPosition_RefID = errorCase.StatusID; var negativeTransmition = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, negativeTransmitionQuery).ToList(); var caseStatusQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); caseStatusQuery.Tenant_RefID = securityTicket.TenantID; caseStatusQuery.IsDeleted = false; caseStatusQuery.IsActive = true; caseStatusQuery.BIL_BillPosition_TransmitionStatusID = errorCase.StatusID; var caseStatusOld = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, caseStatusQuery).SingleOrDefault(); if (caseStatusOld == null) { throw new Exception("Transmition status not found for id: " + errorCase.StatusID); } OldTransmitionDateList.Add(caseStatusOld.TransmittedOnDate); caseStatusOld.IsActive = false; caseStatusOld.Save(Connection, Transaction); var caseStatus = new ORM_BIL_BillPosition_TransmitionStatus(); caseStatus.IsDeleted = false; caseStatus.Creation_Timestamp = DateTime.Now; caseStatus.Modification_Timestamp = DateTime.Now; caseStatus.Tenant_RefID = securityTicket.TenantID; caseStatus.IsActive = true; caseStatus.PrimaryComment = item.error_message; caseStatus.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); caseStatus.BillPosition_RefID = caseStatusOld.BillPosition_RefID; caseStatus.TransmitionCode = 5; caseStatus.TransmittedOnDate = DateTime.Now;// should we use from edifact? caseStatus.TransmitionStatusKey = caseStatusOld.TransmitionStatusKey; caseStatus.Save(Connection, Transaction); if (shouldChangeToFS8) { caseStatus.IsActive = false; caseStatus.Save(Connection, Transaction); var caseStatus2 = new ORM_BIL_BillPosition_TransmitionStatus(); caseStatus2.IsDeleted = false; caseStatus2.Creation_Timestamp = DateTime.Now; caseStatus2.Modification_Timestamp = DateTime.Now; caseStatus2.Tenant_RefID = securityTicket.TenantID; caseStatus2.IsActive = true; caseStatus2.PrimaryComment = item.error_message; caseStatus2.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); caseStatus2.BillPosition_RefID = caseStatusOld.BillPosition_RefID; caseStatus2.TransmitionCode = 8; caseStatus2.TransmittedOnDate = DateTime.Now;// should we use from edifact? caseStatus2.TransmitionStatusKey = caseStatusOld.TransmitionStatusKey; caseStatus2.Save(Connection, Transaction); } Guid caseID = errorCase.CaseID; NegativeResponseModel negativeResponse = new NegativeResponseModel(); negativeResponse.caseID = caseID; //casesToChange.Add(caseID); if (caseStatusOld.TransmitionStatusKey == "aftercare") { negativeResponse.plannedActionID = errorCase.IsAftercareID; negativeResponse.type = "ac"; } //typeList.Add("ac"); else if (caseStatusOld.TransmitionStatusKey == "treatment") { negativeResponse.plannedActionID = errorCase.IsTreatmentID; negativeResponse.type = "op"; } else { negativeResponse.plannedActionID = errorCase.IsTreatmentID; negativeResponse.type = caseStatusOld.TransmitionStatusKey; } //typeList.Add("op"); NegativeResponseList.Add(negativeResponse); P_PA_GPDfPID_1124 patientData = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = errorCase.Patient_RefID }, securityTicket).Result; #region Report data CaseForReportModel caseModel = new CaseForReportModel(); caseModel.HIP = patientData.health_insurance_provider; caseModel.ContractID = patientData.contractID; caseModel.HIP_IK = patientData.HealthInsurance_IKNumber; caseModel.PatientInsuranceNumber = patientData.insurance_id; caseModel.PatientGender = patientData.gender; caseModel.PatientStatusNumber = patientData.insurance_status; caseModel.PatientFirstName = patientData.patient_first_name; caseModel.PatientLastName = patientData.patient_last_name; caseModel.PatientBirthday = patientData.birthday; try { if (!consentValidToCache.ContainsKey(patientData.contractID)) { double DurationOfParticipationConsentinMonths = ORM_CMN_CTR_Contract_Parameter.Query.Search(Connection, Transaction, new ORM_CMN_CTR_Contract_Parameter.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, ParameterName = "Duration of participation consent – Month", Contract_RefID = patientData.contractID }).SingleOrDefault().IfNumericValue_Value; consentValidToCache.Add(patientData.contractID, Convert.ToInt32(DurationOfParticipationConsentinMonths)); } DateTime participationConsentValidTo = patientData.ParticipationConsent.OrderBy(dt => dt.participation_consent_issue_date).FirstOrDefault().participation_consent_issue_date.AddMonths(consentValidToCache[patientData.contractID]); caseModel.PatientParticipationConsentValidUntil = participationConsentValidTo; } catch (Exception ex) { caseModel.PatientParticipationConsentValidUntil = DateTime.MinValue; } caseModel.CaseNumber = Convert.ToInt32(errorCase.CaseNumber); caseModel.CaseType = errorCase.CodeName; try { caseModel.Drug = cls_Get_Drug_Details_for_DrugID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1614() { DrugID = errorCase.DrugID }, securityTicket).Result.drug_name; } catch (Exception ex) { caseModel.Drug = "-"; } caseModel.Diagnose = errorCase.IM_PotentialDiagnosis_Name; caseModel.DiagnoseCode = errorCase.IM_PotentialDiagnosis_Code; caseModel.Localization = errorCase.IM_PotentialDiagnosisLocalization_Code; P_CAS_GTCfPIDaDIDaLC_1008 parameterDia = new P_CAS_GTCfPIDaDIDaLC_1008(); parameterDia.PatientID = errorCase.Patient_RefID; parameterDia.DiagnoseID = errorCase.CodeForType == "treatment" || errorCase.CodeForType == "preexamination" ? errorCase.TreatmentPerformedDiganoseID : errorCase.AftercasePerformedDiagnoseID; parameterDia.LocalizationCode = errorCase.IM_PotentialDiagnosisLocalization_Code; parameterDia.PerformedDate = errorCase.CodeForType == "treatment" || errorCase.CodeForType == "preexamination" ? errorCase.TreatmentDate : errorCase.AfterCareDate; parameterDia.ActionTypeID = treatment_performed_action_type_id; if (errorCase.CodeForType == "preexamination") { if (preexaminationsCache.ContainsKey(errorCase.Patient_RefID) && preexaminationsCache[errorCase.Patient_RefID].ContainsKey(errorCase.IM_PotentialDiagnosisLocalization_Code)) { caseModel.TreatmentCount = preexaminationsCache[errorCase.Patient_RefID][errorCase.IM_PotentialDiagnosisLocalization_Code].Count(c => c.PreexaminationDate.Date <= errorCase.TreatmentDate.Date); } } else { caseModel.TreatmentCount = cls_Get_Treatment_Count_for_PatientID_And_DiagnoseID_and_LocalizationCode.Invoke(Connection, Transaction, parameterDia, securityTicket).Result.treatment_count; } caseModel.GPOS = errorCase.BillingCode; caseModel.TreatmentDay = errorCase.CodeForType == "treatment" || errorCase.CodeForType == "preexamination" ? errorCase.TreatmentDate : errorCase.AfterCareDate; if (errorCase.CodeForType == "treatment") { caseModel.SurgeryDateForThisCase = errorCase.TreatmentDate; } else if (errorCase.CodeForType == "preexamination") { caseModel.SurgeryDateForThisCase = DateTime.MinValue; } else { CAS_GTdfA_0936 Trdate = cls_Get_Treatment_Date_for_Aftercare.Invoke(Connection, Transaction, new P_CAS_GTdfA_0936() { CaseID = errorCase.CaseID }, securityTicket).Result; if (Trdate != null) { caseModel.SurgeryDateForThisCase = Trdate.TreatmentDate; } } switch (patientData.gender) { case 0: caseModel.PatientSalutation = "Herr"; break; case 1: caseModel.PatientSalutation = "Frau"; break; default: caseModel.PatientSalutation = "-"; break; } if (!shouldChangeToFS8) { caseModel.CurrentStatus = FS5; } else { caseModel.CurrentStatus = FS8; } caseModel.DateOfCurrentStatus = DateTime.Now; if (!shouldChangeToFS8) { caseModel.PreCurrentStatus = FS2; } else { caseModel.PreCurrentStatus = FS11; } caseModel.DateOfPreCurrentStatus = caseStatusOld.TransmittedOnDate; caseModel.InvoiceNumberForTheHIP = Convert.ToInt32(errorCase.PositionNumber); caseModel.AmountForThisGPOS = errorCase.NumberForPayment; caseModel.NumberOfNegativeTry = negativeTransmition.Count.ToString(); caseModel.DateOfTheSubmissionToTheHIP = Parameter.transferToHIPDate; caseModel.FeedBackOfTheHIP = item.transmition_date; caseModel.PaymentDate = DateTime.MinValue; caseModel.DrugOrdered = (errorCase.orderId != Guid.Empty && int.Parse(errorCase.orderStatusCode) != 6) ? "Ja" : "Nein"; caseModel.NoFee = errorCase.IsPatientFeeWaived ? "Ja" : "Nein"; caseModel.InvoiceToPractice = errorCase.SendInvoiceToPractice ? "Ja" : "Nein"; caseModel.OnlyLabelRequired = errorCase.isLabelOnly ? "Ja" : "Nein"; var gposAssignmentCount = cls_Get_Gpos_AssignmentCount_for_GposID.Invoke(Connection, Transaction, new P_CAS_GGPOSACfGPOSID_1252() { GposID = errorCase.GposID }, securityTicket).Result; if (gposAssignmentCount.AssignmentCount != 0) { var is_management_fee_waived = cls_Get_Management_Fee_Property_Value_for_CaseID_and_GposID.Invoke(Connection, Transaction, new P_CAS_GMFPVfCIDaGPOSTID_1749() { CaseID = errorCase.CaseID, GposID = errorCase.GposID }, securityTicket).Result; caseModel.ManagementFee = is_management_fee_waived == null ? "-" : is_management_fee_waived.PropertyValue == "waived" ? "-" : management_fee_value; } else { caseModel.ManagementFee = "-"; } Guid DocID = errorCase.CodeForType == "treatment" || errorCase.CodeForType == "preexamination" ? errorCase.SurgeryDoctor : errorCase.AfterCareDoctor; DO_GDDfDID_0823 doctorData = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = DocID }, securityTicket).Result.First(); caseModel.BSNR = doctorData.BSNR; caseModel.PracticeName = doctorData.practice; caseModel.DocName = doctorData.first_name + " " + doctorData.last_name; caseModel.LANR = doctorData.lanr; caseModel.BankAccountHolder = string.IsNullOrEmpty(doctorData.OwnerText) ? "-" : doctorData.OwnerText; caseModel.BankName = doctorData.BankName == null ? "-" : doctorData.BankName; caseModel.IBAN = doctorData.IBAN == null ? "-" : doctorData.IBAN; caseModel.BIC = doctorData.BICCode == null ? "-" : doctorData.BICCode; caseModelList.Add(caseModel); #endregion } catch (Exception ex) { LogUtils.Logger.LogInfo(new LogUtils.LogEntry(ex.StackTrace)); throw new Exception("Bill position: " + item.bill_number, ex); } } //Change in Elastic--------------------------------------------------------------------------------- for (int k = 0; k < NegativeResponseList.Count; k++) { var errorCase = allCases.SingleOrDefault(i => i.case_id == NegativeResponseList[k].caseID.ToString() && i.type == NegativeResponseList[k].type); if (errorCase == null) { errorCase = allCases_FS11.SingleOrDefault(i => i.case_id == NegativeResponseList[k].caseID.ToString() && i.type == NegativeResponseList[k].type); if (errorCase == null) { continue; } errorCase.status = "FS8"; //Change settlement from Stornierung anhängig to storniert Settlement_Model settlement = Get_Settlement.GetSettlementForID(NegativeResponseList[k].plannedActionID.ToString(), securityTicket); settlement.status = "FS8"; settlements.Add(settlement); PatientDetailViewModel patient_detail = Retrieve_Patients.Get_PatientDetaiForID(settlement.id, securityTicket); if (patient_detail != null) { patient_detail.status = "FS8"; patientDetailList.Add(patient_detail); } } else { errorCase.status = "FS5"; } errorCase.status_date = DateTime.Now; errorCase.status_date_string = DateTime.Now.ToString("dd.MM.yyyy"); newCaseList.Add(errorCase); } if (settlements.Count > 0) { Add_new_Settlement.Import_Settlement_to_ElasticDB(settlements, securityTicket.TenantID.ToString()); } if (patientDetailList.Count > 0) { Add_New_Patient.ImportPatientDetailsToElastic(patientDetailList, securityTicket.TenantID.ToString()); } if (newCaseList.Count > 0) { Add_New_Submitted_Case.Import_Submitted_Case_Data_to_ElasticDB(newCaseList, securityTicket.TenantID.ToString()); List <Documents> documentList = new List <Documents>(); string hipID = Parameter.hipId; var healthInsuranceCompanyQuery = new ORM_HEC_HIS_HealthInsurance_Company.Query(); healthInsuranceCompanyQuery.IsDeleted = false; healthInsuranceCompanyQuery.Tenant_RefID = securityTicket.TenantID; healthInsuranceCompanyQuery.HealthInsurance_IKNumber = hipID; var helathInsurance = ORM_HEC_HIS_HealthInsurance_Company.Query.Search(Connection, Transaction, healthInsuranceCompanyQuery).Single(); var businessParticipantQuery = new ORM_CMN_BPT_BusinessParticipant.Query(); businessParticipantQuery.CMN_BPT_BusinessParticipantID = helathInsurance.CMN_BPT_BusinessParticipant_RefID; businessParticipantQuery.IsDeleted = false; businessParticipantQuery.Tenant_RefID = securityTicket.TenantID; var businessParticipant = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, businessParticipantQuery).Single(); //Save Edifact string edi_path = System.IO.Path.GetTempPath() + Parameter.edi_name; System.IO.File.WriteAllText(edi_path, Parameter.edi_message); List <string> files = new List <string>(); files.Add(edi_path); string zipPath = System.IO.Path.GetTempPath() + Parameter.edi_name + ".zip"; ZipFIlesUtils.AddToArchive(zipPath, files); string earliestDate = OldTransmitionDateList.OrderBy(d => d).First().ToString("dd.MM.yyyy"); string lastDate = OldTransmitionDateList.OrderBy(d => d).Last().ToString("dd.MM.yyyy"); Documents documentEdifact = new Documents(); documentEdifact.documentName = "Import von " + earliestDate + " - " + lastDate; documentEdifact.documentOutputLocation = zipPath; documentEdifact.receiver = businessParticipant.DisplayName; documentEdifact.mimeType = "Application/Edifact_Error"; documentList.Add(documentEdifact); Documents documentExcel = new Documents(); documentExcel.documentName = "ExcelReport" + DateTime.Now.ToString("dd.MM.yyyy_HH.mm"); documentExcel.documentOutputLocation = GenerateReportCases.CreateCaseXlsReport(caseModelList, documentExcel.documentName); documentExcel.mimeType = UtilMethods.GetMimeType(documentExcel.documentOutputLocation); documentExcel.receiver = "MM"; documentList.Add(documentExcel); foreach (var item in documentList) { MemoryStream ms = new MemoryStream(File.ReadAllBytes(item.documentOutputLocation)); byte[] byteArrayFile = ms.ToArray(); var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); var uploadedFrom = HttpContext.Current.Request.UserHostAddress; Guid documentID = documentProvider.UploadDocument(byteArrayFile, item.documentOutputLocation, securityTicket.SessionTicket, uploadedFrom); string downloadURL = documentProvider.GenerateImageThumbnailLink(documentID, securityTicket.SessionTicket, false, 200); P_ARCH_UD_1326 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 (parameterDoc.Mime == "Application/Edifact_Error") { parameterDoc.Description = parameterDoc.DocumentName; } else { parameterDoc.Description = "KV Fehler"; } cls_Upload_Report.Invoke(Connection, Transaction, parameterDoc, securityTicket); } } return(returnValue); #endregion UserCode }
protected static FR_Guids Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SCfEC_1641 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guids(); //Put your code here var case_to_submit = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435() { CaseID = Parameter.case_id }, securityTicket).Result; if (case_to_submit != null) { var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1608() { DiagnoseID = case_to_submit.diagnose_id }, securityTicket).Result; var drug_details = cls_Get_Drug_Details_for_DrugID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1614() { DrugID = case_to_submit.drug_id }, securityTicket).Result; var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.op_doctor_id }, securityTicket).Result.SingleOrDefault(); var oct_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.oct_doctor_id }, securityTicket).Result.SingleOrDefault(); var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = case_to_submit.patient_id }, securityTicket).Result; var aftercare_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = case_to_submit.ac_doctor_id }, securityTicket).Result.SingleOrDefault(); var treatment_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = case_to_submit.practice_id }, securityTicket).Result.FirstOrDefault(); var status_ids = cls_Get_Case_TransmitionStatusIDs_for_CaseID_and_StatusCode.Invoke(Connection, Transaction, new P_CAS_GCTSIDsfCIDaSC_1619() { CaseID = Parameter.case_id, StatusCode = 5 }, securityTicket).Result; var transmition_statusQ = new ORM_BIL_BillPosition_TransmitionStatus.Query(); transmition_statusQ.Tenant_RefID = securityTicket.TenantID; transmition_statusQ.IsDeleted = false; var result = new List <Guid>(); var status_key = "aftercare"; if (Parameter.action_type == "op") { status_key = "treatment"; } else if (Parameter.action_type == "oct") { status_key = "oct"; } if (status_key == "oct") { var relevant_action = ORM_HEC_CAS_Case_RelevantPlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_RelevantPlannedAction.Query() { PlannedAction_RefID = Parameter.planned_action_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); if (relevant_action.Case_RefID != Parameter.case_id) { Parameter.case_id = relevant_action.Case_RefID; } var oct_status_ids = cls_Get_Case_TransmitionStatusIDs_for_PatientID_and_StatusCode.Invoke(Connection, Transaction, new P_CAS_GCTSIDsfPIDaSC_1859() { PatientID = case_to_submit.patient_id, StatusCode = 5 }, securityTicket).Result; var all_case_status_ids = cls_Get_Case_TransmitionStatusIDs_for_PatientID.Invoke(Connection, Transaction, new P_CAS_GCTSIDsfPID_1856() { PatientID = case_to_submit.patient_id }, securityTicket).Result.Where(t => t.status_key == "oct").ToArray(); var new_status_ids = new List <CAS_GCTSIDsfPIDaSC_1859>(); var oct_planned_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PlannedOct.Value() }, securityTicket).Result; var case_relevant_actions = cls_Get_PlannedActionIDs_for_PatientID_and_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GPAIDsfPIDaATID_1705() { ActionTypeID = oct_planned_action_type_id, PatientID = case_to_submit.patient_id }, securityTicket).Result.Where(t => t.performed).ToList(); var case_bill_positions = cls_Get_BillPositionIDs_for_PatientID_and_GposType.Invoke(Connection, Transaction, new P_CAS_GBPIDsfPIDaGposT_1709() { PatientID = case_to_submit.patient_id, GposType = EGposType.Oct.Value() }, securityTicket).Result.Where(t => t.status_id != Guid.Empty).ToList(); for (var i = 0; i < case_relevant_actions.Count; i++) { if (case_relevant_actions[i].action_id == Parameter.planned_action_id) { var status = all_case_status_ids.Single(t => t.bill_position_id == case_bill_positions[i].bill_position_id); var status_to_add = oct_status_ids.Single(t => t.bill_position_id == status.bill_position_id); new_status_ids.Add(status_to_add); break; } } if (!new_status_ids.Any()) { throw new ArgumentException(String.Format("No suitable bill position found for action id: {0}; and case id: {1}", Parameter.planned_action_id, Parameter.case_id)); } status_ids = new_status_ids.Select(t => new CAS_GCTSIDsfCIDaSC_1619() { bill_position_id = t.bill_position_id, global_property_matching_id = t.global_property_matching_id, status_id = t.status_id, status_key = t.status_key }).ToArray(); } foreach (var status in status_ids) { if (status.status_key == status_key) { transmition_statusQ.BIL_BillPosition_TransmitionStatusID = status.status_id; var transmition_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, transmition_statusQ).SingleOrDefault(); if (transmition_status != null) { transmition_status.IsActive = false; transmition_status.Save(Connection, Transaction); var new_status = new ORM_BIL_BillPosition_TransmitionStatus(); new_status.PrimaryComment = Parameter.comment; new_status.TransmitionCode = 6; new_status.IsActive = true; new_status.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); new_status.BillPosition_RefID = status.bill_position_id; new_status.Creation_Timestamp = DateTime.Now; new_status.Modification_Timestamp = DateTime.Now; new_status.Tenant_RefID = securityTicket.TenantID; new_status.TransmitionStatusKey = transmition_status.TransmitionStatusKey; var today = DateTime.Today; var age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } var snapshot = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = diagnose_details == null ? "-" : diagnose_details.diagnose_icd_10, DiagnosisCatalogName = diagnose_details == null ? "-" : diagnose_details.catalog_display_name, DiagnosisName = diagnose_details == null ? "-" : diagnose_details.diagnose_name, IFPerformedMedicalPracticeName = treatment_practice_details.practice_name, IFPerformedResponsibleBPFullName = treatment_doctor_details != null ? MMDocConnectDocApp.GenericUtils.GetDoctorName(treatment_doctor_details) : null, Localization = case_to_submit.localization, PatientBirthDate = patient_details.birthday.ToString("dd.MM.yyyy"), PatientFirstName = patient_details.patient_first_name, PatientGender = patient_details.gender.ToString(), PatientLastName = patient_details.patient_last_name, PatientAge = age.ToString() }, securityTicket).Result; if (snapshot != null) { new_status.TransmissionDataXML = snapshot.XmlFileString; } new_status.TransmittedOnDate = DateTime.Now; new_status.Save(Connection, Transaction); result.Add(new_status.BIL_BillPosition_TransmitionStatusID); } } } #region IMPORT SUBMITTED CASE TO ELASTIC var submitted_case_model_elastic = Get_Submitted_Cases.GetSubmittedCaseforSubmittedCaseID(Parameter.planned_action_id.ToString(), securityTicket); submitted_case_model_elastic.status = "FS6"; submitted_case_model_elastic.status_date = DateTime.Now; submitted_case_model_elastic.status_date_string = DateTime.Now.ToString("dd.MM.yyyy"); var cases_to_submit = new List <Submitted_Case_Model>(); cases_to_submit.Add(submitted_case_model_elastic); Add_New_Submitted_Case.Import_Submitted_Case_Data_to_ElasticDB(cases_to_submit, securityTicket.TenantID.ToString()); #endregion #region IMPORT SETTLEMENT TO ELASTIC var doctor_name = default(string); switch (Parameter.action_type) { case "op": if (treatment_doctor_details != null) { doctor_name = GenericUtils.GetDoctorName(treatment_doctor_details); } break; case "ac": if (aftercare_doctor_details != null) { doctor_name = GenericUtils.GetDoctorName(aftercare_doctor_details); } break; case "oct": if (oct_doctor_details != null) { doctor_name = GenericUtils.GetDoctorName(oct_doctor_details); } break; } var settlement = Get_Settlement.GetSettlementForID(Parameter.planned_action_id.ToString(), securityTicket); settlement.status = "FS6"; if (!String.IsNullOrEmpty(doctor_name)) { settlement.doctor = doctor_name; } settlement.patient_full_name = patient_details.patient_last_name + ", " + patient_details.patient_first_name; settlement.first_name = patient_details.patient_first_name; settlement.last_name = patient_details.patient_last_name; var settlements = new List <Settlement_Model>() { settlement }; Add_new_Settlement.Import_Settlement_to_ElasticDB(settlements, securityTicket.TenantID.ToString()); var patientDetailList = new List <PatientDetailViewModel>(); var patient_detail = Retrieve_Patients.Get_PatientDetaiForID(settlement.id, securityTicket); if (patient_detail != null) { patient_detail.doctor = doctor_name; patient_detail.status = settlement.status; patientDetailList.Add(patient_detail); Add_New_Patient.ImportPatientDetailsToElastic(patientDetailList, securityTicket.TenantID.ToString()); } #endregion returnValue.Result = result.ToArray(); } return(returnValue); #endregion UserCode }
protected static FR_L6BH_IAOKC_1356 Execute(DbConnection Connection, DbTransaction Transaction, P_L6BH_IAOKC_1356 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L6BH_IAOKC_1356(); returnValue.Result = new L6BH_IAOKC_1356(); List <L6BH_IAOKC_1356_ImportedConfirmations> ImportedAOKConfirmList = new List <L6BH_IAOKC_1356_ImportedConfirmations>(); returnValue.Result.ImportedConfirmations = ImportedAOKConfirmList.ToArray(); List <int> ProcessNumberDoNotExist = new List <int>(); returnValue.Result.ProcessNumberDoesNotExist = ProcessNumberDoNotExist.ToArray(); List <int> ProcessNumberCouldNotBeImported = new List <int>(); returnValue.Result.ProcessNumberCouldNotBeImported = ProcessNumberCouldNotBeImported.ToArray(); List <String> ListOfProcessNumbersToSetStatusConfirm = new List <String>(); List <int> ProcessNumberCouldNotBeChangedBack = new List <int>(); returnValue.Result.ProcessNumberCouldNotBeChangedBack = ProcessNumberCouldNotBeChangedBack.ToArray(); var patientList = cls_Get_PatientName_and_BillpositionID.Invoke(Connection, Transaction, securityTicket).Result.ToList(); foreach (var item in Parameter.ProcessNumberList) { if (item == String.Empty) { continue; } ListOfProcessNumbersToSetStatusConfirm.Add((Int64.Parse(item) % 10000000000).ToString()); } ListOfProcessNumbersToSetStatusConfirm.RemoveAll(r => String.IsNullOrEmpty(r.Trim())); var billPositionQuery = new ORM_BIL_BillPosition.Query(); billPositionQuery.Tenant_RefID = securityTicket.TenantID; billPositionQuery.IsDeleted = false; var allbillPositions = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, billPositionQuery).ToArray(); var activeStatusesQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); activeStatusesQuery.Tenant_RefID = securityTicket.TenantID; activeStatusesQuery.IsDeleted = false; activeStatusesQuery.IsActive = true; var allActiveStatuss = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, activeStatusesQuery).ToArray(); foreach (var processNumber in ListOfProcessNumbersToSetStatusConfirm) { var billPosition = allbillPositions.FirstOrDefault(p => p.External_PositionReferenceField == processNumber); if (billPosition != null) { var activeStatuss = allActiveStatuss.First(a => a.BillPosition_RefID == billPosition.BIL_BillPositionID); if (activeStatuss.TransmitionCode >= 3) { ProcessNumberCouldNotBeChangedBack.Add(Int32.Parse(processNumber)); } else { activeStatuss.IsActive = false; activeStatuss.IsDeleted = true; activeStatuss.Save(Connection, Transaction); //create status 3 var transmitionStatus = new ORM_BIL_BillPosition_TransmitionStatus(); transmitionStatus.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); transmitionStatus.BillPosition_RefID = billPosition.BIL_BillPositionID; transmitionStatus.TransmitionCode = 3; transmitionStatus.TransmittedOnDate = DateTime.Now; transmitionStatus.PrimaryComment = "AOK bestätigt"; transmitionStatus.SecondaryComment = "AOK bestätigt"; transmitionStatus.Tenant_RefID = securityTicket.TenantID; transmitionStatus.Creation_Timestamp = DateTime.Now; transmitionStatus.IsActive = true; transmitionStatus.Save(Connection, Transaction);//save // get Patient first and last name var patient = patientList.Where(p => p.BIL_BillPositionID == billPosition.BIL_BillPositionID).FirstOrDefault();; if (patient == null) { ProcessNumberCouldNotBeImported.Add(Int32.Parse(processNumber)); } else { L6BH_IAOKC_1356_ImportedConfirmations ImportedConfirmation = new L6BH_IAOKC_1356_ImportedConfirmations(); ImportedConfirmation.ProcessNumber = Int32.Parse(processNumber); ImportedConfirmation.Patient = patient.FirstName + " " + patient.LastName; ImportedAOKConfirmList.Add(ImportedConfirmation); } } } else { ProcessNumberDoNotExist.Add(Int32.Parse(processNumber)); } } returnValue.Result.ProcessNumberCouldNotBeChangedBack = ProcessNumberCouldNotBeChangedBack.ToArray(); returnValue.Result.ImportedConfirmations = ImportedAOKConfirmList.ToArray(); returnValue.Result.ProcessNumberDoesNotExist = ProcessNumberDoNotExist.ToArray(); returnValue.Result.ProcessNumberCouldNotBeImported = ProcessNumberCouldNotBeImported.ToArray(); return(returnValue); #endregion UserCode }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L6TR_PBD_1706 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Base(); if (Parameter.OutputData == null) { return(returnValue); } var treatmentIDs = Parameter.OutputData.Select(s => Guid.Parse(s.strTreatmentID)).Distinct().ToArray(); ORM_BIL_BillHeader header = ORM_BIL_BillHeader.Query.Search(Connection, Transaction, new ORM_BIL_BillHeader.Query() { Tenant_RefID = securityTicket.TenantID, BIL_BillHeaderID = Parameter.HeaderID }).Single(); ORM_BIL_BillHeaderExtension_EDIFACT edifact = new ORM_BIL_BillHeaderExtension_EDIFACT(); edifact.BIL_BillHeader_RefID = header.BIL_BillHeaderID; edifact.BIL_BillHeaderExtension_EDIFACTID = Guid.NewGuid(); edifact.EDIFACTCounter = Parameter.EdifactNumber; edifact.Tenant_RefID = securityTicket.TenantID; edifact.Modification_Timestamp = DateTime.Now; edifact.Save(Connection, Transaction); var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo; ci.NumberFormat.NumberDecimalSeparator = ","; foreach (var treatmentID in treatmentIDs) { bool IsArticleAdded = false; var treatment = ORM_HEC_Patient_Treatment.Query.Search(Connection, Transaction, new ORM_HEC_Patient_Treatment.Query() { Tenant_RefID = securityTicket.TenantID, HEC_Patient_TreatmentID = treatmentID }).Single(); treatment.IsTreatmentBilled = true; treatment.IfTreatmentBilled_Date = DateTime.Now; treatment.Modification_Timestamp = DateTime.Now; treatment.Save(Connection, Transaction); foreach (var item in Parameter.OutputData.Where(i => i.strTreatmentID == treatmentID.ToString()).ToList()) { ORM_BIL_BillPosition billPosition = new ORM_BIL_BillPosition(); billPosition.Tenant_RefID = securityTicket.TenantID; //billPosition.PositionIndex = i; billPosition.BIL_BilHeader_RefID = header.BIL_BillHeaderID; billPosition.BIL_BillPositionID = Guid.NewGuid(); billPosition.External_PositionCode = item.strGpos; billPosition.External_PositionReferenceField = item.iProcessNumber.ToString(); billPosition.PositionValue_IncludingTax = decimal.Parse(item.strChargedValue, ci); billPosition.Modification_Timestamp = DateTime.Now; switch (item.iTypeOfBillingPosition) { case 1: billPosition.External_PositionType = "Behandlung"; break; case 2: billPosition.External_PositionType = "Nachsorge"; break; case 3: billPosition.External_PositionType = "Behandlung | Nachsorge"; break; case 4: billPosition.External_PositionType = "Zusatzposition Bevacuzimab"; break; case 5: billPosition.External_PositionType = "Wartezeitenmanagement"; break; default: throw new Exception("Wrong bill position type!"); } billPosition.Save(Connection, Transaction); ORM_BIL_BillPosition_2_PatientTreatment p2t = new ORM_BIL_BillPosition_2_PatientTreatment(); p2t.AssignmentID = Guid.NewGuid(); p2t.Tenant_RefID = securityTicket.TenantID; p2t.BIL_BillPosition_RefID = billPosition.BIL_BillPositionID; p2t.HEC_Patient_Treatment_RefID = treatment.HEC_Patient_TreatmentID; p2t.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus billPositionTransmitionStatus = new ORM_BIL_BillPosition_TransmitionStatus(); billPositionTransmitionStatus.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); billPositionTransmitionStatus.BillPosition_RefID = billPosition.BIL_BillPositionID; billPositionTransmitionStatus.TransmitionCode = 2; billPositionTransmitionStatus.PrimaryComment = (String)HttpContext.GetGlobalResourceObject("Global", "TransferedToAOKStatus"); billPositionTransmitionStatus.IsActive = true; billPositionTransmitionStatus.Tenant_RefID = securityTicket.TenantID; billPositionTransmitionStatus.Creation_Timestamp = DateTime.Now; billPositionTransmitionStatus.TransmittedOnDate = DateTime.Now; billPositionTransmitionStatus.Save(Connection, Transaction); if (!treatment.IsTreatmentFollowup && item.aiRelevantArticle != null && !IsArticleAdded) { Guid articleID; if (Guid.TryParse(item.aiRelevantArticle.strArticleID, out articleID)) { IsArticleAdded = true; ORM_BIL_BillPosition_2_Product billToProduct1 = new ORM_BIL_BillPosition_2_Product(); billToProduct1.Tenant_RefID = securityTicket.TenantID; billToProduct1.Creation_Timestamp = DateTime.Now; billToProduct1.AssignmentID = Guid.NewGuid(); billToProduct1.BIL_BillPosition_RefID = billPosition.BIL_BillPositionID; billToProduct1.CMN_PRO_Product_RefID = articleID; billToProduct1.Quantity = item.aiRelevantArticle.iQuantity.ToString(); billToProduct1.Save(Connection, Transaction); } } } } return(returnValue); #endregion UserCode }
protected static FR_CAS_SPE_1805 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SPE_1805 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_CAS_SPE_1805(); returnValue.Result = new CAS_SPE_1805(); //Put your code here var case_id = Parameter.case_id; #region DATA var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = Parameter.patient_id }, securityTicket).Result; if (patient_details == null) { throw new Exception("Patient details not found for ID: " + Parameter.patient_id); } var doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query() { Tenant_RefID = securityTicket.TenantID, HEC_DoctorID = Parameter.doctor_id, IsDeleted = false }).SingleOrDefault(); if (doctor == null) { throw new Exception("Doctor not found for ID: " + Parameter.doctor_id); } var doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = Parameter.doctor_id }, securityTicket).Result.FirstOrDefault(); if (doctor_details == null) { throw new Exception("Doctor details not found for ID: " + Parameter.doctor_id); } var practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432() { PracticeID = doctor_details.practice_id }, securityTicket).Result.FirstOrDefault(); if (practice_details == null) { throw new Exception("Practice details not found for ID: " + doctor_details.practice_id); } var shouldDownloadReportProperty = cls_Get_Practice_PropertyValue_for_PropertyName_and_PracticeID.Invoke(Connection, Transaction, new P_DO_GPPVfPNaPID_0916() { PracticeID = doctor_details.practice_id, PropertyName = "Download Report Upon Submission" }, securityTicket).Result; var shouldDownloadReport = shouldDownloadReportProperty == null ? false : shouldDownloadReportProperty.BooleanValue; ORM_USR_Account.Query trigger_accQ = new ORM_USR_Account.Query(); trigger_accQ.Tenant_RefID = securityTicket.TenantID; trigger_accQ.USR_AccountID = securityTicket.AccountID; trigger_accQ.IsDeleted = false; ORM_USR_Account trigger_acc = ORM_USR_Account.Query.Search(Connection, Transaction, trigger_accQ).Single(); ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query(); all_languagesQ.Tenant_RefID = securityTicket.TenantID; all_languagesQ.IsDeleted = false; var all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray(); var intraocular_procedure_id = Guid.Empty; #endregion if (!Parameter.isResubmit) { #region NEW CASE ORM_HEC_CAS_Case new_case = new ORM_HEC_CAS_Case(); new_case.HEC_CAS_CaseID = Guid.NewGuid(); new_case.Creation_Timestamp = DateTime.Now; new_case.CreatedBy_BusinessParticipant_RefID = trigger_acc.BusinessParticipant_RefID; new_case.Patient_RefID = Parameter.patient_id; new_case.Patient_FirstName = patient_details.patient_first_name; new_case.Patient_LastName = patient_details.patient_last_name; new_case.Patient_Gender = patient_details.gender; new_case.Patient_BirthDate = patient_details.birthday; new_case.CaseNumber = cls_Get_Next_Case_Number.Invoke(Connection, Transaction, securityTicket).Result.case_number; new_case.Modification_Timestamp = DateTime.Now; DateTime today = DateTime.Today; int age = today.Year - patient_details.birthday.Year; if (patient_details.birthday > today.AddYears(-age)) { age--; } new_case.Patient_Age = age; new_case.Tenant_RefID = securityTicket.TenantID; new_case.Save(Connection, Transaction); case_id = new_case.HEC_CAS_CaseID; #endregion NEW CASE #region INITIAL PERFORMED ACTION var initial_performed_action_id = cls_Create_Initial_Performed_Action.Invoke(Connection, Transaction, new P_CAS_CIPA_1140() { all_languagesL = all_languagesL, case_id = new_case.HEC_CAS_CaseID, created_by_bpt = trigger_acc.BusinessParticipant_RefID, patient_id = Parameter.patient_id, practice_id = doctor_details.practice_id, action_type_gpmid = "mm.docconect.doc.app.performed.action.preexamination" }, securityTicket).Result; #endregion INITIAL PERFORMED ACTION #region LOCALIZATION ORM_HEC_DIA_Diagnosis_Localization diagnosis_localization = new ORM_HEC_DIA_Diagnosis_Localization(); diagnosis_localization.Modification_Timestamp = DateTime.Now; diagnosis_localization.Tenant_RefID = securityTicket.TenantID; diagnosis_localization.LocalizationCode = Parameter.localization; diagnosis_localization.Save(Connection, Transaction); ORM_HEC_ACT_PerformedAction_DiagnosisUpdate initial_performed_action_diagnose = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate(); initial_performed_action_diagnose.HEC_ACT_PerformedAction_RefID = initial_performed_action_id; initial_performed_action_diagnose.Modification_Timestamp = DateTime.Now; initial_performed_action_diagnose.Tenant_RefID = securityTicket.TenantID; initial_performed_action_diagnose.Save(Connection, Transaction); ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization initial_performed_action_diagnose_localization = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization(); initial_performed_action_diagnose_localization.HEX_EXC_Action_DiagnosisUpdate_RefID = initial_performed_action_diagnose.HEC_ACT_PerformedAction_DiagnosisUpdateID; initial_performed_action_diagnose_localization.HEC_DIA_Diagnosis_Localization_RefID = diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID; initial_performed_action_diagnose_localization.Modification_Timestamp = DateTime.Now; initial_performed_action_diagnose_localization.Tenant_RefID = securityTicket.TenantID; initial_performed_action_diagnose_localization.IM_PotentialDiagnosisLocalization_Code = Parameter.localization; initial_performed_action_diagnose_localization.Save(Connection, Transaction); #endregion #region PLANNED ACTION var action_gpmid = "mm.docconect.doc.app.planned.action.preexamination"; var planned_action_type = ORM_HEC_ACT_ActionType.Query.Search(Connection, Transaction, new ORM_HEC_ACT_ActionType.Query() { GlobalPropertyMatchingID = action_gpmid, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); if (planned_action_type == null) { planned_action_type = new ORM_HEC_ACT_ActionType(); planned_action_type.GlobalPropertyMatchingID = action_gpmid; planned_action_type.Modification_Timestamp = DateTime.Now; planned_action_type.Tenant_RefID = securityTicket.TenantID; planned_action_type.Save(Connection, Transaction); } // circular reference to same performed action in order to be compatible with treatment planned actions, // so that it can be accessed in the same way var preexamination_planned_action = new ORM_HEC_ACT_PlannedAction(); preexamination_planned_action.IfPlannedFollowup_PreviousAction_RefID = initial_performed_action_id; preexamination_planned_action.IsPerformed = true; preexamination_planned_action.IfPerformed_PerformedAction_RefID = initial_performed_action_id; preexamination_planned_action.MedicalPractice_RefID = doctor_details.practice_id; preexamination_planned_action.Modification_Timestamp = DateTime.Now; preexamination_planned_action.Patient_RefID = Parameter.patient_id; preexamination_planned_action.PlannedFor_Date = Parameter.date; preexamination_planned_action.ToBePerformedBy_BusinessParticipant_RefID = doctor.BusinessParticipant_RefID; preexamination_planned_action.Tenant_RefID = securityTicket.TenantID; preexamination_planned_action.Save(Connection, Transaction); var action_to_type = new ORM_HEC_ACT_PlannedAction_2_ActionType(); action_to_type.HEC_ACT_ActionType_RefID = planned_action_type.HEC_ACT_ActionTypeID; action_to_type.HEC_ACT_PlannedAction_RefID = preexamination_planned_action.HEC_ACT_PlannedActionID; action_to_type.Modification_Timestamp = DateTime.Now; action_to_type.Tenant_RefID = securityTicket.TenantID; action_to_type.Save(Connection, Transaction); #endregion #region GPOS var patient_consent = ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query.Search(Connection, Transaction, new ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query() { Patient_RefID = Parameter.patient_id, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).Where(t => { var ctrParameter = cls_Get_Contract_Parameter_Value_for_InsuranceToBrokerContractID.Invoke(Connection, Transaction, new P_MD_GCPVfITBCID_1647() { ParameterName = "Duration of participation consent – Month", InsuranceToBrokerContractID = t.InsuranceToBrokerContract_RefID }, securityTicket).Result; var validThrough = ctrParameter == null || ctrParameter.ConsentValidForMonths == double.MaxValue ? DateTime.MaxValue : t.ValidFrom.AddMonths(Convert.ToInt32(ctrParameter.ConsentValidForMonths)); return(t.ValidFrom <= Parameter.date && validThrough >= Parameter.date); }).OrderBy(t => t.ValidFrom).FirstOrDefault(); if (patient_consent == null) { throw new Exception("No patients consents found for selected date: " + Parameter.date.ToString("dd.MM.yyyy") + " and patient id: " + Parameter.patient_id); } var gpos_gpmid = "mm.docconnect.gpos.catalog.voruntersuchung"; var preexamination_gpos_catalog = ORM_HEC_BIL_PotentialCode_Catalog.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_Catalog.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, GlobalPropertyMatchingID = gpos_gpmid }).SingleOrDefault(); if (preexamination_gpos_catalog == null) { throw new Exception("Preexamination catalog not found."); } var gpos_connections_to_drugs = ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID); var gpos_connections_to_diagnoses = ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID); var preexamination_gposes = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, PotentialCode_Catalog_RefID = preexamination_gpos_catalog.HEC_BIL_PotentialCode_CatalogID }); var covered_gposes = ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query.Search(Connection, Transaction, new ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, InsuranceToBrokerContract_RefID = patient_consent.InsuranceToBrokerContract_RefID }); preexamination_gposes = preexamination_gposes.Where(t => covered_gposes.Any(c => c.PotentialBillCode_RefID == t.HEC_BIL_PotentialCodeID)).ToList(); var bill_header = new ORM_BIL_BillHeader(); bill_header.Modification_Timestamp = DateTime.Now; bill_header.Tenant_RefID = securityTicket.TenantID; foreach (var gpos in preexamination_gposes) { if (!gpos_connections_to_diagnoses.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID) && !gpos_connections_to_drugs.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID)) { var price_value = ORM_CMN_Price_Value.Query.Search(Connection, Transaction, new ORM_CMN_Price_Value.Query() { Price_RefID = gpos.Price_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).SingleOrDefault(); if (price_value == null) { throw new Exception("Price value not found for GPOS: " + gpos.BillingCode); } ORM_BIL_BillPosition gpos_position = new ORM_BIL_BillPosition(); gpos_position.BIL_BilHeader_RefID = bill_header.BIL_BillHeaderID; gpos_position.Modification_Timestamp = DateTime.Now; gpos_position.Tenant_RefID = securityTicket.TenantID; gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(price_value.PriceValue_Amount); gpos_position.PositionNumber = cls_Get_Next_Bill_Position_Number.Invoke(Connection, Transaction, securityTicket).Result.bill_position_number; gpos_position.Save(Connection, Transaction); ORM_BIL_BillPosition_TransmitionStatus fs_status = new ORM_BIL_BillPosition_TransmitionStatus(); fs_status.BillPosition_RefID = gpos_position.BIL_BillPositionID; fs_status.IsActive = true; fs_status.Modification_Timestamp = DateTime.Now; fs_status.Tenant_RefID = securityTicket.TenantID; fs_status.TransmitionCode = 1; fs_status.TransmitionStatusKey = "preexamination"; fs_status.TransmittedOnDate = DateTime.Now; fs_status.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition hec_gpos_position = new ORM_HEC_BIL_BillPosition(); hec_gpos_position.Ext_BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID; hec_gpos_position.Modification_Timestamp = DateTime.Now; hec_gpos_position.Tenant_RefID = securityTicket.TenantID; hec_gpos_position.PositionFor_Patient_RefID = Parameter.patient_id; hec_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition_BillCode hec_gpos_position_code = new ORM_HEC_BIL_BillPosition_BillCode(); hec_gpos_position_code.BillPosition_RefID = hec_gpos_position.HEC_BIL_BillPositionID; hec_gpos_position_code.IM_BillingCode = gpos.BillingCode; hec_gpos_position_code.Modification_Timestamp = DateTime.Now; hec_gpos_position_code.PotentialCode_RefID = gpos.HEC_BIL_PotentialCodeID; hec_gpos_position_code.Tenant_RefID = securityTicket.TenantID; hec_gpos_position_code.Save(Connection, Transaction); ORM_HEC_CAS_Case_BillCode hec_gpos_case_code = new ORM_HEC_CAS_Case_BillCode(); hec_gpos_case_code.HEC_BIL_BillPosition_BillCode_RefID = hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID; hec_gpos_case_code.HEC_CAS_Case_RefID = new_case.HEC_CAS_CaseID; hec_gpos_case_code.Modification_Timestamp = DateTime.Now; hec_gpos_case_code.Tenant_RefID = securityTicket.TenantID; hec_gpos_case_code.Save(Connection, Transaction); ORM_BIL_BillPosition_PropertyValue gpos_management_fee_property_value = new ORM_BIL_BillPosition_PropertyValue(); gpos_management_fee_property_value.BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID; gpos_management_fee_property_value.BIL_BillPosition_PropertyValueID = Guid.NewGuid(); gpos_management_fee_property_value.Creation_Timestamp = DateTime.Now; gpos_management_fee_property_value.Modification_Timestamp = DateTime.Now; gpos_management_fee_property_value.PropertyKey = "mm.doc.connect.management.fee"; gpos_management_fee_property_value.PropertyValue = "waived"; gpos_management_fee_property_value.Tenant_RefID = securityTicket.TenantID; gpos_management_fee_property_value.Save(Connection, Transaction); bill_header.TotalValue_IncludingTax += Convert.ToDecimal(price_value.PriceValue_Amount); } } bill_header.Save(Connection, Transaction); #endregion } return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_HOCT_1013 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here var oct_planned_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PlannedOct.Value() }, securityTicket).Result; var elastic_index = securityTicket.TenantID.ToString(); var oct_performed_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PerformedOct.Value() }, securityTicket).Result; var oct_doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query() { HEC_DoctorID = Parameter.oct_doctor_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); var patient_practice_name = cls_Get_Patient_PracticeName_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPPNfPID_1131() { PatientID = Parameter.patient_id }, securityTicket).Result; var current_treatment_year_start_date = DateTime.MaxValue; if (oct_doctor != null) { current_treatment_year_start_date = cls_Get_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GTY_1125() { Date = Parameter.treatment_date, LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id, }, securityTicket).Result; } else { current_treatment_year_start_date = cls_Get_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GTY_1125() { Date = Parameter.treatment_date, LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result; } var treatment_year_length = cls_Get_TreatmentYearLength.Invoke(Connection, Transaction, new P_CAS_GTYL_1317() { Date = Parameter.treatment_date, PatientID = Parameter.patient_id }, securityTicket).Result; var current_treatment_year_end_date = current_treatment_year_start_date.AddDays(treatment_year_length - 1); var oct_gpos_ids = cls_Get_GposIDs_for_GposType.Invoke(Connection, Transaction, new P_MD_GGpoIDsfGposT_1145() { GposType = EGposType.Oct.Value() }, securityTicket).Result; if (!oct_gpos_ids.Any()) { return(returnValue); } var last_potential_consent = cls_Get_Patient_Consents_before_Date_and_GposIDs.Invoke(Connection, Transaction, new P_PA_GPCbDaGposIDs_1154() { Date = Parameter.treatment_date.Date, GposIDs = oct_gpos_ids.Select(t => t.GposID).ToArray(), PatientID = Parameter.patient_id }, securityTicket).Result.FirstOrDefault(t => t.consent_valid_from.Date <= Parameter.treatment_date.Date); var latest_oct_planned_actions = cls_Get_Latest_PlannedActionID_for_PatientID_ActionTypeID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GLPAIDfPIDATIDaLC_1545() { ActionTypeID = oct_planned_action_type_id, LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result; if (last_potential_consent == null && Parameter.oct_doctor_id != Guid.Empty && latest_oct_planned_actions.Any(t => t.OpDate >= current_treatment_year_start_date.Date && t.OpDate < current_treatment_year_start_date.AddDays(treatment_year_length).Date)) { var latest_oct_planned_action_id = latest_oct_planned_actions.FirstOrDefault(t => t.CaseID != Parameter.case_id && t.OpDate >= current_treatment_year_start_date.Date && t.OpDate < current_treatment_year_start_date.AddDays(treatment_year_length).Date); if (latest_oct_planned_action_id == null) { latest_oct_planned_action_id = latest_oct_planned_actions.FirstOrDefault(t => t.CaseID == Parameter.case_id && t.OpDate >= current_treatment_year_start_date.Date && t.OpDate < current_treatment_year_start_date.AddDays(treatment_year_length).Date); } var latest_oct_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = latest_oct_planned_action_id.PlannedActionID }).Single(); } else { var case_properties = cls_Get_Case_Properties_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCPfCID_1204() { CaseID = Parameter.case_id }, securityTicket).Result; var oct_planned_action_id = cls_Get_Latest_PlannedActionID_for_CaseID_and_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GLPAIDfCIDaATID_1635() { ActionTypeID = oct_planned_action_type_id, CaseID = Parameter.case_id }, securityTicket).Result; #region Case creation if (!Parameter.is_submit) { var case_fs_statuses = cls_Get_Case_TransmitionCode_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCTCfCID_1427() { CaseID = Parameter.case_id }, securityTicket).Result; var op_submitted = case_fs_statuses.Any(t => t.gpos_type == EGposType.Operation.Value()); var latest_oct_planned_action_id = cls_Get_Latest_PlannedActionID_for_PatientID_ActionTypeID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GLPAIDfPIDATIDaLC_1545() { ActionTypeID = oct_planned_action_type_id, LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result.FirstOrDefault(t => t.CaseID != Parameter.case_id && t.OpDate >= current_treatment_year_start_date.Date && t.OpDate < current_treatment_year_start_date.AddDays(treatment_year_length).Date); var properties_to_delete = case_properties.Where(t => t.property_gpmid == ECaseProperty.WithdrawOct.Value() || t.property_gpmid == ECaseProperty.SubmitOctUntilDate.Value()); if (Parameter.withdraw_oct && latest_oct_planned_action_id != null) { var latest_oct_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = latest_oct_planned_action_id.PlannedActionID }).Single(); if (Parameter.submit_oct_until_date != DateTime.MinValue) { cls_Save_Case_Property.Invoke(Connection, Transaction, new P_CAS_SCP_1308() { case_id = Parameter.case_id, property_gpm_id = ECaseProperty.SubmitOctUntilDate.Value(), property_name = "Submit OCT until date", property_string_value = String.Format("{0};{1};{2};{3}", Parameter.submit_oct_until_date.ToString("yyyy-MM-ddTHH:mm:ss"), latest_oct_planned_action.ToBePerformedBy_BusinessParticipant_RefID, Parameter.localization, latest_oct_planned_action.HEC_ACT_PlannedActionID) }, securityTicket); properties_to_delete = properties_to_delete.Where(t => t.property_gpmid == ECaseProperty.WithdrawOct.Value()).ToList(); } else if (Parameter.withdraw_oct) { cls_Save_Case_Property.Invoke(Connection, Transaction, new P_CAS_SCP_1308() { case_id = Parameter.case_id, property_name = "Withdraw OCT", property_gpm_id = ECaseProperty.WithdrawOct.Value(), property_string_value = String.Format("{0}", latest_oct_planned_action.ToBePerformedBy_BusinessParticipant_RefID.ToString()) }, securityTicket); properties_to_delete = properties_to_delete.Where(t => t.property_gpmid == ECaseProperty.SubmitOctUntilDate.Value()).ToList(); } } foreach (var prop in properties_to_delete) { ORM_HEC_CAS_Case_UniversalPropertyValue.Query.SoftDelete(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query() { HEC_CAS_Case_UniversalPropertyValueID = prop.id }); } if (!op_submitted || Parameter.is_documentation) { if (oct_planned_action_id != null) { var latest_oct_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = oct_planned_action_id.PlannedActionID }).Single(); if (Parameter.oct_doctor_id == Guid.Empty) { latest_oct_planned_action.IsDeleted = true; } else { latest_oct_planned_action.ToBePerformedBy_BusinessParticipant_RefID = oct_doctor.BusinessParticipant_RefID; } latest_oct_planned_action.Modification_Timestamp = DateTime.Now; latest_oct_planned_action.Save(Connection, Transaction); returnValue.Result = latest_oct_planned_action.HEC_ACT_PlannedActionID; #region localization changed if (Parameter.localization_changed) { var old_localization = Parameter.localization == "L" ? "R" : "L"; var latest_new_localization_oct_bill_position = cls_Get_Existing_OCT_BillPosition_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GEBPfPIDaLC_1803() { LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result; var latest_old_localization_op = cls_Get_OpDates_for_PatientID_and_LocalizationCode_in_TreatmentYear.Invoke(Connection, Transaction, new P_CAS_GOpDfPIDaLCiTY_1110() { LocalizationCode = old_localization, PatientID = Parameter.patient_id, TreatmentYearEndDate = DateTime.Now }, securityTicket).Result.FirstOrDefault(); if (latest_new_localization_oct_bill_position != null && latest_new_localization_oct_bill_position.CaseID == Parameter.case_id) { if (latest_old_localization_op == null) { // check if case has pending oct var case_has_pending_oct = cls_Get_CaseIDs_with_Pending_Octs_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GCIDswPOctsfPIDaLC_1103() { LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result.Any(t => t.case_id == Parameter.case_id); if (case_has_pending_oct) { throw new Exception(String.Format("Case has a pending OCT attached and there isn't another IVOM to transfer OCT to. Localization cannot be changed. Case id: {0}", Parameter.case_id)); } } else { var case_details = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435() { CaseID = latest_old_localization_op.CaseID }, securityTicket).Result; cls_Calculate_Case_GPOS.Invoke(Connection, Transaction, new P_CAS_CCGPOS_1000() { case_id = latest_old_localization_op.CaseID, diagnose_id = case_details.diagnose_id, drug_id = case_details.drug_id, patient_id = case_details.patient_id, localization = case_details.localization, treatment_date = case_details.treatment_date, oct_doctor_id = Parameter.oct_doctor_id }, securityTicket); } } var new_localization_oct_bill_position = cls_Get_Existing_OCT_BillPosition_for_PatientID_and_LocalizationCode_where_not_CaseID.Invoke(Connection, Transaction, new P_CAS_GEBPfPIDaLCwnCID_1438() { CaseID = Parameter.case_id, PatientID = Parameter.patient_id, LocalizationCode = Parameter.localization }, securityTicket).Result; if (new_localization_oct_bill_position != null) { cls_Delete_BillingData_for_BillPositionID.Invoke(Connection, Transaction, new P_CAS_DBDfHBPID_1549() { bill_position_id = new_localization_oct_bill_position.BillPositionID }, securityTicket); } } #endregion } else if (Parameter.oct_doctor_id != Guid.Empty) { var existing_rejection_properties = cls_Get_Localizations_where_Oct_Rejected.Invoke(Connection, Transaction, new P_CAS_GLwOctR_1026() { PatientID = Parameter.patient_id, RejectedOctPropertyID = ECaseProperty.HasRejectedOct.Value() }, securityTicket).Result; foreach (var existing_rejection_property in existing_rejection_properties.Where(t => t.localization == Parameter.localization)) { ORM_HEC_CAS_Case_UniversalPropertyValue.Query.SoftDelete(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query() { HEC_CAS_Case_UniversalPropertyValueID = existing_rejection_property.property_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); } returnValue = cls_Create_OCT.Invoke(Connection, Transaction, new P_CAS_COCT_1703() { case_id = Parameter.case_id, oct_action_type_id = oct_planned_action_type_id, oct_bpt_id = oct_doctor.BusinessParticipant_RefID, patient_id = Parameter.patient_id, treatment_date = Parameter.treatment_date, practice_id = Parameter.oct_doctor_practice_id }, securityTicket); var existingBillPosition = cls_Get_Existing_OCT_BillPosition_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GEBPfPIDaLC_1803() { LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result; if (existingBillPosition == null) { cls_Calculate_Case_GPOS.Invoke(Connection, Transaction, new P_CAS_CCGPOS_1000() { case_id = Parameter.case_id, diagnose_id = Parameter.diagnose_id, drug_id = Parameter.drug_id, patient_id = Parameter.patient_id, localization = Parameter.localization, treatment_date = Parameter.treatment_date, oct_doctor_id = Parameter.oct_doctor_id }, securityTicket); } else { cls_Delete_BillingData_for_BillPositionID.Invoke(Connection, Transaction, new P_CAS_DBDfHBPID_1549() { bill_position_id = existingBillPosition.BillPositionID }, securityTicket); var isAutoGenerated = cls_Get_CasePropertyValue_for_CaseIDs_and_CasePropertyGpmID.Invoke(Connection, Transaction, new P_CAS_GCPVfCIDsaCGpmID_0832() { CaseIDs = new Guid[] { existingBillPosition.CaseID }, IncludeDeleted = true, PropertyGpmID = ECaseProperty.MissingIvom.Value() }, securityTicket).Result.Any(); var octIds = new List <Guid>(); if (isAutoGenerated) { var caseBillCodeIds = cls_Get_CaseBillCodeIDs_for_GposType_and_CaseID.Invoke(Connection, Transaction, new P_CAS_GCBCIDsfGposTaCID_1622() { CaseID = existingBillPosition.CaseID, OctGposType = EGposType.Oct.Value() }, securityTicket).Result; foreach (var caseBillCodeId in caseBillCodeIds) { var caseBillCode = new ORM_HEC_CAS_Case_BillCode(); caseBillCode.Load(Connection, Transaction, caseBillCodeId.HEC_CAS_Case_BillCodeID); caseBillCode.HEC_CAS_Case_RefID = Parameter.case_id; caseBillCode.Modification_Timestamp = DateTime.Now; caseBillCode.Save(Connection, Transaction); } var relevantActions = ORM_HEC_CAS_Case_RelevantPlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_RelevantPlannedAction.Query() { Case_RefID = existingBillPosition.CaseID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); foreach (var relevantAction in relevantActions) { relevantAction.Case_RefID = Parameter.case_id; relevantAction.Modification_Timestamp = DateTime.Now; relevantAction.Save(Connection, Transaction); octIds.Add(relevantAction.PlannedAction_RefID); } } cls_Calculate_Case_GPOS.Invoke(Connection, Transaction, new P_CAS_CCGPOS_1000() { case_id = Parameter.case_id, diagnose_id = Parameter.diagnose_id, drug_id = Parameter.drug_id, patient_id = Parameter.patient_id, localization = Parameter.localization, treatment_date = Parameter.treatment_date, oct_doctor_id = Parameter.oct_doctor_id }, securityTicket); } } } else if (Parameter.localization_changed) { var old_localization = Parameter.localization == "L" ? "R" : "L"; #region OCT e-mail var patient_consent_valid_for_months_parameter = cls_Get_ConsentValidForMonths_for_LatestConsent_before_TreatmentDate_for_PatientID.Invoke(Connection, Transaction, new P_PA_GCVfMfLCbTDfPID_0930() { PatientID = Parameter.patient_id, TreatmentDate = Parameter.treatment_date.Date }, securityTicket).Result; var performedOcts = cls_Get_NonCancelledOcts_in_OpRenewedConsentTimespan.Invoke(Connection, Transaction, new P_CAS_GNCOctsiOPRCT_1416() { PatientID = Parameter.patient_id, PlannedOctActionTypeID = oct_planned_action_type_id, ConsentStart = Parameter.treatment_date.Date, ConsentEnd = Parameter.treatment_date.Date.AddMonths(patient_consent_valid_for_months_parameter != null && patient_consent_valid_for_months_parameter.consent_valid_for_months < 200000 ? Convert.ToInt32(patient_consent_valid_for_months_parameter.consent_valid_for_months) : 12) }, securityTicket).Result.Where(t => t.localization == old_localization).ToList(); if (performedOcts.Any()) { 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 = cls_Get_Company_Settings.Invoke(Connection, Transaction, securityTicket).Result.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/TreatmentCancelledFromSettlementPageOctSubmittedEmailTemplate .html")); var subjectsJson = File.ReadAllText(HttpContext.Current.Server.MapPath("~/EmailTemplates/EmailSubjects.json")); dynamic subjects = JsonConvert.DeserializeObject(subjectsJson); var subjectMail = subjects["TreatmentCancelledFromSettlementPageSubject"].ToString(); var patient_information = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124() { PatientID = Parameter.patient_id }, securityTicket).Result; var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823() { DoctorID = Parameter.treatment_doctor_id }, securityTicket).Result.First(); email_template = EmailTemplater.SetTemplateData(email_template, new { patient_first_name = patient_information.patient_first_name, patient_last_name = patient_information.patient_last_name, treatment_date = Parameter.treatment_date.ToString("dd.MM.yyyy"), treatment_doctor_title = treatment_doctor_details.title, treatment_doctor_first_name = treatment_doctor_details.first_name, treatment_doctor_last_name = treatment_doctor_details.last_name, octs = performedOcts, mmapp_treatment_page_url = prefix + HttpContext.Current.Request.Url.Authority + "/" + appName + "/#/treatment", medios_connect_logo_url = imageUrl }, "{{", "}}"); try { string 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, "Cancel case from settlement: Email sending failed."), "EmailExceptions"); } } #endregion #region OCT withdrawal var existing_open_bill_position = cls_Get_Existing_OCT_BillPosition_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GEBPfCID_1522() { CaseID = Parameter.case_id }, securityTicket).Result; if (existing_open_bill_position != null) { var non_performed_oct = cls_Get_NonPerformed_Oct_for_CaseID_and_PlannedActionTypeID.Invoke(Connection, Transaction, new P_CAS_GNPOctfCIDaPATID_1240() { CaseID = Parameter.case_id, OctPlannedActionTypeID = oct_planned_action_type_id }, securityTicket).Result; var oct_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = non_performed_oct.action_id }).Single(); oct_planned_action.IsCancelled = true; oct_planned_action.Modification_Timestamp = DateTime.Now; oct_planned_action.Save(Connection, Transaction); var new_id = cls_Create_OCT.Invoke(Connection, Transaction, new P_CAS_COCT_1703() { case_id = Parameter.case_id, oct_action_type_id = oct_planned_action_type_id, oct_bpt_id = oct_doctor.BusinessParticipant_RefID, patient_id = Parameter.patient_id, practice_id = Parameter.oct_doctor_practice_id, treatment_date = Parameter.treatment_date }, securityTicket).Result; } #endregion } } #endregion #region Case submission else { var existingBillPosition = cls_Get_Existing_OCT_BillPosition_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GEBPfPIDaLC_1803() { LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result; if (existingBillPosition != null) { var oct_planned_actions = cls_Get_Latest_PlannedActionID_for_PatientID_ActionTypeID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GLPAIDfPIDATIDaLC_1545() { ActionTypeID = oct_planned_action_type_id, PatientID = Parameter.patient_id, LocalizationCode = Parameter.localization }, securityTicket).Result; var oct = new Oct_Model(); #region Magic // don't ask var i = 0; do { var oct_planned_action = oct_planned_actions[i++]; oct = Retrieve_Octs.GetOctForID(oct_planned_action.PlannedActionID.ToString(), elastic_index); returnValue.Result = oct_planned_action.PlannedActionID; } while (i < oct_planned_actions.Length && oct == null); #endregion if (oct != null) { if (case_properties.Any(t => t.property_gpmid == ECaseProperty.WithdrawOct.Value() || t.property_gpmid == ECaseProperty.SubmitOctUntilDate.Value())) { var withdraw_oct_property = case_properties.SingleOrDefault(t => t.property_gpmid == ECaseProperty.WithdrawOct.Value()); if (withdraw_oct_property != null) { var doctor_whose_oct_is_withdrawn_bpt_id = Guid.Parse(withdraw_oct_property.string_value); var planned_oct_to_withdraw = oct_planned_actions.First(t => t.CaseID != Parameter.case_id && t.DoctorBptID == doctor_whose_oct_is_withdrawn_bpt_id); var planned_oct_action = new ORM_HEC_ACT_PlannedAction(); planned_oct_action.Load(Connection, Transaction, planned_oct_to_withdraw.PlannedActionID); planned_oct_action.IsCancelled = true; planned_oct_action.Modification_Timestamp = DateTime.Now; planned_oct_action.Save(Connection, Transaction); } } else { var oct_doctor_bpt_id = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query() { HEC_DoctorID = Parameter.oct_doctor_id }).Single().BusinessParticipant_RefID; var oct_planned = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query() { HEC_ACT_PlannedActionID = returnValue.Result }).Single(); oct_planned.ToBePerformedBy_BusinessParticipant_RefID = oct_doctor_bpt_id; oct_planned.Modification_Timestamp = DateTime.Now; oct_planned.Save(Connection, Transaction); if (oct.status == "OCT6") { var case_with_pending_oct = cls_Get_CaseIDs_with_Pending_Octs_for_PatientID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GCIDswPOctsfPIDaLC_1103() { LocalizationCode = Parameter.localization, PatientID = Parameter.patient_id }, securityTicket).Result.SingleOrDefault(); if (case_with_pending_oct != null) { var fs_status = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { BIL_BillPosition_TransmitionStatusID = case_with_pending_oct.fs_status_id }).Single(); fs_status.IsActive = false; fs_status.Modification_Timestamp = DateTime.Now; fs_status.Save(Connection, Transaction); var new_fs_status = new ORM_BIL_BillPosition_TransmitionStatus(); new_fs_status.IsActive = true; new_fs_status.IsTransmitionStatusManuallySet = false; new_fs_status.BillPosition_RefID = fs_status.BillPosition_RefID; new_fs_status.Modification_Timestamp = DateTime.Now; new_fs_status.Tenant_RefID = securityTicket.TenantID; new_fs_status.TransmissionDataXML = fs_status.TransmissionDataXML; new_fs_status.TransmitionCode = 1; new_fs_status.TransmitionStatusKey = "oct"; new_fs_status.TransmittedOnDate = DateTime.Now; new_fs_status.Save(Connection, Transaction); } } } } } } #endregion } return(returnValue); #endregion UserCode }
protected static FR_CAS_CCS_1516 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCS_1516 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode #region Thread cultrue Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE"); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); var germanCulture = new CultureInfo("de-de"); #endregion #region Local variables var returnValue = new FR_CAS_CCS_1516(); returnValue.Result = new CAS_CCS_1516(); var settlements = new List <Settlement_Model>(); var patientDetailList = new List <PatientDetailViewModel>(); var cases_to_submit = new List <Submitted_Case_Model>(); var documents = new List <Documents>(); var statusChangedOnDate = Parameter.StatusChangedOnDate == DateTime.MinValue ? DateTime.Now : Parameter.StatusChangedOnDate; var DateForElastic = DateTime.Now; var cases = cls_Generate_Report.Invoke(Connection, Transaction, new P_CAS_GR_1608() { statuses = Parameter.StatusFrom == 2 ? new int[] { 2, 11 } : Parameter.StatusFrom == 4 ? new int[] { 4, 8, 10 } : new int[] { Convert.ToInt32(Parameter.StatusFrom) }, position_numbers = Parameter.PositionNumbers, updateCasesSubmittedBeforeDate = Parameter.UpdatedCasesSubmittedBeforeDate }, securityTicket).Result.cases; var earliestFsStatusDate = DateTime.MinValue; var latestFsStatusDate = DateTime.MinValue; #endregion #region Pre-fetched data // todo: write queries for ids! var activeFsStatuses = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { IsDeleted = false, IsActive = true, Tenant_RefID = securityTicket.TenantID, TransmitionCode = Convert.ToInt32(Parameter.StatusFrom) }).ToDictionary(t => t.BIL_BillPosition_TransmitionStatusID, t => t); var casesToUpdate = ORM_HEC_CAS_Case.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).ToDictionary(t => t.HEC_CAS_CaseID, t => t); #endregion foreach (var reportCase in cases) { if (Parameter.StatusTo == 7 && (reportCase.CurrentFsStatusCode == 8 || reportCase.CurrentFsStatusCode == 11 || reportCase.CurrentFsStatusCode == 17)) { continue; } #region Patient age calculation DateTime today = DateTime.Today; int patientAge = today.Year - reportCase.PatientBirthday.Year; if (reportCase.PatientBirthday > today.AddYears(-patientAge)) { patientAge--; } #endregion #region FS status update var caseActiveFsStatus = activeFsStatuses.ContainsKey(reportCase.TransmitionStatusID) ? activeFsStatuses[reportCase.TransmitionStatusID] : ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_TransmitionStatus.Query() { BIL_BillPosition_TransmitionStatusID = reportCase.TransmitionStatusID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); var responseFromHip = ""; if (Parameter.StatusTo == 5) { var edifact = new EDIFACT(); var edifactMessage = Parameter.EdifactMessage; var parser = new Parser(ref edifactMessage); EDIMessage.segmentArray = parser.GetSegments(); var parsedEdifact = EDIMessage.SegmentsToParsedEdifact(); var message = parsedEdifact.transmitionMessages.Single(t => Int32.Parse(t.Rgi.Segment5.Value.Split('K').Last()) == reportCase.InvoiceNumberForTheHIP); responseFromHip = String.Join("; ", message.Fhl.Select(t => t.Segment4.Value)); } if (!Parameter.AreCasesPaymentAndStatus) { if (caseActiveFsStatus.TransmittedOnDate.Date > latestFsStatusDate) { latestFsStatusDate = caseActiveFsStatus.TransmittedOnDate; } if (earliestFsStatusDate < caseActiveFsStatus.TransmittedOnDate.Date) { earliestFsStatusDate = caseActiveFsStatus.TransmittedOnDate; } caseActiveFsStatus.Modification_Timestamp = DateTime.Now; caseActiveFsStatus.IsActive = false; caseActiveFsStatus.Save(Connection, Transaction); var NewStatusForCase = new ORM_BIL_BillPosition_TransmitionStatus(); NewStatusForCase.Modification_Timestamp = DateTime.Now; NewStatusForCase.Tenant_RefID = securityTicket.TenantID; NewStatusForCase.BillPosition_RefID = caseActiveFsStatus.BillPosition_RefID; NewStatusForCase.TransmitionStatusKey = caseActiveFsStatus.TransmitionStatusKey; NewStatusForCase.TransmittedOnDate = statusChangedOnDate; NewStatusForCase.PrimaryComment = responseFromHip; NewStatusForCase.TransmitionCode = Convert.ToInt32(Parameter.StatusTo); NewStatusForCase.TransmissionDataXML = cls_Create_XML_for_Immutable_Fields.Invoke(Connection, Transaction, new P_CAS_CXFIF_0830() { DiagnosisCatalogCode = reportCase.DiagnoseCode, DiagnosisCatalogName = "ICD-10", IFPerformedMedicalPracticeName = reportCase.PracticeName, IFPerformedResponsibleBPFullName = reportCase.DocName, Localization = reportCase.Localization, PatientBirthDate = reportCase.PatientBirthday.ToString("dd.MM.yyyy"), PatientFirstName = reportCase.PatientFirstName, PatientGender = reportCase.PatientGender.ToString(), PatientAge = patientAge.ToString() }, securityTicket).Result.XmlFileString; if (caseActiveFsStatus.TransmitionCode == 11) { var cancellingStatus = new ORM_BIL_BillPosition_TransmitionStatus(); cancellingStatus.TransmitionCode = 8; cancellingStatus.BillPosition_RefID = caseActiveFsStatus.BillPosition_RefID; cancellingStatus.IsActive = true; cancellingStatus.Modification_Timestamp = DateTime.Now; cancellingStatus.Tenant_RefID = securityTicket.TenantID; cancellingStatus.TransmittedOnDate = statusChangedOnDate; cancellingStatus.TransmitionStatusKey = caseActiveFsStatus.TransmitionStatusKey; cancellingStatus.TransmissionDataXML = NewStatusForCase.TransmissionDataXML; cancellingStatus.Save(Connection, Transaction); } else { NewStatusForCase.IsActive = true; } NewStatusForCase.Save(Connection, Transaction); #region Elastic updates var elasticId = reportCase.UniqueID.ToString(); try { var submitted_case_model_elastic = Get_Submitted_Cases.GetSubmittedCaseforSubmittedCaseID(elasticId, securityTicket); var settlement = Get_Settlement.GetSettlementForID(elasticId, securityTicket); var patient_detail = Retrieve_Patients.Get_PatientDetaiForID(elasticId, securityTicket); var newStatus = ""; if (caseActiveFsStatus.TransmitionCode == 11) { newStatus = "FS8"; } else { newStatus = "FS" + Parameter.StatusTo; } submitted_case_model_elastic.status = newStatus; submitted_case_model_elastic.status_date = statusChangedOnDate; submitted_case_model_elastic.status_date_string = statusChangedOnDate.ToString("dd.MM.yyyy"); settlement.status = newStatus; settlement.status_date = statusChangedOnDate; patient_detail.status = newStatus; cases_to_submit.Add(submitted_case_model_elastic); settlements.Add(settlement); patientDetailList.Add(patient_detail); } catch { } #endregion } #endregion #region Immutable fields update var caseToUpdate = casesToUpdate[reportCase.CaseID]; caseToUpdate.Modification_Timestamp = DateTime.Now; caseToUpdate.Patient_BirthDate = reportCase.PatientBirthday; caseToUpdate.Patient_FirstName = reportCase.PatientFirstName; caseToUpdate.Patient_LastName = reportCase.PatientLastName; caseToUpdate.Patient_Gender = reportCase.PatientGender; caseToUpdate.Patient_Age = patientAge; caseToUpdate.Save(Connection, Transaction); #endregion } if (cases.Any()) { #region Edifact generation if (Parameter.StatusTo == 2) { var contracts = cases.GroupBy(i => i.ContractID).ToDictionary(t => t.Key, t => t.ToList()); var isTestData = false; try { isTestData = bool.Parse(WebConfigurationManager.AppSettings["edifact-generate-test-data"]); } catch { } var cmnContracts = ORM_CMN_CTR_Contract.Query.Search(Connection, Transaction, new ORM_CMN_CTR_Contract.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); foreach (var contract in contracts) { var contractID = contract.Key; var contractParameters = ORM_CMN_CTR_Contract_Parameter.Query.Search(Connection, Transaction, new ORM_CMN_CTR_Contract_Parameter.Query() { Contract_RefID = contractID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); var contractCharacteristicIDParameter = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.CharacteristicID.Value()); var edifactType = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.EdifactType.Value()); var encryptEdifactParameter = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.EncryptEdifact.Value()); var nextEdifactNumberParameter = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.NextEdifactNumber.Value()); var contractType = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.ContractType.Value()); var messageType = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.MessageType.Value()); var mergeForAllHips = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.MergeForAllHips.Value()); var useKForCorrection = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.UseKForCorrection.Value()); var IKNumber = contractParameters.SingleOrDefault(t => t.ParameterName == EContractParameter.IKNumber.Value()); var IKNumberValue = IKNumber != null ? IKNumber.IfStringValue_Value : contract.Value.First() != null?contract.Value.First().HIP_IK : ""; var mergeForAllHipsValue = mergeForAllHips != null ? mergeForAllHips.IfBooleanValue_Value : false; var useKForVorrectionValue = useKForCorrection != null ? useKForCorrection.IfBooleanValue_Value : true; var contactTypeValue = contractType != null ? contractType.IfStringValue_Value : "7"; var hipNameForMergedEdifact = mergeForAllHipsValue ? cls_Get_HIP_Name_for_HIP_IK_Number.Invoke(Connection, Transaction, new P_CAS_GHIPIKfHIPIKN_1207 { HIPIKNumber = IKNumberValue }, securityTicket).Result.Name : ""; var encryptEdifact = false; if (encryptEdifactParameter != null) { encryptEdifact = encryptEdifactParameter.IfBooleanValue_Value; } var contractCharacteristicID = "000000"; if (contractCharacteristicIDParameter != null) { contractCharacteristicID = contractCharacteristicIDParameter.IfStringValue_Value; } var controldocumentExcel = cls_Get_Number_of_Edifacts.Invoke(Connection, Transaction, new P_ARCH_GNoE_0910 { ContractID = contractID.ToString() }, securityTicket).Result; uint controlReference = 1; if (controldocumentExcel != null && (uint)controldocumentExcel.numberOfEdifacts > 0 && nextEdifactNumberParameter != null && nextEdifactNumberParameter.IfNumericValue_Value > 0) { controlReference = nextEdifactNumberParameter != null?Convert.ToUInt32(nextEdifactNumberParameter.IfNumericValue_Value) : 1; } var casesINContract = contract.Value; var hips = mergeForAllHipsValue ? new Dictionary <string, List <CaseForReportModel> >() { { "", casesINContract } } : casesINContract.GroupBy(i => i.HIP_IK).ToDictionary(t => t.Key, t => t.ToList()); foreach (var hip in hips) { var casesWithHIP_IK = hip.Value; var baseHipData = casesWithHIP_IK.First(); var mmIkNumber = Resources.InterchangeSenderID; var minTreatmentDate = baseHipData.TreatmentDay; var maxTreatmentDate = baseHipData.TreatmentDay; var ikNumberForHIP = mergeForAllHipsValue ? IKNumberValue : baseHipData.HIP_IK; var edi = new EDIFACT(); edi.mmIkNumber = mmIkNumber; edi.hipIkNumber = ikNumberForHIP; foreach (var _case in casesWithHIP_IK) { if (_case.TreatmentDay != DateTime.MinValue && _case.TreatmentDay < minTreatmentDate) { minTreatmentDate = _case.TreatmentDay; } if (_case.TreatmentDay != DateTime.MaxValue && _case.TreatmentDay > maxTreatmentDate) { maxTreatmentDate = _case.TreatmentDay; } } edi.Una = "UNA:+,? '\n"; var edifactVersion = 3; if (edifactType != null && edifactType.IfStringValue_Value == "4") { edifactVersion = 4; } edi.FileName = String.Format("{0}DRC0{1}", isTestData ? "T" : "E", controlReference.ToString("D3")); #region UNB edi.Unb.Segment1 = "UNOC"; edi.Unb.Segment2 = "3"; edi.Unb.Segment3 = mmIkNumber; edi.Unb.Segment4 = ikNumberForHIP; // todo: check if this date is always subtracted edi.Unb.Segment5 = DateTime.Now.AddDays(-1).ToString("yyyyMMdd"); edi.Unb.Segment6 = DateTime.Now.ToString("HHmm"); edi.Unb.Segment7 = controlReference.ToString("D5"); edi.Unb.Segment8 = String.Format("{0}DRC0{1}{2}", isTestData ? "T" : "E", controlReference.ToString("D2"), DateTime.Now.ToString("yyMM")); if (isTestData && edifactVersion == 4) { edi.Unb.Segment9 = "1"; } #endregion var referenceNumber = 1; foreach (var caseModel in casesWithHIP_IK) { var hipIkNumber = mergeForAllHipsValue ? IKNumberValue : caseModel.HIP_IK; var message = new TransmitionMessage(); var gender = "0"; var currentMessageNumber = String.Format("99{0}", referenceNumber.ToString("D8")); #region Gender switch (caseModel.PatientGender) { case 0: gender = "2"; break; case 1: gender = "1"; break; case 2: gender = "3"; break; } #endregion #region Version independent #region UNH message.Unh.Segment1 = currentMessageNumber; message.Unh.Segment2 = messageType != null ? messageType.IfStringValue_Value : "DIR73C"; message.Unh.Segment3 = edifactVersion.ToString(); message.Unh.Segment4 = "0"; message.Unh.Segment5 = "DR"; #endregion #region IVK message.Ivk.Segment1 = useKForVorrectionValue ? "10" : Convert.ToInt32(caseModel.NumberOfNegativeTry) > 0 ? "30" : "10"; message.Ivk.Segment2 = "01"; message.Ivk.Segment3 = mmIkNumber; message.Ivk.Segment4 = hipIkNumber; #endregion #region IBH message.Ibh.Segment1 = caseModel.LANR; message.Ibh.Segment2 = caseModel.BSNR; #endregion #region INF message.Inf.Segment1 = contractCharacteristicID; message.Inf.Segment2 = ""; message.Inf.Segment3 = "0"; message.Inf.Segment4 = contactTypeValue; #endregion #region INV message.Inv.Segment4 = caseModel.PatientInsuranceNumber; message.Inv.Segment5 = hipIkNumber; message.Inv.Segment6 = caseModel.PatientLastName; message.Inv.Segment7 = caseModel.PatientFirstName; message.Inv.Segment8 = caseModel.PatientBirthday.ToString("yyyyMMdd"); message.Inv.Segment9 = gender; #endregion #region DIA message.Dia.Segment1 = caseModel.DiagnoseCode; message.Dia.Segment2 = "G"; message.Dia.Segment3 = caseModel.Localization; #endregion #region ABR message.Abr.Segment1 = ""; message.Abr.Segment2 = caseModel.GPOS; message.Abr.Segment3 = ""; message.Abr.Segment4 = ""; message.Abr.Segment5 = "1"; message.Abr.Segment6 = caseModel.AmountForThisGPOS.ToString("F", germanCulture); message.Abr.Segment7 = ""; message.Abr.Segment8 = ""; message.Abr.Segment9 = ""; message.Abr.Segment10 = ""; message.Abr.Segment11 = caseModel.TreatmentDay.ToString("yyyyMMdd"); #endregion #region FKI message.Fki.Segment1 = caseModel.AmountForThisGPOS.ToString("F", germanCulture); message.Fki.Segment2 = ""; message.Fki.Segment3 = ""; message.Fki.Segment4 = ""; message.Fki.Segment5 = ""; message.Fki.Segment6 = ""; message.Fki.Segment7 = caseModel.AmountForThisGPOS.ToString("F", germanCulture); #endregion #region RGI message.Rgi.Segment1 = minTreatmentDate.ToString("yyyyMMdd"); message.Rgi.Segment2 = maxTreatmentDate.ToString("yyyyMMdd"); message.Rgi.Segment3 = "1"; message.Rgi.Segment4 = mmIkNumber; message.Rgi.Segment5 = useKForVorrectionValue && Convert.ToInt32(caseModel.NumberOfNegativeTry) > 0 ? String.Format("{0}K{1}", caseModel.NumberOfNegativeTry, caseModel.InvoiceNumberForTheHIP.ToString()) : caseModel.InvoiceNumberForTheHIP.ToString(); message.Rgi.Segment6 = DateTime.Now.ToString("yyyyMMdd"); message.Rgi.Segment7 = ""; message.Rgi.Segment8 = Convert.ToUInt32(caseModel.NumberOfNegativeTry).ToString("D3"); #endregion #region UNT message.Unt.Segment1 = "10"; message.Unt.Segment2 = currentMessageNumber; #endregion #endregion #region Version specific var InvSegment1Value = caseModel.PatientStatusNumber.Replace(" ", string.Empty); switch (edifactVersion) { case 3: message.Inv.Segment1 = InvSegment1Value.Length < 5 ? InvSegment1Value.Substring(0, 1) + "0001" : InvSegment1Value; message.Ivk.Segment5 = caseModel.InvoiceNumberForTheHIP.ToString(); break; case 4: message.Inv.Segment1 = InvSegment1Value.Substring(0, 1); message.Inv.Segment2 = ""; message.Inv.Segment3 = ""; message.Ivk.Segment5 = "99999999999999"; message.Ivk.Segment6 = hipIkNumber; break; default: break; } #endregion edi.transmitionMessages.Add(message); referenceNumber++; } #region UNZ edi.Unz.Segment1 = edi.transmitionMessages.Count.ToString(); edi.Unz.Segment2 = controlReference.ToString("D5"); #endregion var edifact = edi.GetEdifact(); var edi_path = System.IO.Path.GetTempPath() + edifact.edifactName; var i = 1; while (File.Exists(edi_path)) { edifact.edifactName = string.Format("{0}({1})", edifact.edifactName, i++); edi_path = System.IO.Path.GetTempPath() + edifact.edifactName; } File.WriteAllText(edi_path, edifact.edifactFileOutput); var fi = new FileInfo(edi_path); edi.decryptedFileSize = fi.Length; edi.encryptedFileSize = fi.Length; var aufFile = edi.GetAufFile(); var path_auf = System.IO.Path.GetTempPath() + aufFile.aufName; File.WriteAllText(path_auf, aufFile.aufFileOutput); var files = new List <string>(); files.Add(edi_path); files.Add(path_auf); var zipPath = System.IO.Path.GetTempPath() + edifact.edifactName + ".zip"; ZipFIlesUtils.AddToArchive(zipPath, files); var documentEdifact = new Documents(); documentEdifact.documentName = "Export von " + minTreatmentDate.ToString("dd.MM.yyyy") + " - " + maxTreatmentDate.ToString("dd.MM.yyyy"); documentEdifact.documentOutputLocation = zipPath; documentEdifact.ContractID = contractID; documentEdifact.receiver = mergeForAllHipsValue ? hipNameForMergedEdifact : casesWithHIP_IK[0].HIP; documentEdifact.mimeType = "Application/Edifact"; documents.Add(documentEdifact); controlReference++; } #region Update parameters cls_Save_Contract_Parameter.Invoke(Connection, Transaction, new P_MD_SCP_1754() { Name = EContractParameter.NextEdifactNumber.Value(), ContractID = contractID, NumericValue = Convert.ToDouble(controlReference) }, securityTicket); #endregion } } #endregion #region Excel report generation Documents documentExcel = new Documents(); documentExcel.documentName = "ExcelReport" + DateTime.Now.ToString("dd.MM.yyyy_HH.mm"); documentExcel.documentOutputLocation = GenerateReportCases.CreateCaseXlsReport(cases.ToList(), documentExcel.documentName); documentExcel.mimeType = UtilMethods.GetMimeType(documentExcel.documentOutputLocation); documentExcel.receiver = "MM"; documents.Add(documentExcel); #endregion #region Negative feedback edifact if (Parameter.StatusTo == 5 && !String.IsNullOrEmpty(Parameter.HipIkNumber)) { var files = new List <string>(); var edi_path = Path.GetTempPath() + Parameter.EdifactFileName; File.WriteAllText(edi_path, Parameter.EdifactMessage); files.Add(edi_path); var zipPath = Path.GetTempPath() + Parameter.EdifactFileName + ".zip"; ZipFIlesUtils.AddToArchive(zipPath, files); var errorEdifact = new Documents(); errorEdifact.documentName = String.Format("Import von {0} - {1}", earliestFsStatusDate.ToString("dd.MM.yyyy"), latestFsStatusDate.ToString("dd.MM.yyyy")); errorEdifact.documentOutputLocation = zipPath; errorEdifact.receiver = cls_Get_HIP_Name_for_HIP_IK_Number.Invoke(Connection, Transaction, new P_CAS_GHIPIKfHIPIKN_1207() { HIPIKNumber = Parameter.HipIkNumber }, securityTicket).Result.Name; errorEdifact.mimeType = "Application/Edifact_Error"; documents.Add(errorEdifact); } #endregion #region Document upload foreach (var document in documents) { var ms = new MemoryStream(File.ReadAllBytes(document.documentOutputLocation)); var byteArrayFile = ms.ToArray(); var _providerFactory = ProviderFactory.Instance; var documentProvider = _providerFactory.CreateDocumentServiceProvider(); var uploadedFrom = HttpContext.Current.Request.UserHostAddress; var documentID = documentProvider.UploadDocument(byteArrayFile, document.documentOutputLocation, securityTicket.SessionTicket, uploadedFrom); var downloadURL = documentProvider.GenerateImageThumbnailLink(documentID, securityTicket.SessionTicket, false, 200); var parameterDoc = new P_ARCH_UD_1326(); parameterDoc.DocumentID = documentID; parameterDoc.Mime = document.mimeType; parameterDoc.DocumentName = document.documentName; parameterDoc.DocumentDate = DateForElastic; parameterDoc.Receiver = document.receiver; parameterDoc.ContractID = document.ContractID; if (!Parameter.AreCasesFiltered) { if (parameterDoc.Mime == "Application/Edifact") { parameterDoc.Description = parameterDoc.DocumentName; } else { if (Parameter.AreCasesPositive) { parameterDoc.Description = "DATEV"; } else { parameterDoc.Description = "EDIFACT"; } } } else { if (Parameter.StatusTo == 5) { if (parameterDoc.Mime == "Application/Edifact_Error") { parameterDoc.Description = parameterDoc.DocumentName; } else { parameterDoc.Description = "KV Fehler"; } } else { parameterDoc.Description = "KV Import"; } } cls_Upload_Report.Invoke(Connection, Transaction, parameterDoc, securityTicket); } #endregion } #region Receipt pdf generation var create_pdf_report = false; try { create_pdf_report = Boolean.Parse(WebConfigurationManager.AppSettings["generateReceiptPdf"]); } catch { } if (create_pdf_report && Parameter.StatusTo == 7) { cls_Create_Pdf_Report.Invoke(Connection, Transaction, new P_CAS_CPR_1050() { cases = cases }, securityTicket); } #endregion #region Elastic import if (cases_to_submit.Count != 0) { Add_New_Submitted_Case.Import_Submitted_Case_Data_to_ElasticDB(cases_to_submit, securityTicket.TenantID.ToString()); } if (settlements.Count != 0) { Add_new_Settlement.Import_Settlement_to_ElasticDB(settlements, securityTicket.TenantID.ToString()); } if (patientDetailList.Count != 0) { Add_New_Patient.ImportPatientDetailsToElastic(patientDetailList, securityTicket.TenantID.ToString()); } #endregion returnValue.Result.caseList = cases.Select(t => new CaseLogObject() { BillPositionNumber = t.InvoiceNumberForTheHIP.ToString(), BillPositionType = t.CaseType, CaseNumber = t.CaseNumber.ToString() }).ToArray(); return(returnValue); #endregion UserCode }
protected static FR_L6BH_IAOKR_1652 Execute(DbConnection Connection, DbTransaction Transaction, P_L6BH_IAOKR_1652 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L6BH_IAOKR_1652(); returnValue.Result = new L6BH_IAOKR_1652(); List <L6BH_IAOKR_1652_ImportedErrors> importedErrorsList = new List <L6BH_IAOKR_1652_ImportedErrors>(); returnValue.Result.ImportedErrors = importedErrorsList.ToArray(); List <int> ProcessNumberDoNotExist = new List <int>(); returnValue.Result.ProcessNumberDoesNotExist = ProcessNumberDoNotExist.ToArray(); List <int> ProcessNumberCouldNotBeChangedBack = new List <int>(); returnValue.Result.ProcessNumberCouldNotBeChangedBack = ProcessNumberCouldNotBeChangedBack.ToArray(); foreach (var edifactFileLocation in Parameter.EdifactFileList.ToList()) { System.IO.StreamReader srInputFile = new System.IO.StreamReader(edifactFileLocation); EdifactInterface.Parser edifactFile = new EdifactInterface.Parser(srInputFile); var edifactFileList = edifactFile.getParsedPositions(); foreach (var treatment in edifactFileList) { var billPositionQuery = new ORM_BIL_BillPosition.Query(); billPositionQuery.Tenant_RefID = securityTicket.TenantID; billPositionQuery.IsDeleted = false; billPositionQuery.External_PositionReferenceField = (Int64.Parse(treatment.strProcessNumber) % 10000000000).ToString(); var billPosition = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, billPositionQuery).FirstOrDefault(); if (billPosition != null) { //find if there is a higher status then one to be updated var activeStatusesQuery = new ORM_BIL_BillPosition_TransmitionStatus.Query(); activeStatusesQuery.Tenant_RefID = securityTicket.TenantID; activeStatusesQuery.BillPosition_RefID = billPosition.BIL_BillPositionID; activeStatusesQuery.IsDeleted = false; activeStatusesQuery.IsActive = true; var activeStatuss = ORM_BIL_BillPosition_TransmitionStatus.Query.Search(Connection, Transaction, activeStatusesQuery).FirstOrDefault(); if (activeStatuss.TransmitionCode >= 4) { ProcessNumberCouldNotBeChangedBack.Add(Int32.Parse(treatment.strProcessNumber)); } else { activeStatuss.IsActive = false; activeStatuss.IsDeleted = true; activeStatuss.Save(Connection, Transaction); //create status 4 var transmitionStatus = new ORM_BIL_BillPosition_TransmitionStatus(); transmitionStatus.BIL_BillPosition_TransmitionStatusID = Guid.NewGuid(); transmitionStatus.BillPosition_RefID = billPosition.BIL_BillPositionID; transmitionStatus.TransmitionCode = 4; transmitionStatus.TransmittedOnDate = DateTime.Now; transmitionStatus.PrimaryComment = "AOK Fehlermeldung"; transmitionStatus.SecondaryComment = treatment.strErrorComment; transmitionStatus.Tenant_RefID = securityTicket.TenantID; transmitionStatus.Creation_Timestamp = DateTime.Now; transmitionStatus.IsActive = true; transmitionStatus.Save(Connection, Transaction);//save L6BH_IAOKR_1652_ImportedErrors errorMessage = new L6BH_IAOKR_1652_ImportedErrors(); errorMessage.Comment = treatment.strErrorComment; errorMessage.Patient = treatment.strPatientFirstName + " " + treatment.strPatientLastName; errorMessage.ProcessNumber = Int32.Parse(treatment.strProcessNumber); importedErrorsList.Add(errorMessage); } } else { ProcessNumberDoNotExist.Add(Int32.Parse(treatment.strProcessNumber)); } } } returnValue.Result.ProcessNumberCouldNotBeChangedBack = ProcessNumberCouldNotBeChangedBack.ToArray(); returnValue.Result.ImportedErrors = importedErrorsList.ToArray(); returnValue.Result.ProcessNumberDoesNotExist = ProcessNumberDoNotExist.ToArray(); return(returnValue); #endregion UserCode }