コード例 #1
0
        public AutorizacionOs Autorizar(Authorize model)
        {
            var autorizacionOs = new AutorizacionOs();

            try
            {
                var outputpres = "";
                var cuenta     = 1;

                var output = "MSH|^~\\&|TRIA0100M|TRIA00007160|SWISSHL7|SWISS^800006^IIN|";
                output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQA^Z02^ZQA_Z02|08050522304540783782|P|2.4|||NE|AL|ARG";
                output += Environment.NewLine;
                output += "PRD|PS^CIRCULO MEDICO DE SALTA||^^^A||||30543364610^CU|";
                output += Environment.NewLine;
                output += "PRD|EF^" + model.Efector.Name + "||^^^C||||" + model.Efector.Cuit + "^CU&M&C|";
                output += Environment.NewLine;
                output += "PID|||800006" + model.Credencial + "^^^SWISS^HC||UNKNOWN";
                output += Environment.NewLine;
                foreach (var prestacion in model.Prestaciones)
                {
                    outputpres += "PR1|" + cuenta + "||" + prestacion.CodPres + Environment.NewLine;
                    outputpres += "AUT||||||||" + prestacion.Cant + "|0" + Environment.NewLine;
                    cuenta++;
                }
                output += outputpres;
                output += "PV1||O||P|||||||||||||||||||||||||||||||||||||||||||||||V";
                output += Environment.NewLine;

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

                //var OSerror = false;
                //if (resultado.Contains("Error ejecutando") || resultado.Contains("no se pueden procesar") || resultado.Contains("Unable to read data"))
                //{
                //    OSerror = OsStatus.checkSwiss(true);
                //    autorizacionOs.ShowMessage = Mensajes.Get("ServidorNoResponde");
                //    autorizacionOs.HasError = true;
                //    autorizacionOs.SetError(GetType().Name, 152, resultado, string.Empty, model, string.Empty, OSerror);
                //    return autorizacionOs;
                //}

                //if (resultado.Substring(0, 4) == "MSH|")
                //{
                //    OSerror = OsStatus.checkSwiss(false);
                //    return SetAutorizacionOs(resultado, model);
                //}

                //OSerror = OsStatus.checkSwiss(true);
                //autorizacionOs.SetError(GetType().Name, 0, resultado, string.Empty, model, string.Empty, OSerror);
            }
            catch (Exception ex)
            {
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
            }
            return(autorizacionOs);
        }
コード例 #2
0
ファイル: OSSancor.cs プロジェクト: josecirmedsa/IPS
        public AutorizacionOs Autorizar(Authorize model)
        {
            var autorizacionOs = new AutorizacionOs();

            try
            {
                var outputpres  = "";
                var diagnostico = "Z111";
                var cuenta      = 1;
                var cred        = model.Credencial.Split('/');

                var output = "MSH|^~\\&|TRIA0100M|TRIA00000003|SANCOR_SALUD|SANCOR_SALUD^604940^IIN|";
                output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQA^Z02^ZQA_Z02|11020208170596892946|P|2.4|||NE|AL|ARG";
                output += Environment.NewLine;
                output += "​||||20110201|20110202|||0|0";
                output += Environment.NewLine;
                output += "PRD|PS^CIRCULO MEDICO DE SALTA||||||96065^PR|";
                output += Environment.NewLine;
                output += "PRD|PL^Salta||||||22^PR|";
                output += Environment.NewLine;
                output += "PRD|PE^" + model.Efector.Name + "^^||||||" + model.Efector.Cuit + "^CU|";
                output += Environment.NewLine;
                output += "PRD|PR^" + model.Efector.Name + "||^^^X||||123456^MP&&X|";
                output += Environment.NewLine;
                output += "PID|||" + cred[0] + "^" + cred[1] + "^^SANCOR_SALUD^HC||UNKNOWN";
                output += Environment.NewLine;
                foreach (var prestacion in model.Prestaciones)
                {
                    if (prestacion.CodPres.Substring(0, 2) != "42")
                    {
                        diagnostico = "Z112";
                    }
                    outputpres += "PR1|1||" + prestacion.CodPres + "^^NM" + Environment.NewLine;
                    outputpres += "AUT||||||||" + prestacion.Cant + Environment.NewLine;
                    // outputpres += "ZAU||||||0&$" + Environment.NewLine;
                    cuenta++;
                }
                output += "DG1|1||" + diagnostico + "^^I10|||W";
                output += Environment.NewLine;
                output += outputpres;

                //Todo descomentar esta linea
                //Sancor.MessageResponse resultado = _sancor.MessageAsync(8, output).Result;
                //logResult(output.ToString(), resultado.ToString(), "A");

                //if (resultado.resultado.Substring(0, 4) == "MSH|") return SetAutorizacionOs(resultado.resultado.ToString(), model);

                //autorizacionOs.SetError(GetType().Name, 0, resultado.resultado.ToString(), string.Empty, model, string.Empty);
            }
            catch (Exception ex)
            {
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
            }
            return(autorizacionOs);
        }
コード例 #3
0
ファイル: OSMedife.cs プロジェクト: josecirmedsa/IPS
        public AutorizacionOs Autorizar(Authorize model)
        {
            var autorizacionOs = new AutorizacionOs();

            try
            {
                var outputpres  = "";
                var diagnostico = "Z111";
                var cuenta      = 1;

                var output = "MSH|^~\\&|TRIA0100M|TRIA00007160|MEDIFE|MEDIFE^222222^IIN|";
                output += DateTime.Now.ToString("yyyyMMddHHmmss") + "||ZQA^Z02^ZQA_Z02|11041510051761231631|P|2.4|||NE|AL|ARG";
                output += Environment.NewLine;
                output += "PRD|PS^CIRCULO MEDICO DE SALTA||^^^C||||30543364610^CU|";
                output += Environment.NewLine;
                output += "PRD|EF^" + model.Efector.Name + "||^^^C||||" + model.Efector.Cuit + "^CU&M&C|";
                output += Environment.NewLine;
                output += "PID|||" + model.Credencial + "^^^MEDIFE^HC^MEDIFE||UNKNOWN";
                output += Environment.NewLine;
                foreach (var prestacion in model.Prestaciones)
                {
                    if (prestacion.CodPres.Substring(0, 2) != "42")
                    {
                        diagnostico = "Z112";
                    }
                    outputpres += "PR1|" + cuenta + "||" + prestacion.CodPres + "^^1" + Environment.NewLine;;
                    outputpres += "AUT||||||||" + prestacion.Cant + Environment.NewLine;;
                    outputpres += "ZAU||||||0&$" + Environment.NewLine;
                    cuenta++;
                }
                output += "DG1|1||" + diagnostico + "^^I10|||W";
                output += Environment.NewLine;
                output += outputpres;

                //Todo descomentar esta linea
                //var resultado = _traditum.Send(output);
                //logResult(output.ToString(), resultado.ToString(), "A");

                //if (resultado.Substring(0, 4) == "MSH|") return SetAutorizacionOs(resultado, model);

                //autorizacionOs.SetError(GetType().Name, 0, resultado, string.Empty, model, string.Empty);
            }
            catch (Exception ex)
            {
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
            }
            return(autorizacionOs);
        }
コード例 #4
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);
        }
コード例 #5
0
ファイル: OSRedSeguros.cs プロジェクト: josecirmedsa/IPS
        public AutorizacionOs Autorizar(Authorize model)
        {
            const string url = "http://ws1.rsmprestadores.com/validar.php?cuit=30-54336461-0&clave=4610&afil=";

            try
            {
                var cadena = "";

                foreach (var prestacion in model.Prestaciones)
                {
                    var codPrest = prestacion.CodPres;
                    var cantidad = prestacion.Cant.ToString();
                    if (cadena.Length > 1)
                    {
                        cadena += ",";
                    }
                    cadena += codPrest + "-" + cantidad;
                }

                var request    = WebRequest.Create(url + model.Credencial + "&nomen=2&codigos=" + cadena);
                var response   = request.GetResponse();
                var dataStream = response.GetResponseStream();
                var reader     = new StreamReader(dataStream);
                var resultado  = reader.ReadToEnd();

                reader.Close();
                response.Close();

                logResult(request.ToString(), resultado.ToString(), "A");

                return(Autorizar(model, resultado, cadena));
            }
            catch (Exception ex)
            {
                var autorizacionOs = new AutorizacionOs {
                    HasError = true
                };
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
                return(autorizacionOs);
            }
        }
コード例 #6
0
        public int Autorizar(AutorizacionOs autorizacionOs)
        {
            var query    = "";
            var queryDet = "";

            try
            {
                query = "INSERT INTO AUTORIZACIONES(NID_AUTORIZACION, CNRO_AUTORIZACION, IDPRE, NCODOSOC, NNRO_AFILIADO, CNOM_AFILIADO, " +
                        "DFEC_AUTORIZACION, CDESCRIPCION_PLAN, CDESCRIPCION_IVA, ESTADO_AUTORIZACION, NID_USUARIO, NESTADO, DFEC_ESTADO, " +
                        "RESULTADO_AUTORIZACION, CCODINTERNO_AUTORIZACION, CCOD_ANULACION, IDFACTURADOR, MODOtIPO ) VALUES( null, '" + autorizacionOs.CnroAutorizacion + "'," + autorizacionOs.Idpre + "," + autorizacionOs.Ncodosoc + ",'" +
                        autorizacionOs.NnroAfiliado + "','" + autorizacionOs.CnomAfiliado + "', TO_DATE('" + autorizacionOs.DfecAutorizacion + "', 'YYYY-MM-DD'),'" + autorizacionOs.CdescripcionPlan + "','" + autorizacionOs.CdescripcionIva + "','" + autorizacionOs.EstadoAutorizacion + "'," +
                        autorizacionOs.NidUsuario + "," + autorizacionOs.Nestado + ",SYSDATE,'" + autorizacionOs.ResultadoAutorizacion + "','" + autorizacionOs.CcodinternoAutorizacion + "',' ', " + autorizacionOs.Idfacturador + ",'" + autorizacionOs.Tipo + "')";

                var c = new Connection();
                c.QueryNoResult(query);

                var iAutId = ObtenerCodigoAsignado(Convert.ToInt32(autorizacionOs.NidUsuario), autorizacionOs.NnroAfiliado);

                foreach (var autorizacion in autorizacionOs.AutorizacionOsDet)
                {
                    //Todo genera elementos vacios, hay que chequear
                    //Todo gravar CNRO_AutorizacionesPres
                    queryDet = "INSERT INTO AUTORIZACIONES_DETALLE(NID_AUTORIZACION, CCODPREST, CNOMPREST, NCANTIDAD, ESTADO_AUTORIZACION, DETALLE_AUTORIZACION,CNRO_AUTORIZACIONPRES) " +
                               "VALUES(" + iAutId + ",'" + autorizacion.PracticaId + "','" + autorizacion.PracticaDes + "'," + (string.IsNullOrEmpty(autorizacion.PracticaCantAprob) ? "1" : autorizacion.PracticaCantAprob) + ",'" + autorizacion.PracticaIdEstado + "','" + autorizacion.PracticaDetAuth + "','" + autorizacion.PracticaAuthNr + "')";
                    c.QueryNoResult(queryDet);
                }

                return(iAutId);
            }
            catch (Exception ex)
            {
                var errores = new Errores();
                errores.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", autorizacionOs, "Query: " + query + " ,QueryDet: " + queryDet);
                return(0);
            }
        }
コード例 #7
0
ファイル: OSPatrones.cs プロジェクト: josecirmedsa/IPS
        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);
        }
コード例 #8
0
ファイル: OSPatrones.cs プロジェクト: josecirmedsa/IPS
        public AutorizacionOs Autorizar(Authorize model)
        {
            var output = new StringBuilder();

            using (var writer = XmlWriter.Create(output))
            {
                writer.WriteStartElement("Mensaje");

                writer.WriteStartElement("EncabezadoMensaje");
                writer.WriteElementString("VersionMsj", "ACT20");
                writer.WriteElementString("TipoMsj", "OL");
                writer.WriteElementString("TipoTransaccion", "02A");

                writer.WriteStartElement("InicioTrx");
                writer.WriteElementString("FechaTrx", DateTime.Now.ToString("yyyyMMdd"));
                writer.WriteElementString("HoraTrx", DateTime.Now.ToString("hhmmss"));
                writer.WriteEndElement();
                writer.WriteStartElement("Terminal");
                writer.WriteElementString("TipoTerminal", "PC");
                writer.WriteElementString("NumeroTerminal", "60000001");
                writer.WriteEndElement();
                writer.WriteStartElement("Financiador");
                writer.WriteElementString("CodigoFinanciador", "PATCAB");
                writer.WriteEndElement();
                writer.WriteStartElement("Prestador");
                writer.WriteElementString("CuitPrestador", "30543364610");
                writer.WriteElementString("RazonSocial", "Circulo Medico de Salta");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteStartElement("EncabezadoAtencion");
                writer.WriteStartElement("Credencial");
                writer.WriteElementString("NumeroCredencial", model.Credencial);  //model.Credencial); //"0100002201"
                writer.WriteElementString("VersionCredencial", "M");
                writer.WriteElementString("ModoIngreso", "00");
                writer.WriteEndElement();
                writer.WriteEndElement();

                foreach (var prestacion in model.Prestaciones)
                {
                    writer.WriteStartElement("DetalleProcedimientos");
                    writer.WriteElementString("CodPrestacion", prestacion.CodPres);
                    writer.WriteElementString("TipoPrestacion", "1");
                    writer.WriteElementString("CantidadSolicitada", prestacion.Cant.ToString());
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
            }

            try
            {
                var resultado = service.ExecuteFileTransactionSLAsync("0000", output.ToString()).Result;
                logResult(output.ToString(), resultado.ToString(), "A");

                return(SetAutorizacionOs(resultado, model));
            }
            catch (Exception ex)
            {
                var autorizacionOs = new AutorizacionOs();
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
                return(autorizacionOs);
            }
        }
コード例 #9
0
        public AutorizacionVer Autorizacion(Authorize model)
        {
            var autorizacionOs  = new AutorizacionOs();
            var autorizacionVer = new AutorizacionVer();

            try
            {
                model.Efector = DatosPrestador(Convert.ToInt32(model.PrestadorId));
                switch (model.OSId)
                {
                case 0:
                    break;

                case 1:    //Swiss Medical
                    var swiss = new OSSwiss();
                    autorizacionOs = swiss.Autorizar(model);
                    break;

                case 2:
                    var acaSalud = new OSAcaSalud();
                    autorizacionOs = acaSalud.Autorizar(model).Result;
                    break;

                case 5:
                case 8:
                    var boreal = new OSBoreal();
                    autorizacionOs = boreal.Autorizar(model);
                    break;

                case 6:
                    var medife = new OSMedife();
                    autorizacionOs = medife.Autorizar(model);
                    break;

                case 7:
                    var redSeguros = new OSRedSeguros();
                    autorizacionOs = redSeguros.Autorizar(model);
                    break;

                case 9:
                    var sancor = new OSSancor();
                    autorizacionOs = sancor.Autorizar(model);
                    break;

                case 10:
                    //Luz y Fuerza
                    break;

                case 11:
                    var os = new OSPatrones();
                    autorizacionOs = os.Autorizar(model);
                    break;
                }
                if (!autorizacionOs.HasError)
                {
                    var authNr = Autorizar(autorizacionOs);
                    //Todo Guardar en Base de Datos
                    // return cod Autorizacion;
                    //Al menos retornar codigo de Autorizacion
                    autorizacionVer.AuthNr            = autorizacionOs.CnroAutorizacion;// .CcodinternoAutorizacion;
                    autorizacionVer.Fecha             = autorizacionOs.DfecAutorizacion;
                    autorizacionVer.Afiliado          = autorizacionOs.CnomAfiliado;
                    autorizacionVer.Plan              = autorizacionOs.CdescripcionPlan;
                    autorizacionVer.Iva               = autorizacionOs.CdescripcionIva;
                    autorizacionVer.IdentificacionNro = autorizacionOs.NnroAfiliado;
                    autorizacionVer.Aseguradora       = model.OsNombre;
                    autorizacionVer.Matricula         = model.Efector.Matricula.ToString();
                    autorizacionVer.Profesional       = model.Efector.Name;
                    autorizacionVer.Estado            = autorizacionOs.EstadoAutorizacion;
                    autorizacionVer.Id = authNr;
                    foreach (var det in autorizacionOs.AutorizacionOsDet)
                    {
                        var authVerDet = new AutorizacionVerDet
                        {
                            Prestacion  = "(" + det.PracticaId + ") - " + det.PracticaDes,
                            Cantidad    = (string.IsNullOrEmpty(det.PracticaCantAprob) ? "1" : det.PracticaCantAprob),
                            Estado      = det.PracticaIdEstado,
                            Observacion = det.PracticaDetAuth
                        };
                        autorizacionVer.Detalle.Add(authVerDet);
                    }
                    ///Todo:Enviar Mail con info de Autoizacion
                    //SendMail.SendMailAutirizacion(autorizacionVer);
                }
                else
                {
                    autorizacionVer.HasError = autorizacionOs.HasError;
                    autorizacionVer.Error    = autorizacionOs.Error;
                }
            }
            catch (Exception ex)
            {
                autorizacionVer.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? string.Empty, model, string.Empty);
            }
            return(autorizacionVer);
        }
コード例 #10
0
ファイル: OSMedife.cs プロジェクト: josecirmedsa/IPS
        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);
        }
コード例 #11
0
ファイル: OSBoreal.cs プロジェクト: josecirmedsa/IPS
        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);
        }
コード例 #12
0
ファイル: OsAcaSalud.cs プロジェクト: josecirmedsa/IPS
        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);
        }
コード例 #13
0
ファイル: OsAcaSalud.cs プロジェクト: josecirmedsa/IPS
        public async Task <AutorizacionOs> Autorizar(Authorize model)
        {
            var    autorizacionOs = new AutorizacionOs();
            string resultado;

            try
            {
                var output = new StringBuilder();
                using (var writer = XmlWriter.Create(output))
                {
                    writer.WriteStartElement("SOLICITUD");

                    writer.WriteStartElement("EMISOR");
                    writer.WriteElementString("ID", "00001-22222");
                    writer.WriteElementString("PROT", "CA_V20");
                    writer.WriteElementString("MSGID", DateTime.Now.ToString("yyyyMMdd") + model.Efector.Matricula);//completar
                    writer.WriteElementString("TER", "");
                    writer.WriteElementString("APP", "HMS_CAWEB");
                    writer.WriteElementString("TIME", DateTime.Now.ToString());
                    writer.WriteEndElement();

                    writer.WriteStartElement("SEGURIDAD");
                    writer.WriteElementString("TIPOAUT", "U");
                    writer.WriteElementString("USRID", "7040521");
                    writer.WriteElementString("USRPASS", "DAT_MGR");
                    writer.WriteEndElement();

                    writer.WriteStartElement("OPER");
                    writer.WriteElementString("TIPO", "AP");
                    writer.WriteElementString("FECHA", DateTime.Now.ToString("yyyy-MM-dd"));
                    writer.WriteElementString("IDASEG", "ACA_SALUD");
                    writer.WriteElementString("IDPRESTADOR", "7040521");
                    writer.WriteEndElement();

                    writer.WriteStartElement("PID");
                    if (model.Tipo == "B")
                    {
                        writer.WriteElementString("TIPOID", "CODIGO");
                    }
                    writer.WriteElementString("ID", model.Credencial);
                    if (model.Tipo == "B")
                    {
                        writer.WriteElementString("VERIFID", "AUTO");
                    }
                    writer.WriteEndElement();

                    writer.WriteStartElement("CONTEXTO");
                    writer.WriteElementString("TIPO", "A");
                    writer.WriteEndElement();

                    writer.WriteStartElement("PRESCRIP");
                    writer.WriteElementString("ORG", "MP A");
                    writer.WriteElementString("MAT", model.Efector.Matricula.ToString());
                    writer.WriteElementString("FECHA", DateTime.Now.ToString("yyyy-MM-dd"));
                    writer.WriteEndElement();

                    foreach (var objPrestacion in model.Prestaciones)
                    {
                        writer.WriteStartElement("PR");
                        writer.WriteElementString("TIPO", "P");
                        writer.WriteElementString("ID", objPrestacion.CodPres);
                        writer.WriteElementString("CANT", objPrestacion.Cant.ToString());

                        writer.WriteStartElement("EFECTOR");
                        writer.WriteElementString("ORG", "MP A");
                        writer.WriteElementString("MAT", model.Efector.Matricula.ToString());
                        writer.WriteEndElement();
                        writer.WriteEndElement();
                    }

                    writer.WriteEndElement();
                }

                //using (var client = new HttpClient())
                //{
                //    var url = urlBase + HttpUtility.UrlEncode(output.ToString());
                //    client.BaseAddress = new Uri(url);
                //    client.DefaultRequestHeaders.Accept.Clear();

                //    Task<HttpResponseMessage> response = client.GetAsync(url);
                //    resultado = await response.Result.Content.ReadAsStringAsync();
                //    resultado = HttpUtility.HtmlDecode(resultado);
                //}

                //logResult(output.ToString(), resultado, "A");

                //return SetAutorizacionOs(resultado, model);
                return(null);
            }
            catch (Exception ex)
            {
                autorizacionOs.SetError(GetType().Name, GetMethod.ErrorLine(ex), ex.Message, ex.InnerException?.ToString() ?? "", model, string.Empty);
                return(autorizacionOs);
            }
        }
コード例 #14
0
ファイル: OSRedSeguros.cs プロジェクト: josecirmedsa/IPS
        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);
        }