ExecuteSQL

FileMaker è un database relazionale. Vediamo come...

Moderatore: Moderatori

Rispondi
gullo
Messaggi: 12
Iscritto il: lunedì 26 dicembre 2016, 0:13
Versione FileMaker: 16
Sistema operativo: mac

ExecuteSQL

Messaggio da gullo » giovedì 23 febbraio 2017, 22:39

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

Avatar utente
fabio.beri
Messaggi: 1975
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: ExecuteSQL

Messaggio da fabio.beri » venerdì 24 febbraio 2017, 8:19

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.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

gullo
Messaggi: 12
Iscritto il: lunedì 26 dicembre 2016, 0:13
Versione FileMaker: 16
Sistema operativo: mac

Re: ExecuteSQL

Messaggio da gullo » venerdì 24 febbraio 2017, 22:39

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).

gullo
Messaggi: 12
Iscritto il: lunedì 26 dicembre 2016, 0:13
Versione FileMaker: 16
Sistema operativo: mac

Re: ExecuteSQL

Messaggio da gullo » sabato 25 febbraio 2017, 0:12

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 "...

Avatar utente
fabio.beri
Messaggi: 1975
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: ExecuteSQL

Messaggio da fabio.beri » lunedì 27 febbraio 2017, 11:57

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

gullo
Messaggi: 12
Iscritto il: lunedì 26 dicembre 2016, 0:13
Versione FileMaker: 16
Sistema operativo: mac

Re: ExecuteSQL

Messaggio da gullo » lunedì 27 febbraio 2017, 21:51

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

Avatar utente
fabio.beri
Messaggi: 1975
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: ExecuteSQL

Messaggio da fabio.beri » lunedì 27 febbraio 2017, 23:35

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

gullo
Messaggi: 12
Iscritto il: lunedì 26 dicembre 2016, 0:13
Versione FileMaker: 16
Sistema operativo: mac

Re: ExecuteSQL

Messaggio da gullo » martedì 28 febbraio 2017, 22:10

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?

Avatar utente
fabio.beri
Messaggi: 1975
Iscritto il: sabato 4 ottobre 2014, 16:24
Versione FileMaker: 2023
Sistema operativo: Win/Mac

Re: ExecuteSQL

Messaggio da fabio.beri » mercoledì 1 marzo 2017, 9:26

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.
Fabio Beri
Moderatore FMPro.it
Sviluppatore OmniaGest 5 - FileMaker 15/16/17/18/19

Omnia Studio

-----------------------------------------
http://tinyurl.com/omniagest2024

Rispondi