Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }