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); }
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); }