示例#1
0
        private AnulacionOS SetAnulacionOs(string data, Anular model)
        {
            var anulacionOs = new AnulacionOS();

            try
            {
                anulacionOs = new AnulacionOS
                {
                    IdAuth  = model.AuthId.ToString(),
                    Nestado = "1",
                    Fecha   = DateTime.Now.ToString(),
                };

                // convertimos respuesta en vector
                var msHL7 = HL7.DecifraHL7(data);

                // número de la transacción tercera línea - ZAU
                anulacionOs.CodAnulacion = HL7.CampoHL7(msHL7[2], 2, 0);

                // resultado autorización tercera línea - ZAU
                var sEstado = HL7.CampoHL7(msHL7[2], 3, 1);

                anulacionOs.Estado = sEstado == "B000" ? "OK" : "NO";
            }
            catch (Exception ex)
            {
                anulacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
            }
            return(anulacionOs);
        }
示例#2
0
        public Afiliado Eligibilidad(string credencial)
        {
            var afiliado = new Afiliado();

            try
            {
                var output = "MSH|^~\\&|TRIA0100M|TRIA00007160|MEDIFE|MEDIFE^222222^IIN|";
                output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQI^Z01^ZQI_Z01|05091908480623465897|P|2.4|||NE|AL|ARG";
                output += Environment.NewLine;
                output += "PRD|PS^CIRCULO MEDICO DE SALTA||^^^C||||30543364610^CU|";

                output += Environment.NewLine;
                output += "PID|||" + credencial + "^^^MEDIFE^HC^MEDIFE||UNKNOWN";
                output += Environment.NewLine;

                var resultado = _traditum.Send(output);
                logResult(output.ToString(), resultado.ToString(), "E");

                if (resultado == "")
                {
                    return new Afiliado {
                               Name = Mensajes.Get("AfiIne")
                    }
                }
                ;

                if (resultado.Contains("Error ejecutando") || resultado.Contains("no se pueden procesar") || resultado.Contains("Unable to read data"))
                {
                    return(new Afiliado {
                        Name = Mensajes.Get("ServidorNoResponde"), HasError = true
                    });
                }

                // convertimos respuesta en vector
                var msHL7 = HL7.DecifraHL7(resultado);
                var index = msHL7[1].IndexOf("En estos momentos, no se pueden procesar transacciones");
                if (index > 0)
                {
                    afiliado.Name = Mensajes.Get("ServidorNoResponde");
                    afiliado.SetError(GetType().Name, 37, Mensajes.Get("ServidorNoResponde"), string.Empty, credencial, string.Empty);
                }
                else
                {
                    if (HL7.CampoHL7(msHL7[2], 3, 1) == "B000")
                    {
                        afiliado.Name = HL7.CampoHL7(msHL7[4], 5, 1) + ", " + HL7.CampoHL7(msHL7[4], 5, 2);
                        afiliado.Plan = HL7.CampoHL7(msHL7[5], 2, 0);
                    }
                    else
                    {
                        afiliado.Name = Mensajes.Get("AfiIne");
                    }
                }
            }
            catch (Exception ex)
            {
                afiliado.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", credencial, string.Empty);
            }
            return(afiliado);
        }
示例#3
0
        public Afiliado Elegibilidad(string credencial)
        {
            credencial = "0841233/00";

            string cadena;
            string plan;
            var    afiliado = new Afiliado();

            try
            {
                var cred = credencial.Split('/');
                if (cred.Length > 1)
                {
                    var output = @"MSH|^~\{|TRIT0100M|TRIT00999999|SANCOR_SALUD|SANCOR_SALUD^604940^IIN|";
                    output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQ^Z01^ZQI_Z01|05091908480623465897|P|2.4|||NE|AL|ARG";
                    output += Environment.NewLine;
                    output += "PRD|PS^CIRCULO MEDICO DE SALTA||^^^C||||22^CU|";
                    output += Environment.NewLine;
                    output += "PID|||" + cred[0] + "^" + cred[1] + "^^SANCOR_SALUD^HC||UNKNOWN";
                    output += Environment.NewLine;

                    Sancor.MessageResponse resultado = _sancor.MessageAsync(8, output).Result;

                    logResult(output.ToString(), resultado.ToString(), "E");

                    if (resultado.resultado.ToString() == "")
                    {
                        return new Afiliado {
                                   Name = Mensajes.Get("AfiIne")
                        }
                    }
                    ;
                    if (resultado.resultado.ToString().Contains("Error ejecutando") || resultado.resultado.ToString().Contains("no se pueden procesar") || resultado.resultado.ToString().Contains("Unable to read data"))
                    {
                        return(new Afiliado {
                            Name = Mensajes.Get("ServidorNoResponde"), HasError = true
                        });
                    }
                    // convertimos respuesta en vector
                    var msHL7 = HL7.DecifraHL7Sancor(resultado.resultado.ToString());
                    var index = msHL7[1].IndexOf("En estos momentos, no se pueden procesar transacciones");
                    if (index > 0)
                    {
                        afiliado.Name = Mensajes.Get("ServidorNoResponde");
                        afiliado.SetError(GetType().Name, 37, Mensajes.Get("ServidorNoResponde"), string.Empty, credencial, string.Empty);
                    }
                    else
                    {
                        if (msHL7[4] != null && msHL7[5] != null)
                        {
                            if (HL7.CampoHL7(msHL7[4], 5, 1) != "UNKNOWN")
                            {
                                cadena = HL7.CampoHL7(msHL7[4], 5, 1) + ", " + HL7.CampoHL7(msHL7[4], 5, 2);
                                plan   = HL7.CampoHL7(msHL7[5], 3, 0);
                            }
                            else
                            {
                                cadena = Mensajes.Get("AfiIne");
                                plan   = "";
                            }
                        }
                        else
                        {
                            cadena = Mensajes.Get("AfiIne");;
                            plan   = "";
                        }
                        afiliado.Name = cadena;
                        afiliado.Plan = plan;
                    }
                }
                else
                {
                    afiliado.Name = "Carnet Mal ingresado";
                    afiliado.Plan = "";
                }
            }
            catch (Exception ex)
            {
                var afi = new Afiliado {
                    HasError = true
                };
                afi.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? string.Empty, credencial, string.Empty);
                return(afi);
            }
            return(afiliado);
        }
示例#4
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);
        }
示例#5
0
        public Afiliado Eligibilidad(string credencial)
        {
            string cadena;
            string plan;
            var    afiliado = new Afiliado();

            try
            {
                var output = "MSH|^~\\&|TRIA0100M|TRIA00007160|SWISSHL7|SWISS^800006^IIN|";
                output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQI^Z01^ZQI_Z01|08050522304540783782|P|2.4|||NE|AL|ARG";
                output += Environment.NewLine;
                output += "PRD|PS^Prestador Solicitante||^^^A||||30543364610^CU|";

                output += Environment.NewLine;
                output += "PID|||" + credencial + "^^^SWISS^HC||UNKNOWN";
                output += Environment.NewLine;

                //Call WebService
                var resultado = _traditum.Send(output);
                logResult(output.ToString(), resultado.ToString(), "E");

                var OSerror = false;
                if (resultado == "")
                {
                    return new Afiliado {
                               Name = Mensajes.Get("AfiIne")
                    }
                }
                ;

                if (resultado.Contains("Error ejecutando") || resultado.Contains("no se pueden procesar") || resultado.Contains("Unable to read data") || resultado.Contains("El cliente encontró el tipo de contenido de respuesta"))
                {
                    OSerror = OsStatus.checkSwiss(true);

                    afiliado.Name = Mensajes.Get("ServidorNoResponde");
                    afiliado.SetError(GetType().Name, 37, Mensajes.Get("ServidorNoResponde"), string.Empty, credencial, string.Empty, OSerror);
                    return(afiliado);
                }
                // convertimos respuesta en vector
                var msHL7 = HL7.DecifraHL7(resultado);
                var index = 0;
                if (msHL7.Length > 1)
                {
                    index = msHL7[1].IndexOf("En estos momentos, no se pueden procesar transacciones");
                }
                else
                {
                    index = 2;
                }
                if (index > 0)
                {
                    OSerror       = OsStatus.checkSwiss(true);
                    afiliado.Name = Mensajes.Get("ServidorNoResponde");
                    afiliado.SetError(GetType().Name, 37, Mensajes.Get("ServidorNoResponde"), string.Empty, credencial, string.Empty, OSerror);
                }
                else
                {
                    OSerror = OsStatus.checkSwiss(false);
                    if (HL7.CampoHL7(msHL7[2], 3, 1) == "B000")
                    {
                        cadena = HL7.CampoHL7(msHL7[4], 5, 1) + ", " + HL7.CampoHL7(msHL7[4], 5, 2);
                        plan   = HL7.CampoHL7(msHL7[5], 2, 0);
                    }
                    else
                    {
                        cadena = Mensajes.Get("AfiIne");
                        plan   = "";
                    }
                    afiliado.Name = cadena;
                    afiliado.Plan = plan;
                }
            }
            catch (Exception ex)
            {
                var afi = new Afiliado {
                    HasError = true
                };
                afi.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? string.Empty, credencial, string.Empty);
                return(afi);
            }
            return(afiliado);
        }