Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [mysql] Partire con il piede giusto

    Salve a tutti, non sono un esperto di PHP e MySQL ma vorrei realizzare una base dati per la gestione pazienti. Ho provato a stilare una lista approssimata dei campi necessari e siamo attorno ai 150 divisi in circa 11 tabelle. Un bel pachiderma confrontato ai db che ho fatto fin'ora e non sono sicuro che l'architettura che ho in mente sia adeguata. Prima di iniziare con gli script e le tabelle servirebbe un buon progetto d'insieme, come si fa? Come faccio a non prendere una strada che in fase di realizzazione si riveli tortuosa se non del tutto sbagliata?

    Esempio semplificato (ogni tabella ha al suo interno circa 15 campi di diverso tipo; testo stringa, si/no, numeri e data):

    tab1-pazienti
    tab2-medici
    tab3-esami
    tab4-visite
    tab5-operazioni

    tutte le tabelle sono collegate tra di loro nel senso che ad esempio ogni paziente della tab1 potrebbe avere diversi medici della tab2, eseguito degli esami della tab3, programmato e fatto x visite della tab 4 e operazioni della tab5.
    Mi preoccupano principalmente le query per l'estrazione di dati aggregati a fini statistici.
    Grazie per qualunque consiglio vogliate darmi..
    Ciao a tutti.

  2. #2
    sorvolando sull'eventuale realizzazione di diagrammi ER, il nocciolo della questione sta proprio su come sono strutturate queste tabelle.
    percio' posta pure tutti i campi che intendi creare

    danno

  3. #3
    Grazie Danno! Data la mole volevo prima vedere se la questione avrebbe incontrato qualche interesse.
    Partiamo con un primo esempio.

    Tab1 Pazienti:
    ID Paziente
    Nome
    Cognome
    Data di nascita
    Luogo
    Domicilio
    etc...
    etc...

    Tab2 Esami:
    ID Paziente
    tipo di esame (menu a tendina)
    data
    operatore
    Note
    etc...
    etc...

    Tab3 Esami del sangue (è un tipo di esame della tab2):
    ID Paziente
    piastrine
    globuli rossi
    etc.
    etc.

    E' sensato connettere le tabelle attraverso il campo ID Paziente?
    Una query che mi estragga tutti i pazienti che hanno determinati valori negli esami del sangue come sarebbe?

  4. #4
    sorvolando sull'eventuale realizzazione di diagrammi ER,
    Mi sembra interessante dove trovo info?

    Ho postato un esempio più preciso ci sono suggerimenti?

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    nella tabella 2 aggiungi IdEsame
    nella tabella 3 aggiungi IdEsameDelSangue, IdEsame e togli IdPaziente

    Poi ci sarebbero altre cose da discutere, ma bisogna conoscere bene il problema...

  6. #6
    Grazie luca, quindi:

    Tab1 Pazienti:
    ID Paziente
    Nome
    Cognome
    Data di nascita
    Luogo
    Domicilio
    etc...
    etc...

    Tab2 Esami:
    ID Paziente
    ID Esame
    tipo di esame (menu a tendina)
    data
    operatore
    Note
    etc...
    etc...

    Tab3 Esami del sangue (è un tipo di esame della tab2):
    ID Esame
    Id EsameSangue
    piastrine
    globuli rossi
    etc.
    etc.

    ......Perchè?

    Il database è in effetti compleso e ancora non ho incominciato a farlo (aspetto lok del dottore) se dovessi incontrare problemi su uno specifico script non esiterei a postare ma non poso pretendere di farmi fare il lavoro dai menbri del forum. Sto cercando ad esempio info sui diagrammi ER che mi sembrano utili, ho sfogliato post e scaricato DBDesigner4 con relativa guida che mi leggerò.
    In ogni caso opinioni e consigli sono i ben venuti.
    Grazie a tutti!!

  7. #7
    i diagrammi er, che puoi fare benissimo anche su un foglio a mano, servono a delineare la struttura del database e definire le relazioni che legano le varie entita' che lo compongono. nel tuo caso puo' essere utile per fare un po' di ordine mentale, ma non impuntarti su questo punto che non e' essenziale.

    per quanto riguarda la definizione delle tue tabelle: stai attento alle "chiavi", da quelle dipende la cardinalita' delle relazioni.
    mi spiego:
    ogni paziente ha il suo ID;
    per identificare in modo univoco un esame, anche questo deve avere un suo ID;
    per assegnare un esame ad un paziente, l'esame deve "puntare" ad un record della tabella pazienti. in questo modo la coppia id_paziente-id_esame costituisce una chiave e si possono assegnare ad uno stesso paziente diversi esami, senza perdere la possibilita' di identificarne uno specifico;
    se in una terza tabella vuoi inserire dati aggiuntivi ad un esame, a questo punto non devi piu' fare riferimento al paziente, bensi' all'esame! il paziente si potra' comunque ricavare "risalendo" di due tabelle.
    inoltre, se per ogni esame devi aggiungere un solo dettaglio relativo agli esami del sangue (si parla in questo caso di "relazione uno a uno", cioe' per ogni elemento padre corrisponde un solo elemento figlio), allora in questo caso non ti serve aggiungere anche la colonna id_esame_sangue, perche' tanto il legame univoco e' gia' ricavato dalla chiave esame_id


    non credo di essere stato troppo chiaro
    in ogni caso, in questa fase non ti devi preoccupare di come accederai in seguito ai dati, ma solo di creare una struttura che sia coerente con la realta'

    ciao, buona fortuna e buona serata!
    danno

  8. #8
    Grazie Danno, in realtà sei stato abbastanza chiaro. Io avevo messo l'ID Paziente anche nella terza tabella (esame del sangue) perché la mia scarsa competenza mi fa pensare che è il modo più semplice per collegare tra di loro le tabelle. in effetti avrei legato tutte le tabelle ad una principale che è quella anagrafica pazienti.
    Più o meno le tabelle principali dovrebbero essere le seguenti.

    - Anagrafica Pazienti
    - Diagnosi Pazienti
    - Cartella Clinica Pazienti
    - Visite Pazienti
    - Interventi chirurgici
    - Terapie
    - Procedure
    - Endoscopie
    - Consulenze specialistiche
    - Esami
    - Regolazioni
    - Follow-up

    Alcune di queste dovrebbero avere dei "sotto-insiemi"; ad esempio gli esami, possono essere di diverso tipo e per ognuno di esso bisogna raccogliere diversi tipi di dati. Ad esempio gli esami del sangue forniscono dati ematologici mentre un esame spirometrico fornisce dati relativi alla capacità polmonare. - Domanda! Sbaglio o devo fare tabelle per ogni tipo di esame? E come le collego ai pazienti? A questo punto mi sembra che la tabella "Esami" sia inutile se ogni tipologia di esame ha una sua tabella con un campo con l'ID Paziente cui è collegato.
    - Domanda 2! come posso gestire l'eventuale introduzione in futuro di un nuovo e diverso tipo di esame, ovvero come posso rendere il sistema flessibile alle variazioni? So che è possibile creare dinamicamente una tabella anche se mi sembra una procedura difficile da realizzare attraverso una interfaccia grafica a disposizione del medico e poi come creo gli script per la creazione, modifica e rimozione dei record? Io li scrivo in PHP ed immaginare uno script per generare altri script mi sembra un lavoro più grosso di wordpress....che ne pensate?

  9. #9
    Grazie Danno, in realtà sei stato abbastanza chiaro. Io avevo messo l'ID Paziente anche nella terza tabella (esame del sangue) perché la mia scarsa competenza mi fa pensare che è il modo più semplice per collegare tra di loro le tabelle. in effetti avrei legato tutte le tabelle ad una principale che è quella anagrafica pazienti. Più o meno le tabelle principali dovrebbero essere le seguenti. - Anagrafica Pazienti - Diagnosi Pazienti - Cartella Clinica Pazienti - Visite Pazienti - Interventi chirurgici - Terapie - Procedure - Endoscopie - Consulenze specialistiche - Esami - Regolazioni - Follow-up Alcune di queste dovrebbero avere dei "sotto-insiemi"; ad esempio gli esami, possono essere di diverso tipo e per ognuno di esso bisogna raccogliere diversi tipi di dati. Ad esempio gli esami del sangue forniscono dati ematologici mentre un esame spirometrico fornisce dati relativi alla capacità polmonare. - Domanda! Sbaglio o devo fare tabelle per ogni tipo di esame? E come le collego ai pazienti? A questo punto mi sembra che la tabella "Esami" sia inutile se ogni tipologia di esame ha una sua tabella con un campo con l'ID Paziente cui è collegato. - Domanda 2! come posso gestire l'eventuale introduzione in futuro di un nuovo e diverso tipo di esame, ovvero come posso rendere il sistema flessibile alle variazioni? So che è possibile creare dinamicamente una tabella anche se mi sembra una procedura difficile da realizzare attraverso una interfaccia grafica a disposizione del medico e poi come creo gli script per la creazione, modifica e rimozione dei record? Io li scrivo in PHP ed immaginare uno script per generare altri script mi sembra un lavoro più grosso di wordpress....che ne pensate?
    A costo di sembrarvi troppo insistente ripropongo le domande di cui sopra che non smettono di frullarmi nel cervello...e ne pongo un'altra riferita ad un differente progetto che altrettanto mi appassiona....
    Data una tabella excel i cui campi rispettivamente sono:
    Year, From, To, note.
    un record tipo è così formato:
    1952,100000,200000,bla bla bla.
    ma a volte ho:
    1953/54,2000000,3000000,bla bla bla.
    ovvero il dato relativo all'anno non è in formato coerente.
    Quindi la mia ignoranza mi fa pensare di modificare la tabella e duplicare il record, una riga per ogni anno con il resto dei dati invariato. Ponendo un limit >1 nella query e ordinando per anno potrei ottenere un risultato accettabile. Sbaglio tutto?

    Grazie dell'attenzione!

  10. #10
    Sempre riferendomi all'ultima questione, in realtà la tabella è più fetente perchè i dati non son sempre numerici e possono anche non esserci in parte.... posto una immagine che ritrae un pezzo di tabella con alcune delle possibili condizioni possibili.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.