protected static FR_L6TR_BT_2204 Execute(DbConnection Connection, DbTransaction Transaction, P_L6TR_BT_2204 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L6TR_BT_2204(); returnValue.Result = new L6TR_BT_2204(); ORM_BIL_BillHeader header = new ORM_BIL_BillHeader(); long previousMaxPositionIndex = Parameter.previousMaxPositionIndex; #region persistHeader if (Parameter.isNewBilling) { header.Tenant_RefID = securityTicket.TenantID; header.BIL_BillHeaderID = Guid.NewGuid(); var tenantHeaders = ORM_BIL_BillHeader.Query.Search(Connection, Transaction, new ORM_BIL_BillHeader.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).ToArray(); tenantHeaders = tenantHeaders.OrderBy(t => t.Creation_Timestamp).ToArray(); var headersForThisYear = tenantHeaders.Where(h => h.Creation_Timestamp.Year == DateTime.Now.Year).ToArray(); int prevMaxHeaderNumber = 0; if (headersForThisYear.Length > 0) { ORM_BIL_BillHeader prevHeader = null; foreach (var headerTY in headersForThisYear) { int hn = 0; if (int.TryParse(headerTY.BillNumber, out hn) && prevMaxHeaderNumber <= hn) { prevMaxHeaderNumber = hn; prevHeader = headerTY; } } if (prevHeader != null) { var positionQuery = new ORM_BIL_BillPosition.Query(); positionQuery.Tenant_RefID = securityTicket.TenantID; positionQuery.BIL_BilHeader_RefID = prevHeader.BIL_BillHeaderID; var prevPositions = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, positionQuery).ToArray(); if (prevPositions != null && prevPositions.Length > 0) { foreach (var prevPosition in prevPositions) { long number = 0; if (long.TryParse(prevPosition.External_PositionReferenceField, out number) && previousMaxPositionIndex < number) { previousMaxPositionIndex = number; } } } } } header.BillNumber = prevMaxHeaderNumber + 1 + ""; if (Parameter.billTreatments) { header.Save(Connection, Transaction); } } else { header.Tenant_RefID = securityTicket.TenantID; header.BIL_BillHeaderID = Parameter.ifOldBillingHeaderID; header.BillNumber = Parameter.ifOldBillingHeaderNumber; } //new edifact entry ORM_BIL_BillHeaderExtension_EDIFACT.Query edifactQuery = new ORM_BIL_BillHeaderExtension_EDIFACT.Query(); edifactQuery.Tenant_RefID = securityTicket.TenantID; var edifactRes = ORM_BIL_BillHeaderExtension_EDIFACT.Query.Search(Connection, Transaction, edifactQuery); edifactRes = edifactRes.Where(e => e.Creation_Timestamp.Year == DateTime.Now.Year).ToList(); 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 = edifactRes.Count + 1; edifact.Tenant_RefID = securityTicket.TenantID; if (Parameter.billTreatments) { edifact.Save(Connection, Transaction); } #endregion //positions List <L6TR_BT_2204_Position> positions = new List <L6TR_BT_2204_Position>(); List <Guid> patientsIDlist = new List <Guid>(); Dictionary <Guid, Guid> treatment2patient = new Dictionary <Guid, Guid>(); Dictionary <Guid, int> positionCountPerPatient = new Dictionary <Guid, int>(); foreach (var id in Parameter.TreatmentID_List) { var item = new ORM_HEC_Patient_Treatment(); item.Load(Connection, Transaction, id); if (item.IsTreatmentFollowup) { throw new Exception("This treatment, ID: " + id + ", is followup!"); } var patient2treatmentQuery = new ORM_HEC_Patient_2_PatientTreatment.Query(); patient2treatmentQuery.Tenant_RefID = securityTicket.TenantID; patient2treatmentQuery.HEC_Patient_Treatment_RefID = id; var patient2treatmentRes = ORM_HEC_Patient_2_PatientTreatment.Query.Search(Connection, Transaction, patient2treatmentQuery).First(); if (!patientsIDlist.Contains(patient2treatmentRes.HEC_Patient_RefID)) { patientsIDlist.Add(patient2treatmentRes.HEC_Patient_RefID); } treatment2patient.Add(id, patient2treatmentRes.HEC_Patient_RefID); if (!positionCountPerPatient.ContainsKey(patient2treatmentRes.HEC_Patient_RefID)) { positionCountPerPatient.Add(patient2treatmentRes.HEC_Patient_RefID, 0); } } //log.Debug("first loop finished after: " + sw.ElapsedMilliseconds); P_L6PA_GPBIfPID_1155 patParam = new P_L6PA_GPBIfPID_1155(); patParam.PatientID = patientsIDlist.ToArray(); var patients = cls_Get_PatientBillInfo_for_PatientID.Invoke(Connection, Transaction, patParam, securityTicket).Result; P_L6TR_GTaRDfBIbT_1204 tretParam = new P_L6TR_GTaRDfBIbT_1204(); tretParam.TreatmentID = Parameter.TreatmentID_List; var treatments = cls_Get_Treatment_and_RelevantDiagnosis_for_BillInfo_by_TreatmentID.Invoke(Connection, Transaction, tretParam, securityTicket).Result; List <Guid> followTretIDs = new List <Guid>(); if (treatments != null) { foreach (var t in treatments) { followTretIDs.Add(t.HEC_Patient_TreatmentID); } } P_L6TR_GFTfRbIDs_1646 followParam = new P_L6TR_GFTfRbIDs_1646(); followParam.TreatmentIDs = followTretIDs.ToArray(); var followups = cls_Get_Followups_for_Report_byIDs.Invoke(Connection, Transaction, followParam, securityTicket).Result; ///counter bill P_L5TR_GTCfPID_1152 tcParam = new P_L5TR_GTCfPID_1152(); tcParam.PatientID = patientsIDlist.ToArray(); var tretRes = cls_Get_TreatmentCount_for_PatientIDlist.Invoke(Connection, Transaction, tcParam, securityTicket).Result; int i = 1; foreach (var id in Parameter.TreatmentID_List) { #region collectPositionDataForReport var patient = patients.FirstOrDefault(p => p.HEC_PatientID == treatment2patient[id]); if (patient == null) { //throw new Exception("No patient for ID: " + treatment2patient[id]); } var treatment = treatments.FirstOrDefault(t => t.HEC_Patient_TreatmentID == id); if (treatment == null) { throw new Exception("No treatment for ID: " + id); } var followupsForThisThreatment = followups.Where(f => f.IfTreatmentFollowup_FromTreatment_RefID == treatment.HEC_Patient_TreatmentID).ToArray(); #region changeFlag if (Parameter.billTreatments) { var item = new ORM_HEC_Patient_Treatment(); item.Load(Connection, Transaction, id); item.IsTreatmentBilled = true; item.IfTreatmentBilled_Date = DateTime.Now; item.Save(Connection, Transaction); } #endregion #region persistPosition ORM_BIL_BillPosition position = new ORM_BIL_BillPosition(); position.Tenant_RefID = securityTicket.TenantID; position.PositionIndex = i; position.BIL_BilHeader_RefID = header.BIL_BillHeaderID; position.BIL_BillPositionID = Guid.NewGuid(); if (Parameter.billTreatments) { position.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 = position.BIL_BillPositionID; p2t.HEC_Patient_Treatment_RefID = treatment.HEC_Patient_TreatmentID; if (Parameter.billTreatments) { p2t.Save(Connection, Transaction); } #endregion ORM_HEC_Doctor doctor = new ORM_HEC_Doctor(); if (treatment.IfTreatmentPerformed_ByDoctor_RefID != Guid.Empty) { var doctorQuery = new ORM_HEC_Doctor.Query(); doctorQuery.HEC_DoctorID = treatment.IfTreatmentPerformed_ByDoctor_RefID; doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, doctorQuery).FirstOrDefault(); } var practiceQuery = new ORM_HEC_MedicalPractis.Query(); practiceQuery.HEC_MedicalPractiseID = treatment.TreatmentPractice_RefID; practiceQuery.Tenant_RefID = securityTicket.TenantID; var practice = ORM_HEC_MedicalPractis.Query.Search(Connection, Transaction, practiceQuery).FirstOrDefault(); string BSNR = "x"; if (practice != null) { var practiceInfoQuery = new ORM_CMN_COM_CompanyInfo.Query(); practiceInfoQuery.CMN_COM_CompanyInfoID = practice.Ext_CompanyInfo_RefID; practiceInfoQuery.Tenant_RefID = securityTicket.TenantID; var practiceInfo = ORM_CMN_COM_CompanyInfo.Query.Search(Connection, Transaction, practiceInfoQuery).First(); BSNR = practiceInfo.CompanyInfo_EstablishmentNumber; } L6TR_BT_2204_Position pos = new L6TR_BT_2204_Position(); pos.ORM_BIL_BillPositionID = position.BIL_BillPositionID; pos.strDoctorLANR = (doctor != null) ? doctor.DoctorIDNumber : "HEC_Doctor is null!!!!"; pos.TreatmentID = treatment.HEC_Patient_TreatmentID; pos.bTreatmentIsFollowup = treatment.IsTreatmentFollowup; pos.strPracticeBSNR = BSNR; pos.dtTreatment = treatment.IfTreatmentPerformed_Date; if (patient != null) { pos.iTreatmentNumber = tretRes.FirstOrDefault(t => t.HEC_PatientID == patient.HEC_PatientID).treatmentCount + positionCountPerPatient[treatment2patient[id]]; pos.iPatientSex = patient.Gender; pos.iPatientInsuranceState = (patient.InsuranceStateCode != null) ? patient.InsuranceStateCode : String.Empty; pos.dtPatientBirthDate = patient.Birthdate; pos.PatientFirstName = patient.FirstName; pos.PatientLastName = patient.LastName; pos.PatientInsuranceNumber = (patient.HealthInsurance_Number != null) ? patient.HealthInsurance_Number : String.Empty; } else { pos.iTreatmentNumber = -1; pos.iPatientSex = 0; pos.iPatientInsuranceState = "xxxxx"; pos.dtPatientBirthDate = DateTime.MinValue; pos.PatientFirstName = "x"; pos.PatientLastName = "x"; pos.PatientInsuranceNumber = "x"; } pos.cTreatmentLocalization = (treatment.IsTreatmentOfLeftEye) ? "L" : "R"; pos.strFollowupPractice = "-"; pos.strFollowupDoctor = "-"; pos.strFollowupStatus = "Keine Nachuntersuchung geplant."; if (followupsForThisThreatment != null && followupsForThisThreatment.Length > 0) { var performedF = followupsForThisThreatment.Where(f => f.IsTreatmentPerformed == true).ToArray(); if (performedF != null && performedF.Length > 0) { performedF = performedF.OrderBy(f => f.IfTreatmentPerformed_Date).ToArray(); var firstPF = performedF.First(); pos.strFollowupDoctor = firstPF.DoctorFirstName + " " + firstPF.DoctorLastname; pos.dtFollowup = firstPF.IfTreatmentPerformed_Date; pos.strFollowupPractice = firstPF.DisplayName; pos.strFollowupStatus = (firstPF.IsTreatmentPerformed) ? "durchgeführt" : "geplant"; } else { var scheduledF = followupsForThisThreatment.Where(f => f.IsScheduled == true).ToArray(); if (scheduledF != null && scheduledF.Length > 0) { scheduledF = scheduledF.OrderBy(f => f.IfSheduled_Date).ToArray(); var firstSF = scheduledF.First(); pos.strFollowupDoctor = firstSF.DoctorFirstName + " " + firstSF.DoctorLastname; pos.dtFollowup = firstSF.IfTreatmentPerformed_Date; pos.strFollowupPractice = firstSF.DisplayName; pos.strFollowupStatus = (firstSF.IsTreatmentPerformed) ? "durchgeführt" : "geplant"; } } } var articles = new List <L6TR_BT_2204_ArticleInfo>(); foreach (var art in treatment.Article) { var article = new L6TR_BT_2204_ArticleInfo(); article.ArticleID = art.CMN_PRO_ProductID; article.Name = art.Product_Name; article.PZN = art.Product_Number; article.Quantity = art.Quantity; articles.Add(article); } pos.ArticleInfo = articles.ToArray(); var diagnosies = new List <L6TR_BT_2204_DiagnosisInfo>(); foreach (var diag in treatment.RelevantDiagnosis) { var diagnose = new L6TR_BT_2204_DiagnosisInfo(); diagnose.cDiagnosisState = diag.DiagnosisState_Abbreviation; diagnose.DiagnosisID = diag.HEC_Patient_Treatment_RelevantDiagnosisID; diagnose.strDiagnosisICD10 = diag.ICD10_Code; diagnose.PatientInsuranceState = diag.DiagnosisState_Name; diagnosies.Add(diagnose); } pos.DiagnosisInfo = diagnosies.ToArray(); positions.Add(pos); #endregion positionCountPerPatient[treatment2patient[id]] = positionCountPerPatient[treatment2patient[id]] + 1; i++; } returnValue.Result.Positions = positions.ToArray(); returnValue.Result.EDIFACTCounter = edifact.EDIFACTCounter; returnValue.Result.HeaderNumber = header.BillNumber; returnValue.Result.HeaderID = header.BIL_BillHeaderID; returnValue.Result.previousMaxPositionIndex = previousMaxPositionIndex; 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_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_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_L6TR_MRDfTre_1300 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode FR_Base returnValue = new FR_Base(); returnValue.Status = FR_Status.Error_Internal; List <Converter> listOfConvertesForEdifactFiles = new List <Converter>(); string excelFileName = string.Empty; Guid headerID = Guid.Empty; List <ExcelOutput> allExcelData = new List <ExcelOutput>(); L6TR_GTBDpHICfID_1130 collectedData = null; if (Parameter.IsTreatment) { collectedData = cls_Get_TreatmentBillingData_per_HICompany_byIDs.Invoke(Connection, Transaction, new P_L6TR_GTBDpHICfID_1130() { TreatmentID_List = Parameter.TreatmentID_List }, securityTicket).Result; } else { collectedData = cls_Get_FollowupBillingData_per_HICompany_byIDs.Invoke(Connection, Transaction, new P_L6TR_GFBDpHICfID_1412() { TreatmentID_List = Parameter.TreatmentID_List }, securityTicket).Result.Data; } #region HeaderNum var tenantHeaders = ORM_BIL_BillHeader.Query.Search(Connection, Transaction, new ORM_BIL_BillHeader.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).ToArray(); tenantHeaders = tenantHeaders.OrderBy(t => t.Creation_Timestamp).ToArray(); //var headersForThisYear = tenantHeaders.Where(h => h.Creation_Timestamp.Year == DateTime.Now.Year).ToArray(); // This was when we needed to restart the numbers at the end of each year var headersForThisYear = tenantHeaders; int prevMaxHeaderNumber = 0; long previousMaxPositionIndex = 0; if (headersForThisYear.Length > 0) { ORM_BIL_BillHeader prevHeader = null; foreach (var headerTY in headersForThisYear) { int hn = 0; if (int.TryParse(headerTY.BillNumber, out hn) && prevMaxHeaderNumber <= hn) { prevMaxHeaderNumber = hn; prevHeader = headerTY; } } if (prevHeader != null) { var positionQuery = new ORM_BIL_BillPosition.Query(); positionQuery.Tenant_RefID = securityTicket.TenantID; positionQuery.BIL_BilHeader_RefID = prevHeader.BIL_BillHeaderID; var prevPositions = ORM_BIL_BillPosition.Query.Search(Connection, Transaction, positionQuery).ToArray(); if (prevPositions != null && prevPositions.Length > 0) { foreach (var prevPosition in prevPositions) { long number = 0; if (long.TryParse(prevPosition.External_PositionReferenceField, out number) && previousMaxPositionIndex < number) { previousMaxPositionIndex = number; } } } } } var edifactRes = ORM_BIL_BillHeaderExtension_EDIFACT.Query.Search(Connection, Transaction, new ORM_BIL_BillHeaderExtension_EDIFACT.Query() { Tenant_RefID = securityTicket.TenantID }); #endregion int currentEdifatNumber = edifactRes.Where(e => e.Creation_Timestamp.Year == DateTime.Now.Year).Count() + 1; int currentHeaderNumber = prevMaxHeaderNumber + 1; long currentMaxPositionNumber = previousMaxPositionIndex; if (Parameter.IsBilling) { ORM_BIL_BillHeader header = new ORM_BIL_BillHeader(); header.Tenant_RefID = securityTicket.TenantID; header.BIL_BillHeaderID = Guid.NewGuid(); header.BillNumber = currentHeaderNumber.ToString(); header.Save(Connection, Transaction); headerID = header.BIL_BillHeaderID; } foreach (var dataPerCompany in collectedData.HICompanies) { List <BillingInfo> listBInfo = new List <BillingInfo>(); foreach (var pos in dataPerCompany.Positions) { List <ArticleInfo> articleList = new List <ArticleInfo>(); List <DiagnosisInfo> diagnosisList = new List <DiagnosisInfo>(); foreach (var art in pos.ArticleInfos) { articleList.Add(new ArticleInfo(art.ArticleID.ToString(), art.Name.GetContent(Parameter.LanguageID), art.PZN, Convert.ToInt32(art.Quantity))); } foreach (var diag in pos.DiagnosisInfos) { diagnosisList.Add(new DiagnosisInfo(diag.strDiagnosisICD10, diag.cDiagnosisState.ToCharArray()[0])); } listBInfo.Add(new BillingInfo( !pos.bTreatmentIsFollowup ? pos.TreatmentID.ToString() : pos.FollowupID.ToString(), pos.iPatientInsuranceState, pos.PatientInsuranceNumber, pos.iPatientSex, pos.PatientFirstName, pos.PatientLastName, pos.dtPatientBirthDate, pos.strDoctorLANR, pos.strPracticeBSNR, diagnosisList, pos.cTreatmentLocalization.ToCharArray()[0], pos.bTreatmentIsFollowup, pos.iTreatmentNumber, articleList, pos.dtTreatment, pos.strFollowupPractice, pos.strFollowupDoctor, pos.strFollowupStatus, pos.dtFollowup)); } Converter converter = new Converter(currentEdifatNumber, currentHeaderNumber, currentMaxPositionNumber, dataPerCompany.Positions.OrderBy(p => p.dtTreatment).First().dtTreatment, dataPerCompany.Positions.OrderBy(p => p.dtTreatment).Last().dtTreatment, listBInfo, dataPerCompany.HealthInsurance_Number, false); listOfConvertesForEdifactFiles.Add(converter); var excelData = converter.getExcel(); if (excelFileName == string.Empty) { excelFileName = converter.getExcelFilename(); } allExcelData.AddRange(excelData); #region Save GPOS, charged value, Additional position compensation, Relevant article and article quantity (if is billing) if (Parameter.IsBilling) { var persistParam = new P_L6TR_PBD_1706() { EdifactNumber = currentEdifatNumber, HeaderID = headerID, OutputData = excelData.ToArray() }; cls_Persist_TreatmentsBillData.Invoke(Connection, Transaction, persistParam, securityTicket); } #endregion currentEdifatNumber++; currentMaxPositionNumber = excelData.Max(e => e.iProcessNumber); } List <String> LANR = allExcelData.Select(x => x.strDoctorLANR).ToList(); P_L5DO_GDDfLfR_1409 parameterDoctorData = new P_L5DO_GDDfLfR_1409(); parameterDoctorData.LANR = LANR.ToArray(); List <L5DO_GDDfLfR_1409> doctorData = cls_Get_DoctorData_for_LANR_for_Reports.Invoke(Connection, Transaction, parameterDoctorData, securityTicket).Result.ToList(); List <Attachment> atts = new List <Attachment>(); string file = ReportUtils.generateBillTreatmentsXLS(allExcelData, doctorData); MemoryStream ms = new MemoryStream(File.ReadAllBytes(file)); atts.Add(new System.Net.Mail.Attachment(ms, excelFileName)); foreach (var converter in listOfConvertesForEdifactFiles) { var edifact = converter.getEdifact(); var tempFilePath = Path.GetTempFileName(); using (System.IO.StreamWriter tempFile = new System.IO.StreamWriter(tempFilePath, true)) { tempFile.Write(converter.getAuf(1)); } long tempFileSize = 0; if (File.Exists(tempFilePath)) { FileInfo fi = new FileInfo(tempFilePath); tempFileSize = fi.Length; fi.Delete(); } atts.Add(Attachment.CreateAttachmentFromString(edifact, converter.getEdifactFilename())); atts.Add(Attachment.CreateAttachmentFromString(converter.getAuf(tempFileSize), converter.getAufFilename())); } string[] toMails; string mailRes = (String)HttpContext.GetGlobalResourceObject("Global", "ReportMails"); #if DEBUG mailRes = (String)HttpContext.GetGlobalResourceObject("Global", "ReportMailsDebug"); #endif toMails = mailRes.Split(';'); string subjectRes = (String)HttpContext.GetGlobalResourceObject("Global", "ReportMailSubject"); EmailUtils.SendMail(toMails, subjectRes, "", atts); // @Laci, ako budes se prebacivao na thread odkomentarisi ovaj kod ispod //Thread emailThread = new Thread(() => //{ // IEmail acceptEmail = EmailFactory.BasicEmail(); // acceptEmail.sendMailNotifier(toMails.ToList(), subjectRes, "", atts); //}); //emailThread.Start(); returnValue.Status = FR_Status.Success; 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 }
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 }