private AutorizacionOs SetAutorizacionOs(Authorize model, string codAuth) { var autorizacionOs = new AutorizacionOs(); try { /******************************************************************************************************************/ /************************************************** Default Data **************************************************/ /******************************************************************************************************************/ var osrepository = new OSRepository(); var det = new AutorizacionOsDet(); autorizacionOs = new AutorizacionOs(); autorizacionOs.NnroAfiliado = model.Credencial; autorizacionOs.CnomAfiliado = model.AfiliadoNombre; autorizacionOs.Idpre = Convert.ToInt32(model.PrestadorId); autorizacionOs.Ncodosoc = osrepository.GetOSbyId(10); autorizacionOs.Nestado = 0; autorizacionOs.NidUsuario = Convert.ToInt32(model.UserId); autorizacionOs.CcodAnulacion = ""; autorizacionOs.Idfacturador = Convert.ToInt32(model.FacturadorId); autorizacionOs.CnroAutorizacion = codAuth; autorizacionOs.ResultadoAutorizacion = "Autorizada"; autorizacionOs.EstadoAutorizacion = "Autorizada"; autorizacionOs.DfecAutorizacion = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day; autorizacionOs.CcodinternoAutorizacion = codAuth; AutorizacionOsDet autorizacionOsDet = new AutorizacionOsDet(); foreach (var item in model.Prestaciones) { autorizacionOsDet.PracticaId = item.CodPres; autorizacionOsDet.PracticaDetAuth = "Autorizada"; autorizacionOsDet.PracticaCantAprob = item.Cant.ToString(); autorizacionOsDet.PracticaAuthNr = codAuth; autorizacionOsDet.PracticaIdEstado = "Autorizada"; autorizacionOsDet.PracticaDes = item.Descripcion; } autorizacionOs.AutorizacionOsDet.Add(autorizacionOsDet); } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty); } return(autorizacionOs); }
private AutorizacionOs SetAutorizacionOs(string data, Authorize model) { //CodRtaGeneral 01-Rechazo Total, 00-Autorizado Parcial/Total //MensajeRta Esta el error por practica // Si la cantidad aprobada coinside con la solicitada, esta aprobada, sino no //NroReferencia: Numero de autorizacion //Plan PlanCredencial //NombreBeneficiario Nombre //NumeroCredencial Credencia //CondicionIVA var autorizacionOs = new AutorizacionOs(); try { var det = new AutorizacionOsDet(); var osrepository = new OSRepository(); autorizacionOs = new AutorizacionOs { NnroAfiliado = model.Credencial, Idpre = Convert.ToInt32(model.PrestadorId), Ncodosoc = osrepository.GetOSbyId(model.OSId), Nestado = 0, NidUsuario = Convert.ToInt32(model.UserId), DfecEstado = DateTime.Today.ToString(), CcodAnulacion = "", Idfacturador = Convert.ToInt32(model.FacturadorId), }; var fechaint = ""; using (var reader = XmlReader.Create(new StringReader(data))) { var sIdTransaccion = ""; reader.MoveToContent(); while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "NroReferencia": sIdTransaccion = reader.ReadElementContentAsString(); autorizacionOs.CcodinternoAutorizacion = sIdTransaccion; autorizacionOs.CnroAutorizacion = sIdTransaccion; det.PracticaAuthNr = sIdTransaccion; break; case "CodRtaGeneral": var sEstado = reader.ReadElementContentAsString(); //sCodEstado = sEstado; switch (sEstado) { case "01": sEstado = "Rechazada"; break; case "00": sEstado = "Autorizada"; break; //Puede ser Parcial dependiendo de las practicas default: sEstado = "Autorizada"; break; ///Todo: Estudiar los casos } autorizacionOs.ResultadoAutorizacion = sEstado; autorizacionOs.EstadoAutorizacion = sEstado; break; case "DescripcionRtaGeneral": autorizacionOs.Error.Mensaje = reader.ReadElementContentAsString(); break; case "PlanCredencial": autorizacionOs.CdescripcionPlan = reader.ReadElementContentAsString(); break; case "NombreBeneficiario": autorizacionOs.CnomAfiliado = reader.ReadElementContentAsString(); break; case "CondicionIVA": autorizacionOs.CdescripcionIva = reader.ReadElementContentAsString(); //Cuales son las posibles respuestas de IVA break; case "FechaTrx": fechaint = reader.ReadElementContentAsString(); //formatear fecha yyyy-MM-dd break; case "HoraTrx": fechaint += reader.ReadElementContentAsString() + ":"; //formatear hora var date = fechaint.Substring(0, 4) + "-" + fechaint.Substring(4, 2) + "-" + fechaint.Substring(6, 2) + " " + fechaint.Substring(8, 2) + ":" + fechaint.Substring(10, 2) + ":" + fechaint.Substring(12, 2); autorizacionOs.DfecAutorizacion = date; break; case "DetalleProcedimientos": var cantSoli = 0; var cantAp = 0; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "CodPrestacion": det.PracticaId = reader.ReadElementContentAsString(); break; case "MensajeRta": det.PracticaDetAuth = reader.ReadElementContentAsString(); break; case "CantidadAprobada": cantAp = Convert.ToInt32(reader.ReadElementContentAsString().Trim()); if (cantAp == 0) { if (autorizacionOs.ResultadoAutorizacion != "Rechazada") { autorizacionOs.ResultadoAutorizacion = "Parcialmente Autorizada"; autorizacionOs.EstadoAutorizacion = "Parcialmente Autorizada"; } det.PracticaIdEstado = "Rechazada"; } break; case "CantidadSolicitada": cantSoli = Convert.ToInt32(reader.ReadElementContentAsString()); break; } } else { if (reader.NodeType != XmlNodeType.EndElement || reader.Name != "DetalleProcedimientos") { continue; } //det.PracticaDetAuth = "OK"; det.PracticaIdEstado = (cantSoli == cantAp) ? "Autorizada" : (cantAp == 0) ? "Rechazada" : "Parcialmente Autorizada"; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet { PracticaAuthNr = autorizacionOs.CnroAutorizacion }; } } break; } } } return(autorizacionOs); } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty); } return(autorizacionOs); }
private AutorizacionOs SetAutorizacionOs(string data, Authorize model) { var autorizacionOs = new AutorizacionOs(); try { var det = new AutorizacionOsDet(); var osrepository = new OSRepository(); autorizacionOs = new AutorizacionOs { NnroAfiliado = model.Credencial, Idpre = Convert.ToInt32(model.PrestadorId), Ncodosoc = osrepository.GetOSbyId(model.OSId), Nestado = 0, NidUsuario = Convert.ToInt32(model.UserId), DfecEstado = DateTime.Today.ToString(), CcodAnulacion = "", Idfacturador = Convert.ToInt32(model.FacturadorId), }; // convertimos respuesta en vector var msHL7 = HL7.DecifraHL7(data); // tomamos la fecha de la primera línea del vector - MSH var fechaint = HL7.CampoHL7(msHL7[0], 6, 0); var sFechaAut = fechaint.Substring(0, 4) + "-" + fechaint.Substring(4, 2) + "-" + fechaint.Substring(6, 2); sFechaAut += " " + fechaint.Substring(8, 2) + ":" + fechaint.Substring(10, 2) + ":" + fechaint.Substring(12, 2); autorizacionOs.DfecAutorizacion = sFechaAut; // número de la transacción tercera línea - ZAU **Codigo Interno de la transaccion var sIdTransaccion = HL7.CampoHL7(msHL7[2], 2, 0); autorizacionOs.CcodinternoAutorizacion = sIdTransaccion; autorizacionOs.CnroAutorizacion = sIdTransaccion; // resultado autorización tercera línea - ZAU var sEstado = HL7.CampoHL7(msHL7[2], 3, 1); switch (sEstado) { case "B000": sEstado = "Autorizada"; break; case "B001": sEstado = "Autorizada Parcial"; break; default: sEstado = "Rechazada"; break; } autorizacionOs.EstadoAutorizacion = sEstado; autorizacionOs.ResultadoAutorizacion = sEstado; // mensaje corto autorizacion tercera línea - ZAU HL7.CampoHL7(msHL7[2], 3, 2); // nombre del afiliado quinta linea - PID autorizacionOs.CnomAfiliado = (HL7.CampoHL7(msHL7[5], 5, 1) + " " + HL7.CampoHL7(msHL7[5], 5, 2)); // plan del afiliado sexta linea - IN1 autorizacionOs.CdescripcionPlan = HL7.CampoHL7(msHL7[6], 2, 0); // condicion IVA septima linea - ZIN autorizacionOs.CdescripcionIva = HL7.CampoHL7(msHL7[7], 2, 2); var indice = 8; while (msHL7[indice] != "") { switch (msHL7[indice].Substring(0, 4)) { case "PR1|": det.PracticaId = HL7.CampoHL7(msHL7[indice], 3, 1); HL7.CampoHL7(msHL7[indice], 3, 2); break; case "AUT|": det.PracticaCantAprob = HL7.CampoHL7(msHL7[indice], 8, 0); break; case "ZAU|": var sEstadox = HL7.CampoHL7(msHL7[indice], 3, 1); det.PracticaIdEstado = sEstadox == "B000" || sEstadox == "B001" ? "Autorizada" : "Rechazada"; det.PracticaDetAuth = HL7.CampoHL7(msHL7[indice], 3, 2); det.PracticaDes = osrepository.GetPrescDesc(det.PracticaId, model.Prestaciones, model); det.PracticaAuthNr = sIdTransaccion; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet(); break; } indice++; } } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty); } return(autorizacionOs); }
private AutorizacionOs SetAutorizacionOs(string data, Authorize model) { var autorizacionOs = new AutorizacionOs(); try { var det = new AutorizacionOsDet(); var osrepository = new OSRepository(); autorizacionOs = new AutorizacionOs { NnroAfiliado = model.Credencial, Idpre = Convert.ToInt32(model.PrestadorId), // Ncodosoc = osrepository.GetOSbyId(model.OSId), Nestado = 0, NidUsuario = Convert.ToInt32(model.UserId), DfecEstado = DateTime.Today.ToString(), CcodAnulacion = "", Idfacturador = Convert.ToInt32(model.FacturadorId), }; var fechaint = ""; using (var reader = XmlReader.Create(new StringReader(data))) { reader.MoveToContent(); while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "AutCod": var sIdTransaccion = reader.ReadElementContentAsString(); autorizacionOs.CcodinternoAutorizacion = sIdTransaccion; autorizacionOs.CnroAutorizacion = sIdTransaccion; det.PracticaAuthNr = sIdTransaccion; break; case "AutEstadoId": var sEstado = reader.ReadElementContentAsString(); //sCodEstado = sEstado; switch (sEstado) { case "B000": sEstado = "Autorizada"; break; case "B001": sEstado = "Autorizada Parcial"; break; default: sEstado = "Rechazada"; break; } autorizacionOs.ResultadoAutorizacion = sEstado; autorizacionOs.EstadoAutorizacion = sEstado; break; case "AutObs": autorizacionOs.Error.Mensaje = reader.ReadElementContentAsString(); break; case "AfiliadoPlanDes": autorizacionOs.CdescripcionPlan = reader.ReadElementContentAsString(); break; case "AfiliadoNombre": autorizacionOs.CnomAfiliado = reader.ReadElementContentAsString(); break; case "AfiliadoIVADes": autorizacionOs.CdescripcionIva = reader.ReadElementContentAsString(); break; case "Year": fechaint = "20" + reader.ReadElementContentAsString() + "-"; break; case "Mes": fechaint += reader.ReadElementContentAsString() + "-"; break; case "Dia": fechaint += reader.ReadElementContentAsString() + " "; break; case "Hora": fechaint += reader.ReadElementContentAsString() + ":"; break; case "Minutos": fechaint += reader.ReadElementContentAsString() + ":"; break; case "Seg": fechaint += reader.ReadElementContentAsString(); autorizacionOs.DfecAutorizacion = fechaint; break; case "Practicas": while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "PracticaId": det.PracticaId = reader.ReadElementContentAsString(); break; case "PracticaDes": det.PracticaDes = reader.ReadElementContentAsString(); break; case "PracticaIdEstado": var sEstadox = reader.ReadElementContentAsString().Trim(); det.PracticaIdEstado = sEstadox == "B000" || sEstadox == "B001" ? "Autorizada" : "Rechazada"; break; case "PracticaCantAprob": det.PracticaCantAprob = reader.ReadElementContentAsString(); break; case "PracticaObs": det.PracticaDetAuth = reader.ReadElementContentAsString(); break; } } else { if (reader.NodeType != XmlNodeType.EndElement || reader.Name != "Practica") { continue; } det.PracticaDetAuth = det.PracticaDetAuth == string.Empty ? "OK" : det.PracticaDetAuth; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet { PracticaAuthNr = autorizacionOs.CnroAutorizacion }; } } break; } } } return(autorizacionOs); } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty); } return(autorizacionOs); }
private AutorizacionOs SetAutorizacionOs(string data, Authorize authorize) { var autorizacionOs = new AutorizacionOs(); try { /******************************************************************************************************************/ /************************************************** Default Data **************************************************/ /******************************************************************************************************************/ var osrepository = new OSRepository(); var det = new AutorizacionOsDet(); autorizacionOs = new AutorizacionOs(); autorizacionOs.NnroAfiliado = authorize.Credencial; autorizacionOs.Idpre = Convert.ToInt32(authorize.PrestadorId); autorizacionOs.Ncodosoc = osrepository.GetOSbyId(authorize.OSId); autorizacionOs.Nestado = 0; autorizacionOs.NidUsuario = Convert.ToInt32(authorize.UserId); autorizacionOs.DfecEstado = DateTime.Today.ToString(); autorizacionOs.CcodAnulacion = ""; autorizacionOs.Idfacturador = Convert.ToInt32(authorize.FacturadorId); autorizacionOs.Tipo = authorize.Tipo; /******************************************************************************************************************/ /********************************************** AcaSalud Return Data **********************************************/ /******************************************************************************************************************/ using (XmlReader reader = XmlReader.Create(new StringReader(data))) { reader.MoveToContent(); while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "IDTRAN": autorizacionOs.CnroAutorizacion = reader.ReadElementContentAsString(); //autorizacionOs.CcodinternoAutorizacion = reader.ReadElementContentAsString(); break; case "STATUS": var sEstado = reader.ReadElementContentAsString(); var std = sEstado == "OK" ? "Autorizada" : "Rechazada"; autorizacionOs.EstadoAutorizacion = std; autorizacionOs.ResultadoAutorizacion = std; break; case "RSPCODG": //autorizacionOs.Error.Estado = reader.ReadElementContentAsString(); break; case "RSPMSGG": autorizacionOs.Error.Mensaje += reader.ReadElementContentAsString(); break; case "RSPMSGGADIC": autorizacionOs.Error.Mensaje += reader.ReadElementContentAsString(); break; case "AFIPLAN": break; case "AFIPLANADIC": autorizacionOs.CdescripcionPlan = reader.ReadElementContentAsString(); break; case "AFIAPE": //Apellido del Afiliado autorizacionOs.CnomAfiliado = reader.ReadElementContentAsString(); break; case "AFINOM": //Nombre del Afiliado autorizacionOs.CnomAfiliado = autorizacionOs.CnomAfiliado + ", " + reader.ReadElementContentAsString(); break; case "AFISEXO": break; case "AFINAC": break; case "AFIAFIL": autorizacionOs.CdescripcionIva = reader.ReadElementContentAsString(); break; case "IDAUT": var cod = reader.ReadElementContentAsString(); autorizacionOs.CcodinternoAutorizacion = cod; //autorizacionOs.CnroAutorizacion = cod; break; case "FECHAOPER": autorizacionOs.DfecAutorizacion = reader.ReadElementContentAsString(); break; case "PR": /******************************************************************************************************************/ /********************************************* Detalle de Autorizacion ********************************************/ /******************************************************************************************************************/ var bElementoIniciado = false; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "TIPO": bElementoIniciado = true; reader.ReadElementContentAsString(); break; case "ID": det.PracticaId = reader.ReadElementContentAsString(); break; case "DESCRIPCION": det.PracticaDes = reader.ReadElementContentAsString(); break; case "IDTORD": var sIdTord = reader.ReadElementContentAsString(); break; case "DESCTORD": var sDescOrd = reader.ReadElementContentAsString(); break; case "STATUS": det.PracticaIdEstado = reader.ReadElementContentAsString().Trim() == "OK" ? "Autorizada" : "Rechazada"; break; case "RSPCODP": var sRspcodp = reader.ReadElementContentAsString(); break; case "RSPMSGP": det.PracticaDetAuth = reader.ReadElementContentAsString(); break; case "REALIZNOM": var sRealizNom = reader.ReadElementContentAsString(); break; case "CANT": det.PracticaCantAprob = reader.ReadElementContentAsString(); break; } } else { if (reader.NodeType != XmlNodeType.EndElement || !bElementoIniciado) { continue; } if (det.PracticaId == null) { continue; } det.PracticaAuthNr = autorizacionOs.CcodinternoAutorizacion; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet(); } } break; } } } } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", authorize, string.Empty); } return(autorizacionOs); }
public AutorizacionOs Autorizar(Authorize model, string resultado, string cadena) { var autorizacionOs = new AutorizacionOs(); try { var det = new AutorizacionOsDet(); var osrepository = new OSRepository(); autorizacionOs = new AutorizacionOs { NnroAfiliado = model.Credencial, Idpre = Convert.ToInt32(model.PrestadorId), Ncodosoc = osrepository.GetOSbyId(model.OSId), Nestado = 0, NidUsuario = Convert.ToInt32(model.UserId), DfecEstado = DateTime.Today.ToString(), CcodAnulacion = "", Idfacturador = Convert.ToInt32(model.FacturadorId), }; var resul = resultado.Split(':'); var solicitud = cadena.Split(','); var datosAut = resul[0].Split(','); var datosRec = resul[1].Split(','); string sEstado; var sNroAutorizacion = "0"; string sMsgCorto; autorizacionOs.DfecAutorizacion = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // resultado autorización if (datosRec[0].Trim() != "RECHAZ") { sEstado = "Autorizada"; sNroAutorizacion = datosAut[0]; sMsgCorto = "Autorizada"; } else { if (datosAut[0].Trim() == "") { sEstado = "Rechazada"; sMsgCorto = "Rechazada"; } else { sEstado = "Autorizada Parcial"; sNroAutorizacion = datosAut[0]; sMsgCorto = "Aut. parcial"; } } autorizacionOs.ResultadoAutorizacion = sEstado; autorizacionOs.EstadoAutorizacion = sEstado; autorizacionOs.CnroAutorizacion = sNroAutorizacion; autorizacionOs.CcodinternoAutorizacion = sNroAutorizacion; autorizacionOs.Mensaje = sMsgCorto; autorizacionOs.CnomAfiliado = model.AfiliadoNombre; autorizacionOs.CdescripcionPlan = model.AfiliadoPlan; if (datosAut.Length > 1) { for (var i = 1; i < datosAut.Length; i++) { det.PracticaId = datosAut[i].Replace(".", "").Trim(); for (var j = 0; j <= solicitud.Length; j++) { var prestasol = solicitud[j].Split('-'); if (det.PracticaId != prestasol[0].Trim()) { continue; } det.PracticaCantAprob = prestasol[1]; break; } det.PracticaDes = osrepository.GetPrescDesc(det.PracticaId, model.Prestaciones, model); det.PracticaIdEstado = "Autorizada"; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet(); } } // se graban las rechazadas if (datosRec.Length > 1) { for (var i = 1; i < datosRec.Length; i++) { var presta = datosRec[i].Split('-'); det.PracticaId = datosRec[i].Replace(".", "").Trim(); switch (presta[1]) { case "1": sMsgCorto = "El codigo es de alta complejidad, se debe emitir con autorizacion"; break; case "2": sMsgCorto = "La cantidad solicitada supera el tope establecido "; break; case "3": sMsgCorto = "Codigo inexistente en el nomenclador"; break; } det.PracticaDetAuth = sMsgCorto; det.PracticaDes = osrepository.GetPrescDesc(det.PracticaId, model.Prestaciones, model); det.PracticaIdEstado = "Rechazada"; autorizacionOs.AutorizacionOsDet.Add(det); det = new AutorizacionOsDet(); } } } catch (Exception ex) { autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty); } return(autorizacionOs); }