/// <summary> /// Inserta un paciente en la base de datos /// </summary> /// <param name="lista">Datos del paciente</param> public static void Insertar(Hashtable lista) { if (!VerificarPacienteExistente(lista)) { Paciente paciente = new Paciente(); string[] nombres = lista["Patient Name"].ToString().Split('^'); string resultado = ""; string fecha = ""; string paciente_id = ""; string genero = ""; string direccion = ""; string telefono = ""; if (lista.ContainsKey("Date/Time Of Birth")) { resultado = DateTime.ParseExact(lista["Date/Time Of Birth"].ToString(), "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"); DateTime pDate = Convert.ToDateTime(resultado); fecha = pDate.ToString("yyyy-MM-dd hh:mm:ss"); } if (lista.ContainsKey("Patient ID")) { paciente_id = (string)lista["Patient ID"]; } else { paciente_id = GeneradorIdentificadores.GenerarAccessionNumber(); } if (lista.ContainsKey("Administrative Sex")) { genero = (string)lista["Administrative Sex"]; } if (lista.ContainsKey("Patient Address")) { direccion = (string)lista["Patient Address"]; } if (lista.ContainsKey("Phone Number – Home")) { telefono = (string)lista["Phone Number – Home"]; } string sql = "INSERT INTO paciente VALUES ('" + paciente_id + "','" + nombres[1] + "','" + nombres[0] + "','" + "" + "','" + genero + "','" + direccion.Replace("^", " ") + "' ,'" + fecha + "',' " + "','" + telefono + "')"; Conexion.Ejecutar(sql); } else { throw new PacienteExistenteExcepcion(); } }
/// <summary> /// Procesar estudio /// </summary> /// <param name="lista">Datos</param> private void ProcesarOrden(List <Hashtable> lista) { bool correcto = true; string codigo_paciente = ""; int codigo_modalidad = -1; string numero_acceso = GeneradorIdentificadores.GenerarAccessionNumber(); string medico_referencia = ""; string medico_ejercicio = ""; bool admitido = false; bool cancelado = false; DateTime fecha_inicio = DateTime.Now; DateTime fecha_fin = DateTime.Now; foreach (Hashtable segmento in lista) { if (segmento["Segment Name"].Equals("PID")) { bool pacienteCorrecto = VerificarPaciente(segmento); if (pacienteCorrecto) { codigo_paciente = segmento["Patient ID"].ToString().Split('^')[0]; } else { Consola.Imprimir("El paciente no existe."); } correcto = correcto && pacienteCorrecto; } if (segmento["Segment Name"].Equals("OBR")) { if (segmento.ContainsKey("Diagnostic Serv Sect ID")) { codigo_modalidad = ModalidadControl.BuscarModalidad((string)segmento["Diagnostic Serv Sect ID"]); if (codigo_modalidad == -1) { Consola.Imprimir("No existe ese Diagnostic Serv Sect ID"); correcto = false; } } else { Consola.Imprimir("El mensaje no tiene el Diagnostic Serv Sect ID"); correcto = false; } if (segmento.ContainsKey("Observation Date/Time") && segmento.ContainsKey("Observation End Date/Time")) { fecha_inicio = ConversorFechas.ConvertirFechaHL7((string)segmento["Observation Date/Time"]); fecha_fin = ConversorFechas.ConvertirFechaHL7((string)segmento["Observation End Date/Time"]); } else { Consola.Imprimir("La orden debe tener hora inicio y hora fin"); correcto = false; } } if (segmento["Segment Name"].Equals("PV1")) { if (segmento.ContainsKey("Attending Doctor")) { medico_ejercicio = (string)segmento["Attending Doctor"]; } if (segmento.ContainsKey("Referring Doctor")) { medico_referencia = (string)segmento["Referring Doctor"]; } } } if (correcto) { listo = true; Consola.Imprimir("Procesamiento de ORM exitoso"); Estudio estudio = new Estudio(codigo_paciente, codigo_modalidad, numero_acceso, medico_referencia, medico_ejercicio, admitido, cancelado, fecha_inicio, fecha_fin); EstudioControl.Insertar(estudio); } else { listo = false; Consola.Imprimir("Procesamiento de ORM fallido"); } }