Foros del Web » Programando para Internet » PHP »

Sistema de fichas de pacientes y lógica al guardar.

Estas en el tema de Sistema de fichas de pacientes y lógica al guardar. en el foro de PHP en Foros del Web. Buen día, primero que todo me presento, mi nombre es Leonardo y escribo principalmente para solicitar ayuda en la lógica de un sistema de fichas ...
  #1 (permalink)  
Antiguo 03/04/2015, 20:17
 
Fecha de Ingreso: abril-2015
Ubicación: Viña del Mar
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Sistema de fichas de pacientes y lógica al guardar.

Buen día, primero que todo me presento, mi nombre es Leonardo y escribo principalmente para solicitar ayuda en la lógica de un sistema de fichas médicas que estoy desarrollando, el cliente lo que solicita sería esto:



Actualmente lo que llevo es que tengo la ID del Médico en cuestión y la ID del paciente que se está tratando, una vez capturado ¿que es lo recomendado que se debería hacer lógicamente? El cliente solicita que de esta misma pantalla se pueda actualizar e insertar campos y eso es lo que me incomoda.

Saludos agradeciendo su ayuda y su tiempo de antemano.
  #2 (permalink)  
Antiguo 03/04/2015, 20:27
Avatar de Elvixx10  
Fecha de Ingreso: agosto-2012
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 1
No se por que dices que te incómoda realizar dichos requerimientos que te ah pedido el cliente en una misma acción, para mi es algo bueno ya que sólo dependerás de una vista para realizar dichas acciones y no tendrás tanto código para realizar esas peticiones.
  #3 (permalink)  
Antiguo 03/04/2015, 20:37
 
Fecha de Ingreso: abril-2015
Ubicación: Viña del Mar
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Sistema de fichas de pacientes y lógica al guardar.

Cita:
Iniciado por Elvixx10 Ver Mensaje
No se por que dices que te incómoda realizar dichos requerimientos que te ah pedido el cliente en una misma acción, para mi es algo bueno ya que sólo dependerás de una vista para realizar dichas acciones y no tendrás tanto código para realizar esas peticiones.
Elvixx10, la verdad es que no se me ocurre lógicamente como realizarlo, te coloco este escenario, el médico ingresa los problemas de salud del paciente por primera vez, agrega 1 enfermedad diagnosticada, 2 alergias, 3 medicamentos y 1 hobbie, pasa un mes y quiere agregar una enfermedad diagnosticada y modificar la anterior, modificar las 2 alergias, borrar los medicamentos y agregar un nuevo hobbie. Como sería lógicamente cuando el sistema tenga que ver si es un INSERT, un DELETE o un UPDATE, ya que solo poseo un formulario, en el que puedo realizar una sola de estas acciones.
  #4 (permalink)  
Antiguo 03/04/2015, 21:26
Avatar de Elvixx10  
Fecha de Ingreso: agosto-2012
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 1
Es fácil crear una clase y sobre esta generas método, en uno específico creas uno que antes de insertar averigüe si el registro existe si no es así lo mandas a insertar con algún método que almas creado para insertar de lo contrario lo mandas a actualizar con algún método que tengas para dicha acción. Saludos
  #5 (permalink)  
Antiguo 03/04/2015, 22:27
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Sistema de fichas de pacientes y lógica al guardar.

Te explicare como resolver un caso base simple, luego tu lo repetirás y adaptaras a tu problema.

Supongamos que tienes las siguientes tablas en la base de datos:

- clientes
codigo (pk) | nombre

- alergias
codigo (pk) | descripcion

- clientes_alergias
codigo_cliente (pk, fk(clientes.codigo)) | codigo_alergia (pk, fk(alergias.codigo))

Suponiendo que tienes el siguiente formulario para la carga de alergias a clientes:
Código HTML:
Ver original
  1. <form method="post">
  2. <input type="number" name="cliente">
  3.     <select name="alergias[]">
  4.         <!-- Lista de alergias, donde el value es alergias.codigo -->
  5.     </select>
  6.     <!--
  7.        Tantas listas como quieras, incluso puedes con javascript
  8.        agregarlas o quitarlas dinamicamente.
  9.        es importante que tengan el mismo name
  10.    -->        
  11.     <select name="alergias[]">
  12.         <!-- Lista de alergias, donde el value es alergias.codigo -->
  13.     </select>
  14. </form>

Cuando el formulario se envia, esta es la logica de php:
Código PHP:
Ver original
  1. <?php
  2.     // Validaciones de seguridad minimas.
  3.     $_POST["cliente"] = intval($_POST["cliente"]);
  4.    
  5.     if(empty($_POST["alergias"]) || !is_array($_POST["alergias"]))
  6.         $_POST["alergias"] = [];
  7.     else
  8.         $_POST["alergias"] = array_filter(array_map("intval", $_POST["alergias"]));
  9.    
  10.     $con = mysqli_connect("localhost","my_user","my_password","my_db");
  11.         die("Error de conexion.");
  12.    
  13.     // Borrar los que estaban y ya no estan mas.
  14.     mysqli_query($con, "DELETE FROM clientes_alergias WHERE codigo_cliente = $_POST[cliente]".($_POST["alergias"] ? " AND codigo_alergia NOT IN (".implode(",", $_POST["alergias"]).")" : "");
  15.    
  16.     if($_POST["alergias"])
  17.     {
  18.         // Insertar o actualizar los nuevos.
  19.         $query = "INSERT IGNORE INTO clientes_alergias (codigo_cliente, codigo_alergia) VALUES ";
  20.         // Recorrer sin variables auxiliares.
  21.         foreach($_POST["alergias"] as $_POST["alergias"])
  22.             $query .= ($nro ? ", " : "")."($_POST[cliente], $_POST[alergias])";
  23.            
  24.         mysqli_query($con, $query);        
  25.     }
  26.    
  27.     mysqli_close($con);        
  28. ?>

En el caso de que cada registro de la tabla de relación tenga un atributo ej:

- clientes_alergias
codigo_cliente (pk, fk(clientes.codigo)) | codigo_alergia (pk, fk(alergias.codigo)) | detalle

tendrias un formulario del estilo:

Código HTML:
Ver original
  1. <form method="post">
  2. <input type="number" name="cliente">
  3.     <select name="alergias[]">
  4.         <!-- Lista de alergias, donde el value es alergias.codigo -->
  5.     </select>
  6.     <input type="text" name="detalles[]">
  7.     <!--
  8.        Tantas listas y detalles como quieras, incluso puedes con javascript
  9.        agregarlas o quitarlas dinamicamente.
  10.        es importante que tengan el mismo name
  11.    -->        
  12.     <select name="alergias[]">
  13.         <!-- Lista de alergias, donde el value es alergias.codigo -->
  14.     </select>
  15.     <input type="text" name="detalles[]">
  16. </form>

y un php:
Código PHP:
Ver original
  1. <?php
  2.     // Conexion con la base de datos.
  3.     $con = mysqli_connect("localhost","my_user","my_password","my_db");
  4.         die("Error de conexion.");
  5.    
  6.     // Validaciones de seguridad minimas.
  7.     $_POST["cliente"] = intval($_POST["cliente"]);
  8.    
  9.     if(empty($_POST["alergias"]) || !is_array($_POST["alergias"]))
  10.         $_POST["alergias"] = [];
  11.     else
  12.     {        
  13.         foreach($_POST["alergias"] as $nro => &$codigo)            
  14.             if(!($codigo = intval($codigo)))
  15.                 unset($_POST["alergias"][$nro], $_POST["detalles"][$nro]);
  16.             else
  17.                 $_POST["detalles"][$nro] = real_escape_string($con, $_POST["detalles"][$nro]);  
  18.        
  19.         $_POST["alergias"] = array_values($_POST["alergias"]);
  20.         $_POST["detalles"] = array_values($_POST["detalles"]);
  21.     }
  22.     unset($codigo, $nro);
  23.    
  24.     if(count($_POST["alergias"]) != count($_POST["detalles"]))
  25.         die("Error en los datos."):
  26.    
  27.     // Borrar los que estaban y ya no estan mas.
  28.     mysqli_query($con, "DELETE FROM clientes_alergias WHERE codigo_cliente = $_POST[cliente]".($_POST["alergias"] ? " AND codigo_alergia NOT IN (".implode(",", $_POST["alergias"]).")" : "");
  29.    
  30.     if($_POST["alergias"])
  31.     {
  32.         // Insertar o actualizar los nuevos.
  33.         $query = "INSERT OR UPDATE INTO clientes_alergias (codigo_cliente, codigo_alergia, detalle) VALUES ";
  34.         // Recorrer sin variables auxiliares.
  35.         foreach($_POST["alergias"] as $nro => $_POST["alergias"])
  36.             $query .= ($nro ? ", " : "")."($_POST[cliente], $_POST[alergias], {$_POST['detalles'][$nro]})";  
  37.         $query .= "ON DUPLICATE KEY UPDATE detalle = VALUES(detalle)";
  38.        
  39.         mysqli_query($con, $query);        
  40.     }
  41.    
  42.     mysqli_close($con);        
  43. ?>
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 03/04/2015 a las 22:32
  #6 (permalink)  
Antiguo 03/04/2015, 22:27
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Sistema de fichas de pacientes y lógica al guardar.

Propongo;

Le asignas un ID a cada paciente (aleatorio, a ser posible), le añades los datos correspondientes (alergias, etc.), y entonces lo insertas en la BD. Después, si es necesario actualizar, accedes a un panel donde obtengas los datos, y actualices/añadas los necesarios, y se hace un UPDATE en la BD.

Ah, y sería bueno poder agregar más campos si es requerido. Por ejemplo, si una persona mayor necesita 4 medicamentos, ¿qué haces? Click en un botón y se añade un nuevo campo.
__________________
¿Te sirvió la respuesta? Deja un +1
  #7 (permalink)  
Antiguo 04/04/2015, 04:27
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Sistema de fichas de pacientes y lógica al guardar.

Como dice @NueveReinas es obligatorio un botón para añadir más inputs, y también que al abrir los selects, te salgan los resultados que tengas en una base de datos!!
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 04/04/2015 a las 04:46
  #8 (permalink)  
Antiguo 04/04/2015, 21:56
 
Fecha de Ingreso: abril-2015
Ubicación: Viña del Mar
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Sistema de fichas de pacientes y lógica al guardar.

Gracias por sus comentarios y sugerencias. Ahora se me aclaró un poco el tema y creo que la mejor solución como bien dicen es colocar botones para ir añadiendo, modificando y borrando. Aunque con este método será más trabajo para el usuario creo que tiene mayor factibilidad a futuro.

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.