telemedicina per pz in adi
3 partecipanti
Pagina 1 di 1
Re: telemedicina per pz in adi
Auguri, Lucio Auguri
Con affetto
giampiero
Con affetto
giampiero
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: telemedicina per pz in adi
GiampiMaz ha scritto:Auguri, Lucio Auguri
Con affetto
giampiero
Grazie Giampiero per il sostegno!
Vi rendero' edotti degli esiti.
Ho provato la query, ho fatto qualche minima modifica e mi pare che ci siamo.
Ho tentato di ordinare i dati in base la numero di eventi con Order By ma non ci sono riuscito.
Non ho ben chiara la differenza, inoltre, tra ORDER BY e GROUP BY.
Se puoi illuminarmi...?
Re: telemedicina per pz in adi
Caro Lucio
penso tu possa trovare migliori descrizioni in un qualsiasi corso o file di sql.
Comunque l'istruzione per ordinare i risultati è ORDER BY
in teoria si possono usare i nomi dei campi ma è fonte di complicazioni.
ORDER BY N_Eventi, p.cognome, p.nome, eta
al posto dei nomi dei campi molto meglio mettere i numeri es
ORDER 14, 1, 2, 3 (se non hai modificato il numero dei campi, se ne hai aggiunti o tolti devi contare per arrivare ad N_Eventi.
così per default conta dal più piccolo al più grande (dall'1 al 100 o dall'a alla z) e si può trascurare il comando ASC (ascendente); se si vuole ordinare al contrario (dal più grande al più piccolo) bisogna aggiungere DESC (discendente)
ORDER BY 14 DESC, 1, 2, 3 (1,2,3 non avendo messo nulla restano ascendenti)
GROUP BY è un'istruzione concettualmente più complessa, serve a raggruppare i campi voluti, ad esempio per contarli.
L'esempio riportato dal Manuale SQL di millewin è
SELECT terapia, SUM(quantita) quanti, SUM (prezzo*quantita) spesa
FROM v_terapie
WHERE fascia = 'A'
GROUP BY terapia
ORDER BY terapia --------- (qui si può mettere 1 : vedi sopra)
cioè raggruppiamo tutti i vari record terapia della vista V_terapie (tutti i quinazil, tutti i torvast ecc) poi sommiamo il numero di pezzi ecc
In pratica se è richiesto GROUP BY viene chiesto perentoriamente dal programma
Ancora Auguri
giampiero
penso tu possa trovare migliori descrizioni in un qualsiasi corso o file di sql.
Comunque l'istruzione per ordinare i risultati è ORDER BY
in teoria si possono usare i nomi dei campi ma è fonte di complicazioni.
ORDER BY N_Eventi, p.cognome, p.nome, eta
al posto dei nomi dei campi molto meglio mettere i numeri es
ORDER 14, 1, 2, 3 (se non hai modificato il numero dei campi, se ne hai aggiunti o tolti devi contare per arrivare ad N_Eventi.
così per default conta dal più piccolo al più grande (dall'1 al 100 o dall'a alla z) e si può trascurare il comando ASC (ascendente); se si vuole ordinare al contrario (dal più grande al più piccolo) bisogna aggiungere DESC (discendente)
ORDER BY 14 DESC, 1, 2, 3 (1,2,3 non avendo messo nulla restano ascendenti)
GROUP BY è un'istruzione concettualmente più complessa, serve a raggruppare i campi voluti, ad esempio per contarli.
L'esempio riportato dal Manuale SQL di millewin è
SELECT terapia, SUM(quantita) quanti, SUM (prezzo*quantita) spesa
FROM v_terapie
WHERE fascia = 'A'
GROUP BY terapia
ORDER BY terapia --------- (qui si può mettere 1 : vedi sopra)
cioè raggruppiamo tutti i vari record terapia della vista V_terapie (tutti i quinazil, tutti i torvast ecc) poi sommiamo il numero di pezzi ecc
In pratica se è richiesto GROUP BY viene chiesto perentoriamente dal programma
Ancora Auguri
giampiero
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: telemedicina per pz in adi
GiampiMaz ha scritto:Caro Lucio
penso tu possa trovare migliori descrizioni in un qualsiasi corso o file di sql.
Comunque l'istruzione per ordinare i risultati è ORDER BY
in teoria si possono usare i nomi dei campi ma è fonte di complicazioni.
ORDER BY N_Eventi, p.cognome, p.nome, eta
al posto dei nomi dei campi molto meglio mettere i numeri es
ORDER 14, 1, 2, 3 (se non hai modificato il numero dei campi, se ne hai aggiunti o tolti devi contare per arrivare ad N_Eventi.
Ed avevo proprio fatto così come dici (Letto il manuale on line SQL, provato con i numeri e con i nomi dei campi) ma non riuscendo ad ottere un ordinamento corretto in base al numero di eventi pensavo mi fosse sfuggito qualcosa in merito ad Order By...
Riguardo il tutto (devo apportare ancora alcune modifiche Last Minutes) e ti faccio sapere.
Re: telemedicina per pz in adi
Questa è la versione definitiva della query con qualche modifica, come da richiesta della ASL (inserimento codice fiscale pz, codice regionale medico, evento ICTUS, qualche colonna vuota per inserire dati successivamente, etc.).
La pubblico se può essere utile ad altri e ringrazio moltissimo chi mi ha aiutato.
[COMMENTO]
ESTRAZIONE PZ CCM CON PIU' DI DUE PATOLOGIE A CUI DESTINARE SERVIZI TELEMEDICINA
[SQL]
SELECT distinct p.cognome+' '+p.nome AS Nome, p.codice_fiscale As Codice_Fiscale, p.nascita as Data_Nascita, Years(p.nascita, TODAY()) As Eta, p.sesso As _Sesso_, u.codice_regionale as Cod_Reg_Medico,
/* COLONNA VUOTA PER INSERIMENTO PUNTEGGIO EARLI */
' '_EARLI_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _Diabete_I_e_II,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '496') then 1 else 0 endif AS _BPCO_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('799.1' ,'518.81')) THEN 1 ELSE 0 ENDIF AS _Insufficienza_Respiratoria_Cronica_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like 'V43.3%') THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare_Meccanica,
/* ESTRAE PROBLEMA SCOMPENSO E CODICI SIMILI APERTO DA QUALSIASI DATA */
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4')) THEN 1 ELSE 0 ENDIF AS Scompenso ,
/*ESTRAE PROBLEMA SCOMPENSO SE PIU DI UN EPISODIO NELL ULTIMO ANNO*/
/* IF (select count (y.codice) from cart_pazpbl y where y.codice=p.codice and y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) >1 then 1 else 0 endif AS Scompenso , */
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '429.79%') THEN 1 ELSE 0 endif AS Trombosi_Edocavitaria,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('436' , '431')) THEN 1 ELSE 0 ENDIF AS _Ictus_,
/* INSERISCE SI SE ADP ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADP,
/* INSERISCE SI SE ADI ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADI,
/* COLONNA VUOTA PER ISERIMENTO PAZIENTE RESIDENTE RSA */
' '_RSA_,
(_diabete_I_e_II + _BPCO_ + _Insufficienza_Respiratoria_Cronica_ + _Embolia_+ _Fibrillazione_Atriale_ + Protesi_Valvolare_Meccanica + Scompenso + Trombosi_Edocavitaria + _Ictus_) As N_Eventi
FROM pazienti p, nos_002 n, v_utenti u,
WHERE p.codice =n.codice AND u.userid = n.pa_medi
AND eta >= 65
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null
/* ATTENZIONE - Per estrarre i dati di un SINGOLO MEDICO inserire fra le parentesi il proprio codice di medicina di gruppo al posto delle XXXXX*/
/* Per estrarre i dati di TUTTI I MEDICI presenti nel database eliminare tutta la riga seguente */
And n.pa_medi like 'XXXXX'
AND N_Eventi >=2
Order by 1, 2, 3
/* PER ORDINARE ELENCO IN BASE AL NUMERO DI EVENTI */
/* Order by 20 desc, 1, 2, 3 */
La pubblico se può essere utile ad altri e ringrazio moltissimo chi mi ha aiutato.
[COMMENTO]
ESTRAZIONE PZ CCM CON PIU' DI DUE PATOLOGIE A CUI DESTINARE SERVIZI TELEMEDICINA
[SQL]
SELECT distinct p.cognome+' '+p.nome AS Nome, p.codice_fiscale As Codice_Fiscale, p.nascita as Data_Nascita, Years(p.nascita, TODAY()) As Eta, p.sesso As _Sesso_, u.codice_regionale as Cod_Reg_Medico,
/* COLONNA VUOTA PER INSERIMENTO PUNTEGGIO EARLI */
' '_EARLI_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _Diabete_I_e_II,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '496') then 1 else 0 endif AS _BPCO_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('799.1' ,'518.81')) THEN 1 ELSE 0 ENDIF AS _Insufficienza_Respiratoria_Cronica_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like 'V43.3%') THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare_Meccanica,
/* ESTRAE PROBLEMA SCOMPENSO E CODICI SIMILI APERTO DA QUALSIASI DATA */
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4')) THEN 1 ELSE 0 ENDIF AS Scompenso ,
/*ESTRAE PROBLEMA SCOMPENSO SE PIU DI UN EPISODIO NELL ULTIMO ANNO*/
/* IF (select count (y.codice) from cart_pazpbl y where y.codice=p.codice and y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) >1 then 1 else 0 endif AS Scompenso , */
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '429.79%') THEN 1 ELSE 0 endif AS Trombosi_Edocavitaria,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('436' , '431')) THEN 1 ELSE 0 ENDIF AS _Ictus_,
/* INSERISCE SI SE ADP ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADP,
/* INSERISCE SI SE ADI ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADI,
/* COLONNA VUOTA PER ISERIMENTO PAZIENTE RESIDENTE RSA */
' '_RSA_,
(_diabete_I_e_II + _BPCO_ + _Insufficienza_Respiratoria_Cronica_ + _Embolia_+ _Fibrillazione_Atriale_ + Protesi_Valvolare_Meccanica + Scompenso + Trombosi_Edocavitaria + _Ictus_) As N_Eventi
FROM pazienti p, nos_002 n, v_utenti u,
WHERE p.codice =n.codice AND u.userid = n.pa_medi
AND eta >= 65
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null
/* ATTENZIONE - Per estrarre i dati di un SINGOLO MEDICO inserire fra le parentesi il proprio codice di medicina di gruppo al posto delle XXXXX*/
/* Per estrarre i dati di TUTTI I MEDICI presenti nel database eliminare tutta la riga seguente */
And n.pa_medi like 'XXXXX'
AND N_Eventi >=2
Order by 1, 2, 3
/* PER ORDINARE ELENCO IN BASE AL NUMERO DI EVENTI */
/* Order by 20 desc, 1, 2, 3 */
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.