private bool isAuthValid(Service service) { bool temp = true; var connectionString = ConfigurationManager.ConnectionStrings["CacheODBC"].ConnectionString; var commandText = "SELECT history_managed_care_auths.auth_start_date " + "FROM SYSTEM.history_managed_care_auths " + "WHERE history_managed_care_auths.PATID=? " + "AND history_managed_care_auths.GUARANTOR_ID=? " + "AND history_managed_care_auths.auth_start_date<=? " + "AND history_managed_care_auths.auth_end_date>=? " + "AND (history_managed_care_auths.rem_units IS NULL OR CAST(history_managed_care_auths.rem_units as DOUBLE)>0) " + "AND (history_managed_care_auths.rem_visits IS NULL OR CAST(history_managed_care_auths.rem_visits as DOUBLE)>0) " + "AND history_managed_care_auths.service_codes_all like ?"; try { using (var connection = new OdbcConnection(connectionString)) { connection.Open(); using (var dbcommand = new OdbcCommand(commandText, connection)) { dbcommand.Parameters.Add(new OdbcParameter("PATID", service.Patid)); dbcommand.Parameters.Add(new OdbcParameter("GUARANTOR_ID", service.GuarantorId)); dbcommand.Parameters.Add(new OdbcParameter("auth_start_date", service.ServiceDate.ToString("yyyy-MM-dd"))); dbcommand.Parameters.Add(new OdbcParameter("auth_end_date", service.ServiceDate.ToString("yyyy-MM-dd"))); dbcommand.Parameters.Add(new OdbcParameter("service_codes_all", "%" + service.ServiceCode + "%")); using (var reader = dbcommand.ExecuteReader()) { if (reader.Read()) temp = true; else temp = false; } } connection.Close(); } } catch (Exception e) { } return temp; }
private Service GetServiceJustEntered(string Patid, string EpisodeNumber, DateTime ServiceDate, string ServiceCode, string StaffId) { var service = new Service(); var connectionString = ConfigurationManager.ConnectionStrings["CacheODBC"].ConnectionString; #region CommandText var commandText = "SELECT TOP(1) billing_tx_history.cost_of_service, " + "billing_tx_history.date_of_service, " + "billing_tx_history.duration, " + "billing_tx_history.end_time, " + "billing_tx_history.EPISODE_NUMBER, " + "billing_tx_history.FACILITY, " + "billing_tx_history.JOIN_TO_TX_HISTORY, " + "billing_tx_history.location_code, " + "billing_tx_history.location_value, " + "billing_tx_history.NOT_uniqueid, " + "billing_tx_history.ORIG_JOIN_TO_TX_HISTORY, " + "billing_tx_history.PATID, " + "billing_guar_table.GUARANTOR_ID, " + "billing_guar_table.guarantor_name, " + "billing_tx_history.program_code, " + "billing_tx_history.program_value, " + "billing_tx_history.program_X_RRG_code, " + "billing_tx_history.program_X_RRG_value, " + "billing_tx_history.PROVIDER_ID, " + "billing_tx_history.SERVICE_CODE, " + "billing_tx_history.start_time, " + "billing_tx_history.units_of_service, " + "billing_tx_history.v_patient_name, " + "billing_tx_history.v_PROVIDER_NAME, " + "billing_tx_history.v_service_value " + "FROM SYSTEM.billing_tx_history " + "INNER JOIN SYSTEM.billing_guar_table " + "ON billing_tx_history.primary_guarantor = billing_guar_table.GUARANTOR_ID " + "AND billing_tx_history.FACILITY = billing_guar_table.FACILITY " + "WHERE billing_tx_history.PATID=? " + "AND billing_tx_history.EPISODE_NUMBER=? " + "AND billing_tx_history.SERVICE_CODE=? " + "AND billing_tx_history.PROVIDER_ID=? " + "AND billing_tx_history.date_of_service=? " + "AND (billing_tx_history.data_entry_time=? OR billing_tx_history.data_entry_time=?)"; #endregion try { using (var connection = new OdbcConnection(connectionString)) { connection.Open(); using (var dbcommand = new OdbcCommand(commandText, connection)) { dbcommand.Parameters.Add(new OdbcParameter("PATID", Patid)); dbcommand.Parameters.Add(new OdbcParameter("EPISODE_NUMBER", EpisodeNumber)); dbcommand.Parameters.Add(new OdbcParameter("SERVICE_CODE", ServiceCode)); dbcommand.Parameters.Add(new OdbcParameter("PROVIDER_ID", StaffId)); dbcommand.Parameters.Add(new OdbcParameter("date_of_service", ServiceDate.ToString("yyyy-MM-dd"))); dbcommand.Parameters.Add(new OdbcParameter("data_entry_time", DateTime.Now.ToString("hh:mm tt"))); dbcommand.Parameters.Add(new OdbcParameter("data_entry_time", DateTime.Now.AddMinutes(-1).ToString("hh:mm tt"))); using (var reader = dbcommand.ExecuteReader()) { if (reader.Read()) { #region ReadInValues service.ServiceCost = reader["cost_of_service"].ToString(); service.ServiceDate = DateTime.Parse(reader["date_of_service"].ToString()); service.Duration = reader["duration"].ToString(); service.StartTime = reader["start_time"].ToString(); service.EndTime = reader["end_time"].ToString(); service.EpisodeNumber = reader["EPISODE_NUMBER"].ToString(); service.Facility = reader["FACILITY"].ToString(); service.JoinToTxHistory = reader["JOIN_TO_TX_HISTORY"].ToString(); service.LocationCode = reader["location_code"].ToString(); service.LocationValue = reader["location_value"].ToString(); service.NotUniqueId = reader["NOT_uniqueid"].ToString(); service.OrigJoinToTxHistory = reader["ORIG_JOIN_TO_TX_HISTORY"].ToString(); service.Patid = reader["PATID"].ToString(); service.PatientName = reader["v_patient_name"].ToString(); service.GuarantorId = reader["GUARANTOR_ID"].ToString(); service.GuarantorName = reader["guarantor_name"].ToString(); service.ProgramCode = reader["program_code"].ToString(); service.ProgramValue = reader["program_value"].ToString(); service.ProgramRRGCode = reader["program_X_RRG_code"].ToString(); service.ProgramRRGValue = reader["program_X_RRG_value"].ToString(); service.StaffId = reader["PROVIDER_ID"].ToString(); service.StaffName = reader["v_PROVIDER_NAME"].ToString(); service.ServiceCode = reader["SERVICE_CODE"].ToString(); service.ServiceValue = reader["v_service_value"].ToString(); service.UnitsOfService = reader["units_of_service"].ToString(); #endregion } else { service = null; } } } connection.Close(); } } catch (Exception e) { } return service; }
private bool guarantorAndServiceNeedAuth(Service service) { List<String> List202 = new List<String>() { "203", "300", "3000", "301", "3001", "307", "313", "315", "316", "400", "4000", "4001" }; List<String> List207_208_210_215 = new List<String>() { "203", "3000", "3001", "300", "301", "307", "313", "315", "316", "400", "401", "402", "403", "404", "405", "4000", "4001" }; List<String> List212 = new List<String>() { "400", "401", "402", "403", "404", "405", "300", "3000", "301", "3001", "307", "313", "315", "316", "203" }; List<String> List213_406 = new List<String>() { "200", "201", "202", "203", "3000", "3001", "300", "301", "307", "313", "315", "316", "400", "401", "402", "4000", "4001" }; List<String> List57 = new List<String>() { "203" }; switch (service.GuarantorId) { case "57": return List57.Contains(service.ServiceCode); case "202": return List202.Contains(service.ServiceCode); case "205": return true; case "207": return List207_208_210_215.Contains(service.ServiceCode); case "208": return List207_208_210_215.Contains(service.ServiceCode); case "210": return List207_208_210_215.Contains(service.ServiceCode); case "212": return List212.Contains(service.ServiceCode); case "213": return List213_406.Contains(service.ServiceCode); case "215": return List207_208_210_215.Contains(service.ServiceCode);//Added this for Magellan complete care noAuths to send email alerts case "211": return List207_208_210_215.Contains(service.ServiceCode);//Added this for Prestige (CAID) noAuths to send email alerts case "302": return true; case "303": return true; case "401": return true; case "403": return true; case "406": return List213_406.Contains(service.ServiceCode); case "701": return true; default: return false; } }
private OptionObject EmailAuthorizationNotification(OptionObject optionObject) { OptionObject returnOptionObject = new OptionObject(); //string guarantorID; var noteStatus = new FieldObject { FieldNumber = "50010" }; var serviceCode = new FieldObject { FieldNumber = "51001" }; var serviceDate = new FieldObject { FieldNumber = "51011" }; var serviceDuration = new FieldObject { FieldNumber = "51003" }; foreach (var form in optionObject.Forms) { foreach (var field in form.CurrentRow.Fields) { if (field.FieldNumber.Equals(noteStatus.FieldNumber)) noteStatus.FieldValue = field.FieldValue; if (field.FieldNumber.Equals(serviceCode.FieldNumber)) serviceCode.FieldValue = field.FieldValue; if (field.FieldNumber.Equals(serviceDate.FieldNumber)) serviceDate.FieldValue = field.FieldValue; if (field.FieldNumber.Equals(serviceDuration.FieldNumber)) serviceDuration.FieldValue = field.FieldValue; } } if (noteStatus.FieldValue.Equals("F")) { var service = new Service(); service = GetServiceJustEntered(optionObject.EntityID, optionObject.EpisodeNumber.ToString(), DateTime.Parse(serviceDate.FieldValue), serviceCode.FieldValue, optionObject.OptionStaffId); try { if (service != null && guarantorAndServiceNeedAuth(service)) if (!isAuthValid(service)) sendEmail(ConfigurationManager.AppSettings["SMTPFromEmailAddress"].ToString(), "Service for (" + service.Patid + ") " + service.PatientName + " provided without proper authorization", service.ToString(), ConfigurationManager.AppSettings["AuthEmailRecipients"].ToString().Split(',').ToList()); } catch (Exception e) { } var svcCodeList = ConfigurationManager.AppSettings["ServiceCodesToExclude"].ToString().Split(',').ToList(); if (Convert.ToInt32(serviceDuration.FieldValue) > 300 && svcCodeList.IndexOf(serviceCode.FieldValue) < 0) { sendEmail(ConfigurationManager.AppSettings["SMTPFromEmailAddress"].ToString(), "Service with a duration of " + serviceDuration.FieldValue + " entered.", "Client ID: " + optionObject.EntityID + "\nEpisode #: " + optionObject.EpisodeNumber + "\nGuarantor ID: " + service.GuarantorId + "\nService Code: " + serviceCode.FieldValue + "\nService Date: " + serviceDate.FieldValue + "\nStaff ID: " + optionObject.OptionStaffId, new List<string> { ConfigurationManager.AppSettings["SMTPCreateSWTicket"].ToString() }, new List<string>(), ConfigurationManager.AppSettings["AssignToBilling"].ToString().Split(',').ToList()); } } returnOptionObject.EntityID = optionObject.EntityID; returnOptionObject.OptionId = optionObject.OptionId; returnOptionObject.Facility = optionObject.Facility; returnOptionObject.SystemCode = optionObject.SystemCode; return returnOptionObject; }