Ejemplo n.º 1
0
        private List <His2lis> BuildOrderRequest(PeticionEntrante ordersData)
        {
            RequestParser      messageParser      = new RequestParser();
            RequestBuilderUtil requestBuilderUtil = new RequestBuilderUtil();
            List <His2lis>     orderList          = new List <His2lis>();


            var           requestOrderMessage = ordersData;
            List <String> lastNames           = requestBuilderUtil.getLastNames(requestOrderMessage.Pid5_1_familyName);

            foreach (var orderDetail in requestOrderMessage.ListaORB)
            {
                var newOrder = new His2lis();
                newOrder.Orden          = requestBuilderUtil.compuseOrderId(requestOrderMessage.Orc4_placerGroupNumer);
                newOrder.Fsolicitud     = requestBuilderUtil.currentDateFormated();
                newOrder.Origen         = requestOrderMessage.Pv2_patientClass;
                newOrder.Servicio       = requestOrderMessage.Orc13_1_pointOfCare;
                newOrder.Doctor         = requestOrderMessage.Orc12_1_idNumber;
                newOrder.Libre          = "1";
                newOrder.Identificacion = requestOrderMessage.Pid3_1_idNumber;
                newOrder.Nombre         = requestOrderMessage.Pid5_2_givenName + " " + requestOrderMessage.Pid5_3_secondName;
                newOrder.Apell1         = lastNames[0];
                newOrder.Apell2         = lastNames[1];
                newOrder.Edad           = requestBuilderUtil.getAges(requestOrderMessage.Pid7_datetimeBirth);
                newOrder.Codigo         = orderDetail.Obr4_4_AlternateIdentifier;
                newOrder.Sexo           = requestBuilderUtil.getGender(requestOrderMessage.Pid8_AdministrativeSex);
                orderList.Add(newOrder);
            }

            return(orderList);
        }
Ejemplo n.º 2
0
        private async Task <Boolean> saveTransaction(PeticionEntrante ordersData, string messageString)
        {
            RequestBuilderUtil utilData       = new RequestBuilderUtil();
            Transacciones      newTransaction = new Transacciones();
            string             orderID        = utilData.compuseOrderId(ordersData.Orc4_placerGroupNumer);

            newTransaction.Peticion  = messageString;
            newTransaction.Estado    = 0;
            newTransaction.Fecha     = DateTime.Now;
            newTransaction.Completas = 0;
            newTransaction.Pruebas   = ordersData.ListaORB.Count();
            newTransaction.Siapsid   = orderID;
            newTransaction.Ox        = ordersData.Orc1_orderControl;
            newTransaction.Orc       = int.Parse(ordersData.Orc2_placerOrderNumer);

            if (newTransaction.Ox == CoreConfiguration.ModificacionString)
            {
                _context.RemoveRange(_context.His2lis.Where(data => data.Orden == orderID));
                _context.RemoveRange(_context.Ohistidx.Where(data => data.Orden == orderID));
                _context.RemoveRange(_context.Oficha.Where(data => data.Custom == decimal.Parse(orderID)));
                _context.RemoveRange(_context.OtPerfil.Where(data => data.OtPerfilOrder == decimal.Parse(orderID)));
                _context.RemoveRange(_context.Ot.Where(data => data.TCustom == decimal.Parse(orderID)));
                var deleteCount    = _context.SaveChanges();
                var oldTransaction = _hl7Context.Transacciones.Where(data => data.Siapsid == ordersData.Orc4_placerGroupNumer);
                foreach (Transacciones tran in oldTransaction)
                {
                    tran.Estado = 8;
                }
                _hl7Context.Transacciones.UpdateRange(oldTransaction);
                _hl7Context.SaveChanges();
            }
            _hl7Context.Transacciones.Add(newTransaction);
            var result = await _hl7Context.SaveChangesAsync();

            return(result > 0);
        }
Ejemplo n.º 3
0
    public Boolean nuevaPeticion(PeticionEntrante datos)
    {
        conOpenf = new conexion();
        conOpenf.conectar();
        cone = conOpenf.getConexion();
        int    afectadas       = 0;
        string fechaNacimiento = datos.Pid7_datetimeBirth;

        DateTime nacimiento = DateTime.ParseExact(fechaNacimiento + " 00:00:00", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);


        DateTime fecha_Actual = DateTime.Now;
        int      edad         = (fecha_Actual - nacimiento).Days / 365;

        foreach (Peticion_obr orb_detalle in datos.ListaORB)
        {
            DateTime        fechaActualCodigo   = DateTime.Now;
            System.DateTime dateTimeTransaction = DateTime.Now;

            string fechaFormateada = dateTimeTransaction.ToString("yyyy-MM-dd");

            cmd = null;
            //query = "INSERT INTO HIS2LIS (Orden, FSolicitud, Origen, Servicio, Doctor, Libre, Identificacion, Nombre, Apell1, Apell2, Sexo, Codigo, Edad) " +
            // "VALUES (@POrdens, '"+ fechaFormateada + "' , @POrigens, @PServicios, @PDoctors, @Plibres, @PIdentificacions, @PNombres, @PApell1s, @PApell2s, @PSexos, @PCodigos, @Pedad)";
            query = "INSERT INTO HIS2LIS (Orden, FSolicitud, Origen, Servicio, Doctor, Libre, Identificacion, Nombre, Apell1, Apell2, Sexo, Codigo) " +
                    "VALUES (@POrdens, '" + fechaFormateada + " 00:00:00' , @POrigens, @PServicios, @PDoctors, @Plibres, @PIdentificacions, @PNombres, @PApell1s, @PApell2s, @PSexos, @PCodigos)";

            try
            {
                cmd = new SqlCommand(query, cone);
                string[] apellidos = datos.Pid5_1_familyName.Split(' ');

                string ordenFinal = fechaActualCodigo.ToString("yyMMdd") + datos.Orc2_placerOrderNumer + int.Parse(datos.Msh10_messageControlID);

                cmd.Parameters.Add(new SqlParameter("@POrdens", ordenFinal));
                var salaryParam = new SqlParameter("PFSolicituds", SqlDbType.SmallDateTime);
                salaryParam.Value = dateTimeTransaction.ToShortDateString();
                cmd.Parameters.Add(new SqlParameter("@POrigens", datos.Pv2_patientClass));
                cmd.Parameters.Add(new SqlParameter("@PServicios", datos.Orc13_1_pointOfCare));
                cmd.Parameters.Add(new SqlParameter("@PDoctors", datos.Orc12_1_idNumber));
                cmd.Parameters.Add(new SqlParameter("@Plibres", 1));
                cmd.Parameters.Add(new SqlParameter("@PIdentificacions", datos.Pid3_1_idNumber)); //paciente ID
                cmd.Parameters.Add(new SqlParameter("@PNombres", datos.Pid5_2_givenName + " " + datos.Pid5_3_secondName));
                cmd.Parameters.Add(new SqlParameter("@PApell1s", apellidos[0]));                  //Hacer split de los apellidos
                cmd.Parameters.Add(new SqlParameter("@PApell2s", apellidos[1]));
                //cmd.Parameters.Add(new SqlParameter("@Pedad", edad));
                //cmd.Parameters.Add(new SqlParameter("@Pedad", null));
                if (datos.Pid8_AdministrativeSex == "2")
                {
                    cmd.Parameters.Add(new SqlParameter("@PSexos", "F")); //Revisar tabla Masculino = M, Femenino = F
                }
                else
                {
                    cmd.Parameters.Add(new SqlParameter("@PSexos", "M")); //Revisar tabla Masculino = M, Femenino = F
                }
                //cmd.Parameters.Add(new SqlParameter("@PCodigos", orb_detalle.Obr4_4_AlternateIdentifier));
                cmd.Parameters.Add(new SqlParameter("@PCodigos", orb_detalle.Obr4_4_AlternateIdentifier));


                afectadas += cmd.ExecuteNonQuery();

                System.Diagnostics.Debug.WriteLine("Afectadas " + afectadas);
                System.Diagnostics.Debug.WriteLine(cmd.CommandText);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                cone.Close();
            }
        }
        cone.Close();
        if (afectadas > 0)
        {
            return(true);
        }

        return(true);
    }
Ejemplo n.º 4
0
        public PeticionEntrante decodeOrderData(PetitionElements jsonElements)
        {
            PeticionEntrante newOrder = this.decodeMessageData(jsonElements.Mensaje);

            return(newOrder);
        }
Ejemplo n.º 5
0
        private PeticionEntrante decodeMessageData(string jsonValue)
        {
            string MessageData = jsonValue.Replace("ORC", "\rORC");

            MessageData = MessageData.Replace("OBR", "\rOBR");
            MessageData = MessageData.Replace("PID", "\rPID");
            MessageData = MessageData.Replace("PV1", "\rPV1");
            MessageData = MessageData.Replace("SPM", "\rSPM");

            PeticionEntrante requestOrderMessage = new PeticionEntrante();
            //System.Diagnostics.Debug.WriteLine("PETICION: " + peticion);
            var mensaje = NextLevelSeven.Core.Message.Build(MessageData);
            // first segment in a message (returns IElement)
            var mshSegment = mensaje[1];

            //Llenado de la cabecera MSH
            requestOrderMessage.Msh3_sendingApplication             = mshSegment.Field(3).ToString();
            requestOrderMessage.Msh4_sendingFacility                = mshSegment.Field(4).ToString();
            requestOrderMessage.Msh5_receivingApplication           = mshSegment.Field(5).ToString();
            requestOrderMessage.Msh6_recivingFacilty                = mshSegment.Field(6).ToString();
            requestOrderMessage.Msh6_1_idSuministrasnte             = mshSegment.Field(6).Component(1).ToString();
            requestOrderMessage.Msh7_dateTimeMessage                = mshSegment.Field(7).ToString();
            requestOrderMessage.Msh9_1_messageCode                  = mshSegment.Field(9).Component(1).ToString();
            requestOrderMessage.Msh9_2_triggerEvent                 = mshSegment.Field(9).Component(2).ToString();
            requestOrderMessage.Msh10_messageControlID              = mshSegment.Field(10).ToString();
            requestOrderMessage.Msh11_processingID                  = mshSegment.Field(11).ToString();
            requestOrderMessage.Msh12_versionId                     = mshSegment.Field(12).ToString();
            requestOrderMessage.Msh15_acceptAcknowledgmentType      = mshSegment.Field(15).ToString();
            requestOrderMessage.Msh16_applicationAcknowledgmentType = mshSegment.Field(16).ToString();

            //Segmento PID (Paciente ID)
            var pidSegment = mensaje.Segments.OfType("PID").First();

            requestOrderMessage.Pid1_pdi                 = pidSegment.Field(1).Component(1).ToString();
            requestOrderMessage.Pid3_1_idNumber          = pidSegment.Field(3).Component(1).ToString();
            requestOrderMessage.Pid3_4_assigningAutority = pidSegment.Field(3).Component(4).ToString();
            requestOrderMessage.Pid5_1_familyName        = pidSegment.Field(5).Component(1).ToString();
            requestOrderMessage.Pid5_2_givenName         = pidSegment.Field(5).Component(2).ToString();
            requestOrderMessage.Pid5_3_secondName        = pidSegment.Field(5).Component(3).ToString();
            requestOrderMessage.Pid7_datetimeBirth       = pidSegment.Field(7).ToString();
            requestOrderMessage.Pid8_AdministrativeSex   = pidSegment.Field(8).ToString();

            //Segmento PV (visita)
            var pv1Segment = mensaje.Segments.OfType("PV1").First();

            requestOrderMessage.Pv1_idNumber                = pv1Segment.Field(1).ToString();
            requestOrderMessage.Pv2_patientClass            = pv1Segment.Field(2).ToString();
            requestOrderMessage.Pv3_assignedPatientLocation = pv1Segment.Field(3).ToString();

            //Segmento ORC
            var orcSegment = mensaje.Segments.OfType("ORC").First();

            requestOrderMessage.Orc1_orderControl        = orcSegment.Field(1).ToString();
            requestOrderMessage.Orc2_placerOrderNumer    = orcSegment.Field(2).ToString();
            requestOrderMessage.Orc4_placerGroupNumer    = orcSegment.Field(4).ToString();
            requestOrderMessage.Orc9_datimeTransaction   = orcSegment.Field(9).ToString();
            requestOrderMessage.Orc12_1_idNumber         = orcSegment.Field(12).Component(1).ToString();
            requestOrderMessage.Orc13_1_pointOfCare      = orcSegment.Field(13).Component(1).ToString();
            requestOrderMessage.Orc17_1_identifier       = orcSegment.Field(17).Component(1).ToString();
            requestOrderMessage.Orc17_2_text             = orcSegment.Field(17).Component(2).ToString();
            requestOrderMessage.Orc21_1_orginizationName = orcSegment.Field(21).Component(1).ToString();
            requestOrderMessage.Orc21_3_IdNumber         = orcSegment.Field(21).Component(3).ToString();

            //Segmento OBR
            var obrSegment = mensaje.Segments.OfType("OBR");

            foreach (var objeto in obrSegment)
            {
                Peticion_obr newObr = new Peticion_obr();
                newObr.Obr1_idOBR                 = objeto.Field(1).ToString();
                newObr.Obr2_placerOrderNumber     = objeto.Field(2).ToString();
                newObr.Obr4_1_Identifier          = objeto.Field(4).Component(1).ToString();
                newObr.Obr4_2_text                = objeto.Field(4).Component(2).ToString();
                newObr.Obr4_4_AlternateIdentifier = objeto.Field(4).Component(4).ToString();
                newObr.Obr7_ObservationDate       = objeto.Field(7).ToString();
                newObr.Obr10_CollectorIdentifier  = objeto.Field(10).ToString();
                newObr.Obr15_specimenSource       = objeto.Field(15).ToString();
                requestOrderMessage.ListaORB.Add(newObr);
            }

            return(requestOrderMessage);
        }
Ejemplo n.º 6
0
    public void generarRespuestas()
    {
        openfDBManager       managerDBOpenf    = new openfDBManager();
        hl7DBManager         managerDBOhl7     = new hl7DBManager();
        Repuesta             resultadoRepuesta = new Repuesta();
        hl7parser            parseadorHl7      = new hl7parser();
        Util                 utilidades        = new Util();
        DateTime             now                = DateTime.Now;
        string               respuesta          = "";
        List <transacciones> listaPendientes    = new List <transacciones>();
        List <resultview>    resultadosObtenido = new List <resultview>();
        Boolean              orcCargado         = false;

        //now.ToString("yyyyMMddHHmm"); // case sensitive
        resultadoRepuesta.Msh_1_fielSeparador                = "|";
        resultadoRepuesta.Msh_2_EncodeingCaracters           = @"^~\&";
        resultadoRepuesta.Msh_3_sendingApplication           = "Nexus Web Service";
        resultadoRepuesta.Msh_4_1_namespaceId                = "7";
        resultadoRepuesta.Msh_4_2_UniversalID                = "DIAGNOSTIKAL CAPRIS";
        resultadoRepuesta.Msh_5_ReceivingApplication         = "SIAP";
        resultadoRepuesta.Msh_6_ReceivingFacility            = "MINSAL";
        resultadoRepuesta.Msh_7_DateTimeOfMessage            = now.ToString("yyyyMMddHHmm");
        resultadoRepuesta.Msh_9_1_MessageCode                = "OUL";
        resultadoRepuesta.Msh_9_2_TriggerEvent               = "R22";
        resultadoRepuesta.Msh_10_MessageControlId            = "3";
        resultadoRepuesta.Msh_11_ProcessingID                = "D";
        resultadoRepuesta.Msh_12_VersionId                   = "2.5.1";
        resultadoRepuesta.Msh_15_acceptAcknowledgemeType     = "AL";
        resultadoRepuesta.Msh_16_ApplicationAcknowledgmeType = "AL";


        listaPendientes = managerDBOhl7.obtenerPendientes();

        foreach (transacciones tranIncompleta in listaPendientes)
        {
            int contadorObr = 1;
            orcCargado         = false;
            respuesta          = "";
            resultadosObtenido = new List <resultview>();
            resultadosObtenido = managerDBOpenf.getResultados(int.Parse(tranIncompleta.Siapsid));
            PeticionEntrante peticionActual = new PeticionEntrante();
            peticionActual = parseadorHl7.leerPeticion(tranIncompleta.Peticion);



            if (resultadosObtenido.Count() > 0)
            {
                resultadoRepuesta.Orc_1_codigoDeControl  = "NW";
                resultadoRepuesta.Orc_2_IdSolicitudSiaps = tranIncompleta.Siapsid;
                resultadoRepuesta.Orc_5_EstatusOrden     = "CM";
                resultadoRepuesta.Orc_9_FechaDeEnvio     = now.ToString("yyyyMMddHHmm");


                //resultadosObtenido = managerDBOpenf.getResultados(int.Parse(tranIncompleta.Respuesta));

                foreach (Peticion_obr obrPeticion in peticionActual.ListaORB)
                {
                    List <resultview> ResultadosObx = new List <resultview>();
                    ResultadosObx = managerDBOpenf.getResultadosByEstudio(int.Parse(tranIncompleta.Siapsid), obrPeticion.Obr4_4_AlternateIdentifier);

                    string examenIdStudio      = ResultadosObx[0].Estudio;
                    string TipoExamenPlantilla = ResultadosObx[0].Plantilla;


                    Repuesta_Orb nuevaObrResult = new Repuesta_Orb();
                    nuevaObrResult.Obr_1_IDOBR                = contadorObr;
                    nuevaObrResult.Obr_2_PlacerOrdeNumber     = obrPeticion.Obr2_placerOrderNumber;
                    nuevaObrResult.Obr_4_1_Identifier         = managerDBOpenf.getExamenId(examenIdStudio);
                    nuevaObrResult.Obr_4_2_Text               = managerDBOpenf.getExamenName(examenIdStudio);
                    nuevaObrResult.Obr_4_3_NameOfCodingSystem = "L";
                    if (TipoExamenPlantilla == "A")
                    {
                        nuevaObrResult.Obr_4_4_AlternateIdentifier = managerDBOpenf.getAbreviado(ResultadosObx[0].Estudio);
                    }
                    else
                    {
                        nuevaObrResult.Obr_4_4_AlternateIdentifier = nuevaObrResult.Obr_4_2_Text.Substring(0, 2);
                    }
                    nuevaObrResult.Obr_4_5_AlternateText = nuevaObrResult.Obr_4_2_Text;

                    nuevaObrResult.Obr_8_ObservationEndDateTime = ResultadosObx[0].Fecha.ToString();

                    nuevaObrResult.Obr_10_CollectorIdentifier            = obrPeticion.Obr10_CollectorIdentifier;
                    nuevaObrResult.Obr_16_1_IdNumber                     = peticionActual.Orc12_1_idNumber;
                    nuevaObrResult.Obr_16_2_FamilyName                   = peticionActual.Orc12_2_familyName;
                    nuevaObrResult.Obr_22_ResultReptStatusChangeDateTime = now.ToString("yyyyMMddHHmm");
                    nuevaObrResult.Obr_24_DiagnosticServiceID            = managerDBOpenf.getTipoExame(ResultadosObx[0].Estudio);//REVISAR ESTOOOOOOOOOOOOOOOO  *Revisado
                    nuevaObrResult.Obr_25_ResultStatus                   = "F";

                    if (!orcCargado)
                    {
                        resultadoRepuesta.Orc_12_1_CodigoProfesional = ResultadosObx[0].Responsable;
                        resultadoRepuesta.Orc_12_2_NombreProfesional = managerDBOpenf.getEncargadoName(ResultadosObx[0].Responsable);
                        string orc = @"ORC|" + resultadoRepuesta.Orc_1_codigoDeControl + "|" + resultadoRepuesta.Orc_2_IdSolicitudSiaps + "|||" + resultadoRepuesta.Orc_5_EstatusOrden + "||||" + resultadoRepuesta.Orc_9_FechaDeEnvio + "|||" + resultadoRepuesta.Orc_12_1_CodigoProfesional + "^" + resultadoRepuesta.Orc_12_2_NombreProfesional + "_z";

                        resultadoRepuesta.Msh_1_fielSeparador                = "|";
                        resultadoRepuesta.Msh_2_EncodeingCaracters           = @"^~\&";
                        resultadoRepuesta.Msh_3_sendingApplication           = "Nexus Web Service";
                        resultadoRepuesta.Msh_4_1_namespaceId                = "7";
                        resultadoRepuesta.Msh_4_2_UniversalID                = "DIAGNOSTIKAL CAPRIS";
                        resultadoRepuesta.Msh_5_ReceivingApplication         = "SIAP";
                        resultadoRepuesta.Msh_6_ReceivingFacility            = "MINSAL";
                        resultadoRepuesta.Msh_7_DateTimeOfMessage            = now.ToString("yyyyMMddHHmm");
                        resultadoRepuesta.Msh_9_1_MessageCode                = "OUL";
                        resultadoRepuesta.Msh_9_2_TriggerEvent               = "R22";
                        resultadoRepuesta.Msh_10_MessageControlId            = "3";
                        resultadoRepuesta.Msh_11_ProcessingID                = "D";
                        resultadoRepuesta.Msh_12_VersionId                   = "2.5.1";
                        resultadoRepuesta.Msh_15_acceptAcknowledgemeType     = "AL";
                        resultadoRepuesta.Msh_16_ApplicationAcknowledgmeType = "AL";

                        resultadoRepuesta.Msh_10_MessageControlId = peticionActual.Msh10_messageControlID;
                        resultadoRepuesta.Msh_4_1_namespaceId     = peticionActual.Msh6_1_idSuministrasnte;
                        string msh = @"MSH" + resultadoRepuesta.Msh_1_fielSeparador + "^~\\u005Cu005C&|" + resultadoRepuesta.Msh_3_sendingApplication + "|" + resultadoRepuesta.Msh_4_1_namespaceId + "^" + resultadoRepuesta.Msh_4_2_UniversalID + "|" + resultadoRepuesta.Msh_5_ReceivingApplication + "|" + resultadoRepuesta.Msh_6_ReceivingFacility + "|" + resultadoRepuesta.Msh_7_DateTimeOfMessage + "||" + resultadoRepuesta.Msh_9_1_MessageCode + "^" + resultadoRepuesta.Msh_9_2_TriggerEvent + "|" + resultadoRepuesta.Msh_10_MessageControlId + "|" + resultadoRepuesta.Msh_11_ProcessingID + "|" + resultadoRepuesta.Msh_12_VersionId + "|||" + resultadoRepuesta.Msh_15_acceptAcknowledgemeType + "|" + resultadoRepuesta.Msh_16_ApplicationAcknowledgmeType + "_z";



                        respuesta  = msh + orc;
                        orcCargado = true;
                    }

                    //SECCIONES DE LOS OBX
                    Respuesta_obx_cualitativo nuevaObxCualitativo = new Respuesta_obx_cualitativo();
                    nuevaObxCualitativo.Obx_1_IdObx              = "1";
                    nuevaObxCualitativo.Obx_2_TipoDato           = "ST";
                    nuevaObxCualitativo.Obx_3_IdExamenSolicitado = nuevaObrResult.Obr_4_1_Identifier;

                    int contadorObx = 2;

                    if (TipoExamenPlantilla == "A")
                    {
                        foreach (resultview resultadoAImprimir in ResultadosObx)
                        {
                            Respuesta_obx nuevoObxCuantitativo = new Respuesta_obx();
                            nuevoObxCuantitativo.Obx_1_ObxId            = contadorObx.ToString();
                            nuevoObxCuantitativo.Obx_2_ValueType        = "NM";
                            nuevoObxCuantitativo.Obx_3_1_Identifier     = nuevaObrResult.Obr_4_1_Identifier;
                            nuevoObxCuantitativo.Obx_3_2_text           = nuevaObrResult.Obr_4_2_Text;
                            nuevoObxCuantitativo.Obx_4_observationSubid = "Instrumento";
                            nuevoObxCuantitativo.Obx_6_units            = managerDBOpenf.getUnitstest(resultadoAImprimir.Parametro);
                            string   fechaNacimiento = peticionActual.Pid7_datetimeBirth;
                            DateTime nacimiento      = DateTime.ParseExact(fechaNacimiento + " 00:00:00", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                            DateTime fecha_Actual    = DateTime.Now;
                            int      edadDias        = (fecha_Actual - nacimiento).Days;
                            float    resultadoValue  = 0;
                            string   PrimerCaracter  = resultadoAImprimir.Resultado.Substring(0, 1);
                            if (PrimerCaracter == ".")
                            {
                                resultadoValue = float.Parse("0" + resultadoAImprimir.Resultado);
                            }
                            else
                            {
                                resultadoValue = float.Parse(resultadoAImprimir.Resultado);
                            }
                            nuevoObxCuantitativo.Obx_5_ObservationValue = resultadoAImprimir.Resultado;

                            Rango rangosObtenidos = managerDBOpenf.getRangos(int.Parse(resultadoAImprimir.Parametro), edadDias, resultadoValue);
                            nuevoObxCuantitativo.Obx_7_rangeReference           = rangosObtenidos.RangoInferior.ToString() + " - " + rangosObtenidos.RangoSuperior.ToString();
                            nuevoObxCuantitativo.Obx_11_ObservationResultStatus = "F";
                            nuevoObxCuantitativo.Obx_14_dateofObservation       = nuevaObrResult.Obr_8_ObservationEndDateTime;
                            nuevaObrResult.ListObxCuantitativos.Add(nuevoObxCuantitativo);

                            nuevaObxCualitativo.Obx_4_IdDelResultado       = rangosObtenidos.IdComentario.ToString(); //revisar
                            nuevaObxCualitativo.Obx_5_ResultadoCualitativo = rangosObtenidos.Comentario;              //revisar

                            contadorObx++;
                        }
                    }
                    else if (TipoExamenPlantilla == "B" || TipoExamenPlantilla == "E")//PlantillaB y E
                    {
                        foreach (resultview resultadoAImprimir in ResultadosObx)
                        {
                            if (resultadoAImprimir.Parametro != "25070" && resultadoAImprimir.Parametro != "85115")
                            {
                                string        fechaNacimiento      = peticionActual.Pid7_datetimeBirth;
                                DateTime      nacimiento           = DateTime.ParseExact(fechaNacimiento + " 00:00:00", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                                DateTime      fecha_Actual         = DateTime.Now;
                                int           edadDias             = (fecha_Actual - nacimiento).Days;
                                Respuesta_obx nuevoObxCuantitativo = new Respuesta_obx();
                                nuevoObxCuantitativo.Obx_1_ObxId = contadorObx.ToString();

                                Boolean isNumeric = resultadoAImprimir.Resultado.All(char.IsNumber);
                                if (isNumeric)
                                {
                                    nuevoObxCuantitativo.Obx_2_ValueType = "NM";
                                    subElemento SubElementoRespuesta = managerDBOpenf.getSubElemeto(resultadoAImprimir.Estudio, resultadoAImprimir.Parametro, peticionActual.Pid8_AdministrativeSex, edadDias);
                                    //COdigo de examen
                                    nuevoObxCuantitativo.Obx_3_1_Identifier = SubElementoRespuesta.Codigo;
                                    //Nombre Examen
                                    nuevoObxCuantitativo.Obx_3_2_text           = SubElementoRespuesta.Nombre;
                                    nuevoObxCuantitativo.Obx_4_observationSubid = "Instrumento";
                                    float  resultadoValue = 0;
                                    string PrimerCaracter = resultadoAImprimir.B_Elemento.Substring(0, 1);
                                    if (PrimerCaracter == ".")
                                    {
                                        resultadoValue = float.Parse("0" + resultadoAImprimir.Resultado);
                                    }
                                    else
                                    {
                                        resultadoValue = float.Parse(resultadoAImprimir.Resultado);
                                    }
                                    //Resultado
                                    nuevoObxCuantitativo.Obx_5_ObservationValue = resultadoValue.ToString();

                                    nuevoObxCuantitativo.Obx_6_units = managerDBOpenf.getUnitstest(resultadoAImprimir.Parametro);
                                    Rango rangosObtenidos = managerDBOpenf.getRangos(int.Parse(resultadoAImprimir.Parametro), edadDias, float.Parse(resultadoAImprimir.Resultado));
                                    nuevoObxCuantitativo.Obx_7_rangeReference           = rangosObtenidos.RangoInferior.ToString() + " - " + rangosObtenidos.RangoSuperior.ToString();
                                    nuevoObxCuantitativo.Obx_11_ObservationResultStatus = "F";
                                    nuevoObxCuantitativo.Obx_14_dateofObservation       = nuevaObrResult.Obr_8_ObservationEndDateTime;
                                    nuevaObrResult.ListObxCuantitativos.Add(nuevoObxCuantitativo);
                                }
                                else//NO ES NUMERICO
                                {
                                    nuevoObxCuantitativo.Obx_2_ValueType = "NM";
                                    subElemento SubElementoRespuesta = managerDBOpenf.getSubElemeto(resultadoAImprimir.Estudio, resultadoAImprimir.Parametro, peticionActual.Pid8_AdministrativeSex, edadDias);
                                    //COdigo de examen
                                    nuevoObxCuantitativo.Obx_3_1_Identifier = SubElementoRespuesta.Codigo;
                                    //Nombre Examen
                                    nuevoObxCuantitativo.Obx_3_2_text                   = SubElementoRespuesta.Nombre;
                                    nuevoObxCuantitativo.Obx_4_observationSubid         = "Instrumento";
                                    nuevoObxCuantitativo.Obx_5_ObservationValue         = resultadoAImprimir.Resultado;
                                    nuevoObxCuantitativo.Obx_6_units                    = "";
                                    nuevoObxCuantitativo.Obx_7_rangeReference           = "";
                                    nuevoObxCuantitativo.Obx_11_ObservationResultStatus = "F";
                                    nuevoObxCuantitativo.Obx_14_dateofObservation       = nuevaObrResult.Obr_8_ObservationEndDateTime;
                                    nuevaObrResult.ListObxCuantitativos.Add(nuevoObxCuantitativo);
                                }

                                int idComentario = 1;
                                ResultadosObx[ResultadosObx.Count - 1].Resultado = ResultadosObx[ResultadosObx.Count - 1].Resultado.Replace(" ", "");
                                if (ResultadosObx[ResultadosObx.Count - 1].Resultado == "Normal" || ResultadosObx[ResultadosObx.Count - 1].Resultado == "normal")
                                {
                                    idComentario = 1;
                                }
                                else
                                {
                                    idComentario = 3;
                                }

                                nuevaObxCualitativo.Obx_4_IdDelResultado       = idComentario.ToString();                          //revisar
                                nuevaObxCualitativo.Obx_5_ResultadoCualitativo = ResultadosObx[ResultadosObx.Count - 1].Resultado; //revisar

                                contadorObx++;
                            }
                        }
                    }


                    //END OBXS

                    //Impresion de obx y obrs
                    nuevaObrResult.Obx_Cualitativo = nuevaObxCualitativo;
                    string obr = @"OBR|" + nuevaObrResult.Obr_1_IDOBR + "|" + nuevaObrResult.Obr_2_PlacerOrdeNumber + "||" + nuevaObrResult.Obr_4_1_Identifier + "^" + nuevaObrResult.Obr_4_2_Text + "^L^" + nuevaObrResult.Obr_4_4_AlternateIdentifier + "^" + nuevaObrResult.Obr_4_5_AlternateText + "||||" + nuevaObrResult.Obr_8_ObservationEndDateTime + "||" + nuevaObrResult.Obr_10_CollectorIdentifier + "||||||" + resultadoRepuesta.Orc_12_1_CodigoProfesional + "^" + resultadoRepuesta.Orc_12_2_NombreProfesional + "||||||" + nuevaObrResult.Obr_22_ResultReptStatusChangeDateTime + "||" + nuevaObrResult.Obr_24_DiagnosticServiceID + "|" + nuevaObrResult.Obr_25_ResultStatus + "_z";
                    respuesta += obr;
                    string obxCuali = @"OBX|" + nuevaObrResult.Obx_Cualitativo.Obx_1_IdObx + "|" + nuevaObrResult.Obx_Cualitativo.Obx_2_TipoDato + "|" + nuevaObrResult.Obx_Cualitativo.Obx_3_IdExamenSolicitado + "|" + nuevaObrResult.Obx_Cualitativo.Obx_4_IdDelResultado + "|" + nuevaObxCualitativo.Obx_5_ResultadoCualitativo + "_z";
                    respuesta += obxCuali;
                    foreach (Respuesta_obx resultObx in nuevaObrResult.ListObxCuantitativos)
                    {
                        string obx = @"OBX|" + resultObx.Obx_1_ObxId + "|" + resultObx.Obx_2_ValueType + "|" + resultObx.Obx_3_1_Identifier + "^" + resultObx.Obx_3_2_text + "|" + resultObx.Obx_4_observationSubid + "|" + resultObx.Obx_5_ObservationValue + "|" + resultObx.Obx_6_units + "|" + resultObx.Obx_7_rangeReference + "||||" + resultObx.Obx_11_ObservationResultStatus + "|||" + resultObx.Obx_14_dateofObservation + "_z";
                        respuesta += obx;
                    }

                    contadorObr++;
                } //END OBRS
            }     //end if resultado==null

            if (respuesta != "")
            {
                managerDBOhl7.actualizarCompletas(tranIncompleta.Indice1, respuesta);
            }
            respuesta         = "";
            resultadoRepuesta = new Repuesta();
            orcCargado        = false;
        }//end foreach Transacciones Incompletas
    }
Ejemplo n.º 7
0
    public PeticionEntrante leerPeticion(string peticion)
    {
        PeticionEntrante nuevaPeticion = new PeticionEntrante();
        //System.Diagnostics.Debug.WriteLine("PETICION: " + peticion);
        var mensaje   = NextLevelSeven.Core.Message.Build(peticion);
        var segmentos = mensaje[1];
        // first segment in a message (returns IElement)
        var mshSegment = mensaje[1];


        //Llenado de la cabecera MSH
        nuevaPeticion.Msh3_sendingApplication             = mshSegment.Field(3).ToString();
        nuevaPeticion.Msh4_sendingFacility                = mshSegment.Field(4).ToString();
        nuevaPeticion.Msh5_receivingApplication           = mshSegment.Field(5).ToString();
        nuevaPeticion.Msh6_recivingFacilty                = mshSegment.Field(6).Component(2).ToString();
        nuevaPeticion.Msh6_1_idSuministrasnte             = mshSegment.Field(6).Component(1).ToString();
        nuevaPeticion.Msh7_dateTimeMessage                = mshSegment.Field(7).ToString();
        nuevaPeticion.Msh9_1_messageCode                  = mshSegment.Field(9).Component(1).ToString();
        nuevaPeticion.Msh9_2_triggerEvent                 = mshSegment.Field(9).Component(2).ToString();
        nuevaPeticion.Msh10_messageControlID              = mshSegment.Field(10).ToString();
        nuevaPeticion.Msh11_processingID                  = mshSegment.Field(11).ToString();
        nuevaPeticion.Msh12_versionId                     = mshSegment.Field(12).ToString();
        nuevaPeticion.Msh15_acceptAcknowledgmentType      = mshSegment.Field(15).ToString();
        nuevaPeticion.Msh16_applicationAcknowledgmentType = mshSegment.Field(16).ToString();


        //Segmento PID (Paciente ID)
        var pidSegment  = mensaje.Segments.OfType("PID").First();
        var pid1segment =
            nuevaPeticion.Pid1_pdi = pidSegment.Field(1).Component(1).ToString();

        nuevaPeticion.Pid3_1_idNumber          = pidSegment.Field(3).Component(1).ToString();
        nuevaPeticion.Pid3_4_assigningAutority = pidSegment.Field(3).Component(4).ToString();
        nuevaPeticion.Pid5_1_familyName        = pidSegment.Field(5).Component(1).ToString();
        nuevaPeticion.Pid5_2_givenName         = pidSegment.Field(5).Component(2).ToString();
        nuevaPeticion.Pid5_3_secondName        = pidSegment.Field(5).Component(3).ToString();
        nuevaPeticion.Pid7_datetimeBirth       = pidSegment.Field(7).ToString();
        nuevaPeticion.Pid8_AdministrativeSex   = pidSegment.Field(8).ToString();
        System.Diagnostics.Debug.WriteLine("Id paciente: " + nuevaPeticion.Pid3_1_idNumber);

        System.Diagnostics.Debug.WriteLine("Nombre Paciente: " + nuevaPeticion.Pid5_1_familyName + " " + nuevaPeticion.Pid5_2_givenName + " " + nuevaPeticion.Pid5_3_secondName);
        //Segmento PV (visita)
        var pv1Segment = mensaje.Segments.OfType("PV1").First();

        nuevaPeticion.Pv1_idNumber                = pv1Segment.Field(1).ToString();
        nuevaPeticion.Pv2_patientClass            = pv1Segment.Field(2).ToString();
        nuevaPeticion.Pv3_assignedPatientLocation = pv1Segment.Field(3).ToString();


        //Segmento ORC
        var orcSegment = mensaje.Segments.OfType("ORC").First();

        nuevaPeticion.Orc1_orderControl        = orcSegment.Field(1).ToString();
        nuevaPeticion.Orc2_placerOrderNumer    = orcSegment.Field(2).ToString();
        nuevaPeticion.Orc4_placerGroupNumer    = orcSegment.Field(4).ToString();
        nuevaPeticion.Orc9_datimeTransaction   = orcSegment.Field(9).ToString();
        nuevaPeticion.Orc12_1_idNumber         = orcSegment.Field(12).Component(1).ToString();
        nuevaPeticion.Orc13_1_pointOfCare      = orcSegment.Field(13).Component(1).ToString();
        nuevaPeticion.Orc17_1_identifier       = orcSegment.Field(17).Component(1).ToString();
        nuevaPeticion.Orc17_2_text             = orcSegment.Field(17).Component(2).ToString();
        nuevaPeticion.Orc21_1_orginizationName = orcSegment.Field(21).Component(1).ToString();
        nuevaPeticion.Orc21_3_IdNumber         = orcSegment.Field(21).Component(3).ToString();

        //Segmento OBR
        var obrSegment = mensaje.Segments.OfType("OBR");

        foreach (var objeto in obrSegment)
        {
            Peticion_obr nuevoObr = new Peticion_obr();
            nuevoObr.Obr1_idOBR                 = objeto.Field(1).ToString();
            nuevoObr.Obr2_placerOrderNumber     = objeto.Field(2).ToString();
            nuevoObr.Obr4_1_Identifier          = objeto.Field(4).Component(1).ToString();
            nuevoObr.Obr4_2_text                = objeto.Field(4).Component(2).ToString();
            nuevoObr.Obr4_4_AlternateIdentifier = objeto.Field(4).Component(4).ToString();
            nuevoObr.Obr7_ObservationDate       = objeto.Field(7).ToString();
            nuevoObr.Obr10_CollectorIdentifier  = objeto.Field(10).ToString();
            nuevoObr.Obr15_specimenSource       = objeto.Field(15).ToString();
            nuevaPeticion.ListaORB.Add(nuevoObr);
        }

        //var splitsOBR = mensaje.SplitSegments("OBR",true);
        // System.Diagnostics.Debug.WriteLine("Cantidad segmegmentos SPLITOBR:" + splitsOBR.OfType);
        // System.Diagnostics.Debug.WriteLine("Cantidad segmegmentos OBR:"+obrSegment.Count());
        //System.Diagnostics.Debug.WriteLine("Cantidad segmegmentos OBR:" + obrSegment.Count());


        //Lectura de muestras segmento SPM
        var spmSegment = mensaje.Segments.OfType("SPM");

        foreach (var objeto in spmSegment)
        {
            Peticion_spm nuevoSpm = new Peticion_spm();
            nuevoSpm.Spm1_id                     = objeto.Field(1).ToString();
            nuevoSpm.Spm2_specimenId             = objeto.Field(2).ToString();
            nuevoSpm.Spm4_1_identifier           = objeto.Field(4).Component(1).ToString();
            nuevoSpm.Spm4_2_text                 = objeto.Field(4).Component(2).ToString();
            nuevoSpm.Spm17_specimenCollectinDate = objeto.Field(17).ToString();
            nuevaPeticion.Listaspm.Add(nuevoSpm);
        }

        return(nuevaPeticion);
    }