ExecuteSQL
Moderatore: Moderatori
-
- Messaggi: 12
- Iscritto il: lunedì 26 dicembre 2016, 0:13
- Versione FileMaker: 16
- Sistema operativo: mac
ExecuteSQL
Ciao a tutti,
sto cercando di realizzare un database per la nostra attività in ospedale.
Vediamo pazienti con diverse patologie (necessità di tabelle differenziate per patologia in cui inserisco le informazioni cliniche [tabelle %_clinica]) che vanno incontro a trattamenti differenti (quindi necessità di avere anche tabelle differenziate per tipologia d'intervento [tabelle %_intervento]). Inoltre il paziente viene seguito negli anni (visite successive che inserirei nelle tabelle %_clinica) e ovviamente qualcuno può avere bisogno di interventi differenti nel tempo.
Allego lo schema delle relazioni tra le tabelle.
Screenshot 2017-02-22 08.44.52.png
L'ID univoco del paziente si trova nel campo 'Codice Elefante', assegnato autonomamente dal sistema dell'ospedale.
Vorrei inserire nel formato iniziale, dove inserisco le informazioni essenziali del paziente, un portale o un campo calcolato con il riassunto degli interventi precedenti del paziente (se presenti) che si completi autonomamente una volta inserito il 'codice elefante' del paziente.
Screenshot 2017-02-22 08.42.44.png
Ho provato a scrivere uno script con ExecuteSQL (che da quel che ho capito mi permette di non dover aggiungere ulteriori relazioni tra le tabelle), ma ottengo sempre dei messaggi di errore. Questo è lo script che ho scritto...
EseguiSQL
( "SELECT 'Data Intervento'
FROM '%_intervento'
WHERE 'Codice Elefante' = RicavaComeNumero ( Anagrafica::Codice Elefante ) "
; ""
;
¶
)
Ho anche provato sostituendo la funzione ricavacomenumero inserendo direttamente l'ID di un paziente ma sempre senza risultato.
Dove sbaglio?
Avete suggerimenti per modificare le relazioni tra le tabelle?
Scusatemi se il mio livello è così scadente.
Grazie mille
sto cercando di realizzare un database per la nostra attività in ospedale.
Vediamo pazienti con diverse patologie (necessità di tabelle differenziate per patologia in cui inserisco le informazioni cliniche [tabelle %_clinica]) che vanno incontro a trattamenti differenti (quindi necessità di avere anche tabelle differenziate per tipologia d'intervento [tabelle %_intervento]). Inoltre il paziente viene seguito negli anni (visite successive che inserirei nelle tabelle %_clinica) e ovviamente qualcuno può avere bisogno di interventi differenti nel tempo.
Allego lo schema delle relazioni tra le tabelle.
Screenshot 2017-02-22 08.44.52.png
L'ID univoco del paziente si trova nel campo 'Codice Elefante', assegnato autonomamente dal sistema dell'ospedale.
Vorrei inserire nel formato iniziale, dove inserisco le informazioni essenziali del paziente, un portale o un campo calcolato con il riassunto degli interventi precedenti del paziente (se presenti) che si completi autonomamente una volta inserito il 'codice elefante' del paziente.
Screenshot 2017-02-22 08.42.44.png
Ho provato a scrivere uno script con ExecuteSQL (che da quel che ho capito mi permette di non dover aggiungere ulteriori relazioni tra le tabelle), ma ottengo sempre dei messaggi di errore. Questo è lo script che ho scritto...
EseguiSQL
( "SELECT 'Data Intervento'
FROM '%_intervento'
WHERE 'Codice Elefante' = RicavaComeNumero ( Anagrafica::Codice Elefante ) "
; ""
;
¶
)
Ho anche provato sostituendo la funzione ricavacomenumero inserendo direttamente l'ID di un paziente ma sempre senza risultato.
Dove sbaglio?
Avete suggerimenti per modificare le relazioni tra le tabelle?
Scusatemi se il mio livello è così scadente.
Grazie mille
- fabio.beri
- Messaggi: 2041
- Iscritto il: sabato 4 ottobre 2014, 16:24
- Versione FileMaker: 2023
- Sistema operativo: Win/Mac
Re: ExecuteSQL
Buongiorno. Così a prima impressione, hai messo RicavaComeNumero ( Anagrafica::Codice Elefante ) dentro le virgolette quindi non va bene. Dovrebbe essere:
EseguiSQL
( "SELECT 'Data Intervento'
FROM '%_intervento'
WHERE 'Codice Elefante' = " & RicavaComeNumero ( Anagrafica::Codice Elefante )
E questo è un punto. Poi chiedo: il campo Codice Elefante è di tipo testo o numero ? Perché se è di tipo testo devi mandare il valore di ricerca con gli apostrofi, mentre se è un numero non serve.
EseguiSQL
( "SELECT 'Data Intervento'
FROM '%_intervento'
WHERE 'Codice Elefante' = " & RicavaComeNumero ( Anagrafica::Codice Elefante )
E questo è un punto. Poi chiedo: il campo Codice Elefante è di tipo testo o numero ? Perché se è di tipo testo devi mandare il valore di ricerca con gli apostrofi, mentre se è un numero non serve.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
-
- Messaggi: 12
- Iscritto il: lunedì 26 dicembre 2016, 0:13
- Versione FileMaker: 16
- Sistema operativo: mac
Re: ExecuteSQL
Ho trasformato Codice Elefante in Codice_Elefante. Avevo letto che gli apostrofi servono se nel nome del campo c'è uno spazio o un simbolo (come il % per tutte le tabelle intervento).
Codice_Elefante è un campo numerico.
Avevo messo il RicavaComeNumero dentro le virgolette perché pensavo che altrimenti non sarebbe stato considerato dall'istruzione SELECT e dalla clausola WHERE.
Inoltre ho modificato il nome dei campi Data Intervento in Data_Intervento perché DATA é una clausola e ho pensato che Data Intervento potesse generare un errore di sintassi.
In questo momento mi dice che non riesce a trovare la cartella %_intervento (ho provato pure con *_intervento).
Codice_Elefante è un campo numerico.
Avevo messo il RicavaComeNumero dentro le virgolette perché pensavo che altrimenti non sarebbe stato considerato dall'istruzione SELECT e dalla clausola WHERE.
Inoltre ho modificato il nome dei campi Data Intervento in Data_Intervento perché DATA é una clausola e ho pensato che Data Intervento potesse generare un errore di sintassi.
In questo momento mi dice che non riesce a trovare la cartella %_intervento (ho provato pure con *_intervento).
-
- Messaggi: 12
- Iscritto il: lunedì 26 dicembre 2016, 0:13
- Versione FileMaker: 16
- Sistema operativo: mac
Re: ExecuteSQL
EseguiSQL
( "SELECT Data_Intervento
FROM ANEURISMI_intervento
WHERE Codice_Elefante = " & RicavaComeNumero ( Anagrafica::Codice_Elefante )
; ""
;
¶
)
questo comando funziona.
Non riesco invece a fare la ricerca in tutte le tabelle con %intervento, nonostante abbia provato con le varie combinazioni di ' e "...
( "SELECT Data_Intervento
FROM ANEURISMI_intervento
WHERE Codice_Elefante = " & RicavaComeNumero ( Anagrafica::Codice_Elefante )
; ""
;
¶
)
questo comando funziona.
Non riesco invece a fare la ricerca in tutte le tabelle con %intervento, nonostante abbia provato con le varie combinazioni di ' e "...
- fabio.beri
- Messaggi: 2041
- Iscritto il: sabato 4 ottobre 2014, 16:24
- Versione FileMaker: 2023
- Sistema operativo: Win/Mac
Re: ExecuteSQL
Personalmente non ho mai praticato un select nel modo che tu proponi e neanche credo sia fattibile.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
-
- Messaggi: 12
- Iscritto il: lunedì 26 dicembre 2016, 0:13
- Versione FileMaker: 16
- Sistema operativo: mac
Re: ExecuteSQL
Ho capito...
Quale credi che sia il sistema migliore per ottenere un riassunto di tutti gli interventi del paziente (almeno la data dell'intervento)?
grazie
g
Quale credi che sia il sistema migliore per ottenere un riassunto di tutti gli interventi del paziente (almeno la data dell'intervento)?
grazie
g
- fabio.beri
- Messaggi: 2041
- Iscritto il: sabato 4 ottobre 2014, 16:24
- Versione FileMaker: 2023
- Sistema operativo: Win/Mac
Re: ExecuteSQL
E' sbagliata la struttura dei dati. Se i pazienti hanno diverse patologie, bisogna registrare le visite o gli interventi o quello che sia, con un codice patologia che ci consenta di raggrupparli e riassumerli. Non è corretto creare una tabella per ogni tipologia.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
-
- Messaggi: 12
- Iscritto il: lunedì 26 dicembre 2016, 0:13
- Versione FileMaker: 16
- Sistema operativo: mac
Re: ExecuteSQL
Avevo strutturato il db in questo modo perché ogni patologia ha caratteristiche diverse che richiedono l'inserimento di dati clinici e particolari dell'intervento differenti (quindi campi diversi per ogni tabella). Pensavo che fosse meglio così piuttosto che creare una tabella unica con dei campi che sarebbero rimasti vuoti in gran parte dei record.
Mi suggerisci di unire le tabelle?
Mi suggerisci di unire le tabelle?
- fabio.beri
- Messaggi: 2041
- Iscritto il: sabato 4 ottobre 2014, 16:24
- Versione FileMaker: 2023
- Sistema operativo: Win/Mac
Re: ExecuteSQL
Ok. Diciamo che quando le informazioni non sono omogenee, è giusto dividerle in più tabelle, però devono avere una tabella principale di riferimento, in questo caso il paziente, che diventa il nucleo fondamentale di tutto il discorso. Il paziente deve avere un'anagrafica e un codice identificativo univoco ( anche solamente ad uso informatico). Dopodiché tutti i campi relativi a un certo tipo di informazioni, vanno nella TABELLA A agganciata e relazionata tramite codice paziente, altre informazioni vanno nella TABELLA B, sempre relazionata nello stesso modo e così via dicendo.
Cosa succede in caso di ricerche? Che se devo fare un TROVA, faccio riferimento principalmente alla tabella principale dove avrò tutte le informazioni generali (età paziente, anamnesi del paziente...) mentre se devo trovare informazioni specifiche su un altro flusso di informazioni, farò un trova su una delle altre tabelle periferiche.
Poi ci sono altri dati, tipo esami che sono in un altro mondo a parte. L'esame dell'emoglobina, per fare un esempio, non lo faccio per una sola patologia, ma lo faccio in più situazioni, quindi anche gli esami avranno una tabella al di fuori delle patologie ma relazionate al paziente.
Insomma, lo scopo è strutturare i dati solo per omogeneità delle informazioni.
Cosa succede in caso di ricerche? Che se devo fare un TROVA, faccio riferimento principalmente alla tabella principale dove avrò tutte le informazioni generali (età paziente, anamnesi del paziente...) mentre se devo trovare informazioni specifiche su un altro flusso di informazioni, farò un trova su una delle altre tabelle periferiche.
Poi ci sono altri dati, tipo esami che sono in un altro mondo a parte. L'esame dell'emoglobina, per fare un esempio, non lo faccio per una sola patologia, ma lo faccio in più situazioni, quindi anche gli esami avranno una tabella al di fuori delle patologie ma relazionate al paziente.
Insomma, lo scopo è strutturare i dati solo per omogeneità delle informazioni.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19
Omnia Studio
-----------------------------------------
http://tinyurl.com/omniagest2024