protected static FR_Guids Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCGPOS_1000 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guids(); Guid treatment_performed_action_type_id = Guid.Empty; var resultList = new List <Guid>(); 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; } var treatment_count = cls_Get_Treatment_Count_for_PatientID_And_DiagnoseID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GTCfPIDaDIDaLC_1008() { ActionTypeID = treatment_performed_action_type_id, DiagnoseID = Parameter.diagnose_id, PatientID = Parameter.patient_id, LocalizationCode = Parameter.localization, PerformedDate = Parameter.treatment_date == DateTime.MinValue ? DateTime.Now : Parameter.treatment_date }, securityTicket).Result; if (treatment_count != null) { treatment_count.treatment_count++; var contracts = cls_Get_InsuranceToBrokerContractID_for_DrugID_and_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GItBCIDfDIDaDID_1541() { DiagnoseID = Parameter.diagnose_id, DrugID = Parameter.drug_id, PatientID = Parameter.patient_id, TreatmentDate = DateTime.Now }, securityTicket).Result.OrderBy(ctr => ctr.patient_consent_valid_from); var contract = contracts.LastOrDefault(ctr => ctr.patient_consent_valid_from.Date <= Parameter.treatment_date); var contract_id = Guid.Empty; if (contract == null) { if (contracts.Any()) { contract = contracts.Last(); } else { var hip = cls_Get_Patient_Insurance_Data_for_PatientIDs.Invoke(Connection, Transaction, new P_PA_GPIDfPIDs_1002() { PatientIDs = new Guid[] { Parameter.patient_id } }, securityTicket).Result.First(); contract_id = cls_Get_Contracts_Where_Hip_Participating_for_HipID.Invoke(Connection, Transaction, new P_PA_GCwHipPfHipID_0954() { HipIkNumber = hip.HipIkNumber }, securityTicket).Result.Last().ContractID; } } else { contract_id = contract.contract_id; } if (!Parameter.should_update) { var gpos_details = cls_Get_All_GPOS_Details_for_ContractID.Invoke(Connection, Transaction, new P_CAS_GAGPOSDfCID_1754() { ContractID = contract_id }, securityTicket).Result; if (gpos_details.Length != 0) { var gpos_types = new List <string>(); if (Parameter.oct_doctor_id != Guid.Empty) { gpos_types.Add(EGposType.Oct.Value()); if (Parameter.treatment_doctor_id == Guid.Empty && Parameter.ac_doctor_id != Guid.Empty) { gpos_types.Add(EGposType.Aftercare.Value()); } } else { if (Parameter.treatment_doctor_id == Guid.Empty && Parameter.ac_doctor_id != Guid.Empty) { gpos_types.Add(EGposType.Aftercare.Value()); } else if (Parameter.diagnose_id != Guid.Empty) { gpos_types.Add(EGposType.Operation.Value()); gpos_types.Add(EGposType.Aftercare.Value()); } } foreach (var gpos_type in gpos_types) { foreach (var gpos_detail in gpos_details.Where(t => t.GposType == gpos_type)) { var covered_drugs = ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query() { HEC_BIL_PotentialCode_RefID = gpos_detail.GposID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Select(covered_drug => covered_drug.HEC_Product_RefID); var covered_diagnoses = ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query() { HEC_BIL_PotentialCode_RefID = gpos_detail.GposID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Select(covered_diagnose => covered_diagnose.HEC_DIA_PotentialDiagnosis_RefID); var drug_condition = covered_drugs.Any() ? covered_drugs.Any(t => t == Parameter.drug_id) : true; var diagnose_condition = covered_diagnoses.Any() ? covered_diagnoses.Any(t => t == Parameter.diagnose_id) : true; bool treatment_count_condition = gpos_detail.FromInjection > 1000000; if (covered_drugs.Any() && covered_diagnoses.Any()) { var gpos_details_for_drug_diagnose_combo = cls_Get_GPOS_Details_for_DiagnoseID_and_DrugID.Invoke(Connection, Transaction, new P_CAS_GGPOSDfDIDaDID_1033() { ContractID = contract_id, DiagnoseID = Parameter.diagnose_id, DrugID = Parameter.drug_id }, securityTicket).Result; treatment_count_condition = treatment_count.treatment_count >= gpos_detail.FromInjection && !gpos_details_for_drug_diagnose_combo.Any(gpos => treatment_count.treatment_count >= gpos.injection_from && gpos.injection_from > gpos_detail.FromInjection && gpos.gpos_type == gpos_type); } var gpos_condition = drug_condition && diagnose_condition && treatment_count_condition; if (gpos_condition) { ORM_BIL_BillPosition gpos_position = new ORM_BIL_BillPosition(); gpos_position.BIL_BilHeader_RefID = Guid.Empty; gpos_position.BIL_BillPositionID = Guid.NewGuid(); gpos_position.Creation_Timestamp = DateTime.Now; gpos_position.Modification_Timestamp = DateTime.Now; gpos_position.Tenant_RefID = securityTicket.TenantID; gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(gpos_detail.GposPrice); gpos_position.Save(Connection, Transaction); resultList.Add(gpos_position.BIL_BillPositionID); ORM_HEC_BIL_BillPosition hec_gpos_position = new ORM_HEC_BIL_BillPosition(); hec_gpos_position.Creation_Timestamp = DateTime.Now; hec_gpos_position.Ext_BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID; hec_gpos_position.HEC_BIL_BillPositionID = Guid.NewGuid(); 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.Creation_Timestamp = DateTime.Now; hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID = Guid.NewGuid(); hec_gpos_position_code.IM_BillingCode = gpos_detail.GposNumber; hec_gpos_position_code.Modification_Timestamp = DateTime.Now; hec_gpos_position_code.PotentialCode_RefID = gpos_detail.GposID; 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.Creation_Timestamp = DateTime.Now; hec_gpos_case_code.HEC_BIL_BillPosition_BillCode_RefID = hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID; hec_gpos_case_code.HEC_CAS_Case_BillCodeID = Guid.NewGuid(); hec_gpos_case_code.HEC_CAS_Case_RefID = Parameter.case_id; hec_gpos_case_code.Modification_Timestamp = DateTime.Now; hec_gpos_case_code.Tenant_RefID = securityTicket.TenantID; hec_gpos_case_code.Save(Connection, Transaction); } } } } } else { // TODO: fix update - beva -> no beva and such var bill_position_ids = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = Parameter.case_id }, securityTicket).Result; var gpos_details = cls_Get_GPOS_Details_for_DiagnoseID_and_DrugID.Invoke(Connection, Transaction, new P_CAS_GGPOSDfDIDaDID_1033() { ContractID = contract_id, DiagnoseID = Parameter.diagnose_id, DrugID = Parameter.drug_id }, securityTicket).Result; if (gpos_details.Length != 0 && bill_position_ids.Length != 0) { bill_position_ids = bill_position_ids.Where(bp => ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query() { HEC_BIL_PotentialCode_RefID = bp.gpos_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Count != 0 && ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query() { HEC_BIL_PotentialCode_RefID = bp.gpos_id, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Count != 0).ToArray(); foreach (var id in bill_position_ids) { foreach (var gpos_detail in gpos_details) { if (id.gpos_type == gpos_detail.gpos_type) { if (treatment_count.treatment_count >= gpos_detail.injection_from && !gpos_details.Any(gpos => treatment_count.treatment_count >= gpos.injection_from && gpos.injection_from > gpos_detail.injection_from && gpos.gpos_type == id.gpos_type)) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(gpos_detail.gpos_price); old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_detail.gpos_code; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_detail.gpos_id; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } } } } } } returnValue.Result = resultList.ToArray(); return(returnValue); #endregion UserCode }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_UCGPOS_1516 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Base(); //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(); #region CONSTANTS const decimal OZURDEX_TREATMENT_FEE = 230; const decimal OZURDEX_AFTERCARE_FEE = 150; const decimal TREATMENT_FEE = 230; const decimal AFTERCARE_FEE = 60; #endregion 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; } ORM_HEC_BIL_PotentialCode.Query gpos_codeQ = new ORM_HEC_BIL_PotentialCode.Query(); gpos_codeQ.Tenant_RefID = securityTicket.TenantID; gpos_codeQ.IsDeleted = false; ORM_HEC_Product.Query hec_drug_detailsQ = new ORM_HEC_Product.Query(); hec_drug_detailsQ.HEC_ProductID = Parameter.drug_id; hec_drug_detailsQ.Tenant_RefID = securityTicket.TenantID; hec_drug_detailsQ.IsDeleted = false; var hec_drug_details = ORM_HEC_Product.Query.Search(Connection, Transaction, hec_drug_detailsQ).SingleOrDefault(); if (hec_drug_details != null) { ORM_CMN_PRO_Product.Query cmn_drug_detailsQ = new ORM_CMN_PRO_Product.Query(); cmn_drug_detailsQ.Tenant_RefID = securityTicket.TenantID; cmn_drug_detailsQ.CMN_PRO_ProductID = hec_drug_details.Ext_PRO_Product_RefID; cmn_drug_detailsQ.IsDeleted = false; var cmn_drug_details = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, cmn_drug_detailsQ).SingleOrDefault(); if (cmn_drug_details != null) { var drug_name = cmn_drug_details.Product_Name.GetContent(Parameter.all_languagesL.FirstOrDefault().CMN_LanguageID); var gpos_diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1357() { DiagnoseID = Parameter.diagnose_id }, securityTicket).Result; if (gpos_diagnose_details != null) { var treatment_count = cls_Get_Treatment_Count_for_PatientID_And_DiagnoseID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GTCfPIDaDIDaLC_1008() { ActionTypeID = treatment_performed_action_type_id, DiagnoseID = Parameter.diagnose_id, PatientID = Parameter.patient_id, LocalizationCode = Parameter.localization, PerformedDate = DateTime.Now }, securityTicket).Result; if (treatment_count != null) { var bill_position_ids = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = Parameter.case_id }, securityTicket).Result; foreach (var id in bill_position_ids) { var billing_code = cls_Get_BillingCode_for_CaseBillCodeID.Invoke(Connection, Transaction, new P_CAS_GBCfCBCID_1334() { CaseBillCodeID = id.hec_case_bill_code_id }, securityTicket).Result; if (billing_code != null) { #region ICD H34.8 if (gpos_diagnose_details.diagnose_icd_10.Equals("H34.8")) { #region Ozurdex position if (drug_name.Equals("Ozurdex")) { if (treatment_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 1 ? "36620055" : "36620056"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = OZURDEX_TREATMENT_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } if (aftercare_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 1 ? "36620063" : "36620064"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = OZURDEX_AFTERCARE_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } } #endregion #region Other drugs else { if (treatment_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 3 ? "36620053" : "36620054"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = TREATMENT_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } if (aftercare_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 3 ? "36620061" : "36620062"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = AFTERCARE_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } } #endregion } #endregion ICD H34.8 #region ICD H35.3 or H36.0 else if (gpos_diagnose_details.diagnose_icd_10.Equals("H35.3") || gpos_diagnose_details.diagnose_icd_10.Equals("H36.0")) // H35.3 or H36.0 { if (treatment_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 3 ? "36620050" : treatment_count.treatment_count - 1 < 6 ? "36620051" : "36620052"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = TREATMENT_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } if (aftercare_gpos.Contains(billing_code.BillingCode)) { gpos_codeQ.BillingCode = treatment_count.treatment_count - 1 < 3 ? "36620058" : treatment_count.treatment_count - 1 < 6 ? "36620059" : "36620060"; var gpos_code = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, gpos_codeQ).SingleOrDefault(); if (gpos_code != null) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = AFTERCARE_FEE; old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_code.BillingCode; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_code.HEC_BIL_PotentialCodeID; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } } #endregion } } } } } } return(returnValue); #endregion UserCode }
protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CCGPOS_1000 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Base(); 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; } ORM_HEC_Product.Query hec_drug_detailsQ = new ORM_HEC_Product.Query(); hec_drug_detailsQ.HEC_ProductID = Parameter.drug_id; hec_drug_detailsQ.Tenant_RefID = securityTicket.TenantID; hec_drug_detailsQ.IsDeleted = false; var hec_drug_details = ORM_HEC_Product.Query.Search(Connection, Transaction, hec_drug_detailsQ).SingleOrDefault(); if (hec_drug_details != null) { ORM_CMN_PRO_Product.Query cmn_drug_detailsQ = new ORM_CMN_PRO_Product.Query(); cmn_drug_detailsQ.Tenant_RefID = securityTicket.TenantID; cmn_drug_detailsQ.CMN_PRO_ProductID = hec_drug_details.Ext_PRO_Product_RefID; cmn_drug_detailsQ.IsDeleted = false; var cmn_drug_details = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, cmn_drug_detailsQ).SingleOrDefault(); if (cmn_drug_details != null) { var drug_name = cmn_drug_details.Product_Name.GetContent(Parameter.all_languagesL.FirstOrDefault().CMN_LanguageID); var treatment_count = cls_Get_Treatment_Count_for_PatientID_And_DiagnoseID_and_LocalizationCode.Invoke(Connection, Transaction, new P_CAS_GTCfPIDaDIDaLC_1008() { ActionTypeID = treatment_performed_action_type_id, DiagnoseID = Parameter.diagnose_id, PatientID = Parameter.patient_id, LocalizationCode = Parameter.localization, PerformedDate = Parameter.treatment_date == DateTime.MinValue ? DateTime.Now : Parameter.treatment_date }, securityTicket).Result; if (treatment_count != null) { treatment_count.treatment_count++; var contracts = cls_Get_InsuranceToBrokerContractID_for_DrugID_and_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GItBCIDfDIDaDID_1541() { DiagnoseID = Parameter.diagnose_id, DrugID = Parameter.drug_id, PatientID = Parameter.patient_id, TreatmentDate = Parameter.treatment_date }, securityTicket).Result; var contract_id = contracts.Where(ctr => ctr.patient_consent_valid_from.AddMonths(ctr.contract_consent_valid_for_months) >= Parameter.treatment_date).OrderBy(ctr => ctr.patient_consent_valid_from).FirstOrDefault(); if (contract_id != null) { var gpos_details = cls_Get_GPOS_Details_for_DiagnoseID_and_DrugID.Invoke(Connection, Transaction, new P_CAS_GGPOSDfDIDaDID_1033() { DiagnoseID = Parameter.diagnose_id, DrugID = Parameter.drug_id, ContractID = contract_id.contract_id }, securityTicket).Result; if (gpos_details.Length != 0) { if (!Parameter.should_update) { List <string> gpos_types = new List <string>(); if (Parameter.treatment_doctor_id != Guid.Empty) { gpos_types.Add("mm.docconnect.gpos.catalog.operation"); } if (Parameter.ac_doctor_id != Guid.Empty) { gpos_types.Add("mm.docconnect.gpos.catalog.nachsorge"); } if (drug_name.Contains("Bevacizumab") && Parameter.treatment_doctor_id != Guid.Empty) { gpos_types.Add("mm.docconnect.gpos.catalog.zusatzposition.bevacizumab"); } if (Parameter.treatment_doctor_id != Guid.Empty) { gpos_types.Add("mm.docconnect.gpos.catalog.wartezeitenmanagement"); } foreach (var gpos_type in gpos_types) { foreach (var gpos_detail in gpos_details) { if (gpos_detail.gpos_type == gpos_type) { bool gpos_condition = gpos_type == "mm.docconnect.gpos.catalog.operation" || gpos_type == "mm.docconnect.gpos.catalog.nachsorge" ? treatment_count.treatment_count >= gpos_detail.injection_from && !gpos_details.Any(gpos => treatment_count.treatment_count >= gpos.injection_from && gpos.injection_from > gpos_detail.injection_from && gpos.gpos_type == gpos_type) : true; if (gpos_condition) { ORM_BIL_BillPosition gpos_position = new ORM_BIL_BillPosition(); gpos_position.BIL_BilHeader_RefID = Guid.Empty; gpos_position.BIL_BillPositionID = Guid.NewGuid(); gpos_position.Creation_Timestamp = DateTime.Now; gpos_position.Modification_Timestamp = DateTime.Now; gpos_position.Tenant_RefID = securityTicket.TenantID; gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(gpos_detail.gpos_price); gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition hec_gpos_position = new ORM_HEC_BIL_BillPosition(); hec_gpos_position.Creation_Timestamp = DateTime.Now; hec_gpos_position.Ext_BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID; hec_gpos_position.HEC_BIL_BillPositionID = Guid.NewGuid(); 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.Creation_Timestamp = DateTime.Now; hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID = Guid.NewGuid(); hec_gpos_position_code.IM_BillingCode = gpos_detail.gpos_code; hec_gpos_position_code.Modification_Timestamp = DateTime.Now; hec_gpos_position_code.PotentialCode_RefID = gpos_detail.gpos_id; 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.Creation_Timestamp = DateTime.Now; hec_gpos_case_code.HEC_BIL_BillPosition_BillCode_RefID = hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID; hec_gpos_case_code.HEC_CAS_Case_BillCodeID = Guid.NewGuid(); hec_gpos_case_code.HEC_CAS_Case_RefID = Parameter.case_id; hec_gpos_case_code.Modification_Timestamp = DateTime.Now; hec_gpos_case_code.Tenant_RefID = securityTicket.TenantID; hec_gpos_case_code.Save(Connection, Transaction); } } } } } else { var bill_position_ids = cls_Get_BillPositionIDs_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GBPIDsfCID_0928() { CaseID = Parameter.case_id }, securityTicket).Result; foreach (var id in bill_position_ids) { foreach (var gpos_detail in gpos_details) { if (id.gpos_type == "mm.docconnect.gpos.catalog.operation" || id.gpos_type == "mm.docconnect.gpos.catalog.nachsorge") { if (id.gpos_type == gpos_detail.gpos_type) { if (treatment_count.treatment_count >= gpos_detail.injection_from && !gpos_details.Any(gpos => treatment_count.treatment_count >= gpos.injection_from && gpos.injection_from > gpos_detail.injection_from)) { ORM_BIL_BillPosition.Query old_gpos_positionQ = new ORM_BIL_BillPosition.Query(); old_gpos_positionQ.BIL_BillPositionID = id.bill_position_id; old_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_gpos_positionQ.IsDeleted = false; var old_gpos_position = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, old_gpos_positionQ).SingleOrDefault(); if (old_gpos_position != null) { old_gpos_position.Modification_Timestamp = DateTime.Now; old_gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(gpos_detail.gpos_price); old_gpos_position.Save(Connection, Transaction); ORM_HEC_BIL_BillPosition.Query old_hec_gpos_positionQ = new ORM_HEC_BIL_BillPosition.Query(); old_hec_gpos_positionQ.Ext_BIL_BillPosition_RefID = old_gpos_position.BIL_BillPositionID; old_hec_gpos_positionQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_positionQ.PositionFor_Patient_RefID = Parameter.patient_id; old_hec_gpos_positionQ.IsDeleted = false; var old_hec_gpos_position = ORM_HEC_BIL_BillPosition.Query.Search(Connection, Transaction, old_hec_gpos_positionQ).SingleOrDefault(); if (old_hec_gpos_position != null) { ORM_HEC_BIL_BillPosition_BillCode.Query old_hec_gpos_position_codeQ = new ORM_HEC_BIL_BillPosition_BillCode.Query(); old_hec_gpos_position_codeQ.Tenant_RefID = securityTicket.TenantID; old_hec_gpos_position_codeQ.BillPosition_RefID = old_hec_gpos_position.HEC_BIL_BillPositionID; old_hec_gpos_position_codeQ.IsDeleted = false; var old_hec_gpos_position_code = ORM_HEC_BIL_BillPosition_BillCode.Query.Search(Connection, Transaction, old_hec_gpos_position_codeQ).SingleOrDefault(); if (old_hec_gpos_position_code != null) { old_hec_gpos_position_code.IM_BillingCode = gpos_detail.gpos_code; old_hec_gpos_position_code.Modification_Timestamp = DateTime.Now; old_hec_gpos_position_code.PotentialCode_RefID = gpos_detail.gpos_id; old_hec_gpos_position_code.Save(Connection, Transaction); } } } } } } } } } } } } } } return(returnValue); #endregion UserCode }