Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18

Discussione: Riuso classi GUI

  1. #11
    Per i permessi dei dipendenti userei una stringa.. composta da tante triplette, ed ogni tripletta della stringa è relativa ad un'area dell'applicazione. La tripletta è composta da 123, che sono i permessi in lettura, scrittura, modifica.
    Pensandoci meglio potrei usare anche un array di triplette, che forse faccio pure prima...

    Le ricette (sono tutte uguali) sono al massimo 4 per ogni paziente inserito, raramente sono 5...

    Mi faresti un esempio di come impostare una mappatura di pazienti/ricette→test?

    Poi nella sezione lavoro dovrò creare una lista di lavoro, indipendente dal paziente, ma che tiene conto solo delle analisi globali inserite in quella giornata (e le analisi dei giorni precedenti ancora non eseguite).
    Questo pannello viene gestito dai tecnici di laboratorio.
    Quindi dovranno poter ordinare la lista per numero di analisi, urgenza, tempi di esecuzione, ecc...

    In pratica io vorrei creare una specie di scheletro su cui poi fare tutte le operazioni di ordinamento.

    Intanto grazie mille per i consigli!

  2. #12
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da perseoclub
    Mi faresti un esempio di come impostare una mappatura di pazienti/ricette→test?
    Credo di essermi perso. A cosa ti riferisci precisamente?

    Poi nella sezione lavoro dovrò creare una lista di lavoro, indipendente dal paziente, ma che tiene conto solo delle analisi globali inserite in quella giornata (e le analisi dei giorni precedenti ancora non eseguite).
    Questo pannello viene gestito dai tecnici di laboratorio.
    Quindi dovranno poter ordinare la lista per numero di analisi, urgenza, tempi di esecuzione, ecc...

    In pratica io vorrei creare una specie di scheletro su cui poi fare tutte le operazioni di ordinamento.

    Intanto grazie mille per i consigli!
    Si, quelle poi le gestirai e le mostrerai come meglio credi.
    Per l'ordinamento, può essere più "problematico". Se puoi gestisci l'ordinamento tramite MySQL (una SELECT con ORDER BY), così ti risparmi un po' di codice e ne guadagni probabilmente in velocità.

    Prego.

  3. #13
    Immagina che nella giornata ho 10 pazienti:

    ognuno con delle richieste di esami (test clinici)

    Questi test possono essere richiesti sia su ricetta medica, che da privato (senza ricetta)... Quindi un paziente può aggiungere alla sua accettazione sia analisi da ricette che non.

    In sostanza io pensavo di creare una mappatura di tutte le analisi richieste, suddivise per paziente, e suddivise per ricetta medica.
    La ricetta medica mi serve perché in ogni ricetta non possono esserci più di 8 analisi convenzionate.

    La mappatura globale mi sarebbe utile quando alla degli inserimenti di tutti i pazienti della giornata, grazie a dei cicli, potrei rifare velocemente il calcolo degli incassi, oppure la stampa di una fattura, oppure se devo verificare ecc. ecc., oppure rivedere tutte le analisi dei giorni precedenti ancora pendenti...


  4. #14
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da perseoclub
    Immagina che nella giornata ho 10 pazienti:

    ognuno con delle richieste di esami (test clinici)

    Questi test possono essere richiesti sia su ricetta medica, che da privato (senza ricetta)... Quindi un paziente può aggiungere alla sua accettazione sia analisi da ricette che non.

    In sostanza io pensavo di creare una mappatura di tutte le analisi richieste, suddivise per paziente, e suddivise per ricetta medica.
    La ricetta medica mi serve perché in ogni ricetta non possono esserci più di 8 analisi convenzionate.
    Per quanto riguarda la memorizzazione interna, la cosa che mi viene in mente ora è questa. Hai una classe chiamata Analisi che definisce una singola anlisi. Una classe chiamata ad esempio AnalisiPaziente, che contiene un array (array list) di Analisi. Una classe Ricetta che estende AnalisiPaziente. In questo modo, la classe Ricetta contiene le proprie informazioni, e grazie all'ereditarietà avrà le proprie Analisi (quelle appunto scritte sulla ricetta).

    Un altro aspetto comodo, è che in un oggetto AnalisiPaziente puoi memorizzare un oggetto Ricetta. Quindi:
    codice:
    Analisi a1 = new Analisi(.....);
    Analisi a2 = new Analisi(......);
    AnalisiPaziente ap = new Ricetta(a1, a2);
    Ora ti chiederai come distingui gli oggetti AnalisiPaziente (quindi quelli privati, senza ricetta) da quelli con Ricetta, visto che li posso memorizzare in uno stesso riferimento (la superclasse). Fortunatamente è molto semplice, è sufficiente utilizzare l'operatore instanceof.
    codice:
    if(ap instanceof Ricetta) {.... }
    restituisce true se ap è un oggetto di tipo Ricetta.

    Detto questo, ad ogni paziente abbini un oggetto AnalisiPaziente, che racchiude le analisi del paziente. Li abbini sia che queste siano AnalisiPaziente, sia che si tratti di Ricetta. Per l'abbinamento, potresti avere la classe Paziente con al suo interno:
    codice:
    ArrayList<AnalisiPaziente> elencoAnalisi = new ArrayList<AnalisiPaziente>();
    ogni elemento dell'array può quindi essere o AnalisiPaziente o la sua superclasse Ricetta.

    Per mostrarli a video, la scelta sta a te. Puoi far scegliere un paziente, mostrare i dati anagrafici ed a lato mostrare l'elenco di Analisi e Ricette. Se le vuoi suddividere (magari in due liste distinte) sarà sufficiente controllare se quell'oggetto dell'array è AnalisiPaziente o Ricetta (e lo controlli con instanceof; quindi se è true, lo casti a quell'oggetto).


    La mappatura globale mi sarebbe utile quando alla degli inserimenti di tutti i pazienti della giornata, grazie a dei cicli, potrei rifare velocemente il calcolo degli incassi, oppure la stampa di una fattura, oppure se devo verificare ecc. ecc., oppure rivedere tutte le analisi dei giorni precedenti ancora pendenti...
    Potresti tenere in memoria tutti i pazienti della giornata, ma devi valutare bene la situazione. Se i pazienti possono essere molti, è forse più conveniente effettuare una ricerca nel database, magari in base alla data della giornata e ricavare tutti i pazienti, piuttosto che tenerli in memoria, in quanto per un oggetto Paziente ci sono una serie piuttosto numerosa di informazioni; inoltre i "report" se così posso definirli, li vedrai appunto a fine giornata...quindi perchè caricare continuamente il software con dati che vedrò dopo 8 ore?


    Queste sono idee delle 23.30, non è escluso che pensandoci un po', non mi vengano soluzioni migliori o più corrette, specie nella gestione delle ricette e delle analisi.

  5. #15


    Questo è lo schema del flusso di accettazione...

    Tieni conto che potrebbe verificarsi anche l'ipotesi di dover spostare le analisi da senza ricetta e a quelle con ricetta (magari capita quando hanno dimenticato le ricette medica a casa, oppure quando non è compilata bene o addirittura scaduta, e me le portano il giorno dopo; quindi nel frattempo noi le accettiamo come "analisi private", senza ricetta).

    Ho dato uno sguardo al tuo consiglio ma ancora non mi è molto chiaro; sono un novello quindi devo rivederlo meglio. Nel weekend non ci sono, ma appena torno cercherò di mettere in pratica tutti i tuoi consigli.

    PS. Intanto ti linko un consiglio sulla questione che mi venne dato qualche tempo fa: Applicazione Desktop

  6. #16
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Certo, facendo come ti ho mostrato sopra non hai quel problema. Sono i principi base di ereditarietà e polimorfismo.

    In pratica tu hai una classe (per ogni singolo paziente), e puoi vederla come un contenitore tipo Accettazione Paziente; al suo interno hai un array di oggetti Analisi. Ogni Analisi ha i suoi dati.
    Un altra classe chiamata RicettaAnalisi estenderà Analisi, e gestirà il tipo di Analisi con ricetta medica. Siccome la superclasse è Analisi, puoi riempire l'array con oggetto di tipo Analisi e RicettaAnalisi.
    E' ciò che si fa con i riferimenti di tipo Object insomma, che è la superclasse di tutte le classi.

    Questa soluzione non mi sembra male, perchè ti consente di gestire in modo abbastanza logico le Ricette. Ciò che farai sarà:
    - istanziare Analisi se questa non avrà ricetta;
    - istanziare Ricetta se le Analisi saranno abbinate ad una ricetta (quindi "dentro" a Ricetta creerai le analisi, sempre utilizzando la classe citata prima per gestirle).

    Se qualcosa non ti è chiaro ti spiegherò meglio quando torni.

  7. #17
    Come approccio mi sembra ottimo!

    Il mio dubbio è la gestione dei trasferimenti:

    Poniamo il caso che Tizio venga accettato (ID_Accettazione_Tizio, univoco)...
    ...e richieda:

    RICETTA_1:
    - Emocromo
    - Glicemia
    - Azotemia

    senza ricetta:
    - Colesterolo
    - Trigliceridi
    - HDL

    Io otterrò 6 analisi complessive di cui 6 come istanze della classe Analisi, di cui 3 come istanze di Analisi_ricetta (la sua sottoclasse); ed 1 ricetta.

    Ipotiziamo che il giorno dopo torni in lab e mi dica.. guarda avevo dimenticata a casa la RICETTA_2 dove c'erano i Trigliceridi...

    Come faccio a trasformare Trigliceridi da Analisi_Ricetta ad Analisi, senza cancellarla e reinserirla di nuovo? Dovrei utilizzare il casting?

    A seguito di tale operazione dovrei ritrovarmi con 6 istanze di Analisi, di cui 4 di Analisi_Ricetta (di cui 3 di Ricetta1 ed 1 di Ricetta2); e 2 ricette... così quando vado a correggere i dati del DB ho tutto il piano_accettazione_paziente sotto controllo.

    In sostanza nel DB nella tabella Analisi (che tecnicamente la ASL definisce "Prestazioni") metterò un campo ID_Ricetta (non univoco) in cui vengono inserite tutte le analisi con ricetta, in modo tale posso risalire a tutte le analisi_ricette (impostando la Query di tale campo a "IS NOT NULL").


    Comunque la cosa migliore è fare dei tentativi! Sono sicuro che andrà tutto a gonfie vele! Sei gentilissimo. Grazie ancora

  8. #18
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Se hai un Analisi e devi farla diventare AnalisiRicetta, non puoi castare (perchè Analisi non contiene le informazioni di AnalisiRicetta). L'alternativa è creare un oggetto AnalisiRicetta che contenga Analisi (quella che il giorno prima era una semplice Analisi, viene inglobata in AnalisiRicetta).

    Si, puoi tranquillamente utilizzare la tabella Analisi (continuerò a chiamarla così :P ) con al suo interno l'id della fattura a cui appartiene. Le Analisi senza ricetta potrebbero avere un id_ricetta = -1.
    La cosa più furba è anche memorizzare id_paziente sulla singola Analisi. In questo modo ogni Analisi inserita avrà il rispettivo id_paziente; il contrario, ovvero utilizzare Paziente con le analisi abbinate...sarebbe un disastro!

    La ricerca per abbinare le analisi sarà anche molto semplice. Sarà sufficiente cercare tutte le analisi con il campo id_paziente = N per avere tutte le Analisi del paziente, sia quelle con ricetta che senza.


    Dal punto di vista software, puoi anche avere una situazione come questa. Ogni paziente ha una classe che chiamerò Gestione. Al suo interno vi sono due array, uno che contiene le Analisi ed uno che contiene le Ricette.
    La classe Ricetta al suo interno possiede delle analisi (che sono appunto quelle con ricetta). In questo modo, se ti viene portata la ricetta il giorno dopo (a parte la modifica alla riga del db e l'inserimento nell'altra tabella), dovrai solo cercare l'Analisi nell'array dedicato alle Analisi, ed inserirla in un nuovo oggetto Ricetta (che memorizzerai dentro all'altro array).

    codice:
    Paziente
      - Gestione
    
    
    Gestione
      - Array Analisi
      - Array Ricette
    
    Analisi
      - dati analisi
    
    Ricetta
      - dati ricetta
      - Array Analisi
    Lo spostamento è appunto semplicissimo, in quanto le Analisi contenute nelle Ricette e quelle contenute direttamente nell'array di Gestione, sono uguali (ovviamente con dati differenti).

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 © 2026 vBulletin Solutions, Inc. All rights reserved.