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_Guids Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CMFSfPAID_1502 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Guids(); List <Submitted_Case_Model> submitted_cases = new List <Submitted_Case_Model>(); // todo: update to support OCT foreach (var planned_action_id in Parameter.planned_action_ids) { var action_gpmid = cls_Get_PlannedActionType_GlobalPropertyMatchingID_for_PlannedActionID.Invoke(Connection, Transaction, new P_CAS_GPAGPMIDfPAID_1652() { PlannedActionID = planned_action_id }, securityTicket).Result.GlobalPropertyMatchingID; var is_treatment = action_gpmid == EActionType.PlannedOperation.Value(); 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 = 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 = 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 gpos_type = EGposType.Aftercare.Value(); if (action_gpmid == EActionType.PlannedOperation.Value()) { gpos_type = EGposType.Operation.Value(); } else if (action_gpmid == EActionType.PlannedOct.Value()) { gpos_type = EGposType.Oct.Value(); } var all_bill_positions = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = case_id }, securityTicket).Result; if (all_bill_positions.Any()) { List <CAS_GBPIDsfCID_0928> bill_positions_to_update = new List <CAS_GBPIDsfCID_0928>(); if (action_gpmid == EActionType.PlannedOperation.Value()) { bill_positions_to_update = all_bill_positions.Where(t => t.gpos_type == gpos_type).ToList(); } else if (action_gpmid == EActionType.PlannedOct.Value()) { 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 relevant_octs = cls_Get_RelevanActionIDs_for_CaseID_and_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GRAIDsfCIDaATID_1547() { CaseID = case_id, ActionTypeID = oct_planned_action_type_id }, securityTicket).Result; var index = -1; for (int i = 0; i < relevant_octs.Length; i++) { if (relevant_octs[i].action_id == planned_action_id) { index = i; break; } } var bill_positions = all_bill_positions.Where(t => t.gpos_type == EGposType.Oct.Value()).ToList(); var bill_position = bill_positions.Any() ? bill_positions[index] : bill_positions.First(); bill_positions_to_update.Add(bill_position); } else { var aftercare_planned_action_type_id = cls_Get_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GATID_1514() { action_type_gpmid = EActionType.PlannedAftercare.Value() }, securityTicket).Result; var relevant_aftercares = cls_Get_RelevanActionIDs_for_CaseID_and_ActionTypeID.Invoke(Connection, Transaction, new P_CAS_GRAIDsfCIDaATID_1547() { CaseID = case_id, ActionTypeID = aftercare_planned_action_type_id }, securityTicket).Result; var index = -1; for (int i = 0; i < relevant_aftercares.Length; i++) { if (relevant_aftercares[i].action_id == planned_action_id) { index = i; break; } } var bill_positions = all_bill_positions.Where(t => t.gpos_type == EGposType.Aftercare.Value()).ToList(); var bill_position = bill_positions.Any() ? bill_positions[index] : bill_positions.First(); bill_positions_to_update.Add(bill_position); foreach (var other_bill_position in bill_positions) { var update_bill_position_status = false; var any_covered_diagnoses = ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query() { HEC_BIL_PotentialCode_RefID = other_bill_position.gpos_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Any(); if (any_covered_diagnoses) { update_bill_position_status = ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query() { HEC_BIL_PotentialCode_RefID = other_bill_position.gpos_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Any(); } else { update_bill_position_status = true; } if (update_bill_position_status) { bill_positions_to_update.Add(other_bill_position); } } } foreach (var case_bill_position in bill_positions_to_update) { var gpos_management_fee_property_value = ORM_BIL_BillPosition_PropertyValue.Query.Search(Connection, Transaction, new ORM_BIL_BillPosition_PropertyValue.Query() { BIL_BillPosition_RefID = case_bill_position.bill_position_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false, PropertyKey = "mm.doc.connect.management.fee" }).SingleOrDefault(); if (gpos_management_fee_property_value == null) { gpos_management_fee_property_value = new ORM_BIL_BillPosition_PropertyValue(); gpos_management_fee_property_value.BIL_BillPosition_RefID = case_bill_position.bill_position_id; gpos_management_fee_property_value.PropertyKey = "mm.doc.connect.management.fee"; gpos_management_fee_property_value.Tenant_RefID = securityTicket.TenantID; } gpos_management_fee_property_value.PropertyValue = Parameter.is_management_fee_waived ? "waived" : "deducted"; gpos_management_fee_property_value.Modification_Timestamp = DateTime.Now; gpos_management_fee_property_value.Save(Connection, Transaction); } } var submitted_case = Get_Submitted_Cases.GetSubmittedCaseforSubmittedCaseID(planned_action_id.ToString(), securityTicket); submitted_case.management_pauschale = Parameter.is_management_fee_waived ? "waived" : "deducted"; submitted_cases.Add(submitted_case); } Add_New_Submitted_Case.Import_Submitted_Case_Data_to_ElasticDB(submitted_cases, securityTicket.TenantID.ToString()); return(returnValue); #endregion UserCode }