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