Vai al contenuto

COGZ77 - Modifica Documento Ortodontico (Lettera/Cartella)

Sorgente: cbl/cogz77.cbl | Program-ID: COGZ77 | Tipo: Programma interattivo (modifica documenti ortodontici)

Menu: Lab.Odont. > Ortodonzia > Modifica Documento


Scopo

Modifica un documento ortodontico (lettera o cartella) gia' esistente, collegato a una commessa di laboratorio e al relativo fascicolo. L'operatore identifica la commessa tramite la ricerca generica COGS98W, sceglie il tipo documento e il numero da modificare; il programma risale al fascicolo (LODRACCO tipo "FC"), verifica l'esistenza del documento (LODDFORT), carica il testo esistente da LODDESCR nell'archivio temporaneo LODTMDES e delega la rieditazione del testo al sottoprogramma COGZ74L (lettere) / COGZ74C (cartelle) in modalita' visualizzazione/modifica. Al termine, se confermato, aggiorna la data sul documento LODDFORT, riscrive il testo su LODDESCR e offre la stampa tramite COGZO3L / COGZO3C.

Il programma puo' essere richiamato da COGZ76 (z77-called = "COGZ77-CALLED") passando direttamente commessa, tipo e numero documento: in tal caso salta la selezione manuale e va diretto alla modifica del testo.

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
LODFASCI ISAM Input Fascicolo paziente; letto per i dati anagrafici (lfs-num, lfs-cli, lfs-paziente)
LODRACCO ISAM (k02) Input Raccordo fascicolo-commessa, tipo "FC" (lrc-key-1 = fascicolo, lrc-key-2 = commessa)
LODDFORT ISAM I-O Documento del fascicolo/commessa; letto e aggiornato nella data (ldf-commessa, ldf-tip, ldf-num, ldf-data)
LODDESCR ISAM I-O Testo del documento; letto in caricamento e riscritto in aggiornamento (lde-tip = "O" + tipo, lde-cod, lde-pro, lde-des)
LODTMDES ISAM I-O Archivio temporaneo del testo in editing (ltd-cod, ltd-pro, ltd-len, ltd-des)
COGGEANA ISAM Input Anagrafica generale: descrizione studio medico del fascicolo (ana-tipo = "C")

Copybook utilizzate

Copybook Descrizione
cogz77.select, cogz77.fd, cogz77.wrk, cogz77-01.scr, cogz77.prc, cogz77.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
lodtmdes.fd, lodtmdes.cpy, lodtmdes.k01 Archivio temporaneo testi (dichiarato manualmente nel sorgente)
wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy, cogazien.cpy Working storage standard + dati azienda
utilfnt.cpy Gestione font
utils54.cpy Linkage COGS54 (selezione stampante/emulazione)
utils52.cpy, utils93.cpy, utils94.cpy Linkage COGS52/COGS93/COGS94 (date e servizi maschera)
utils98.cpy Linkage COGS98W (ricerca generica prescrizione-commessa)
utilz74x.cpy Linkage COGZ74L/COGZ74C (z74x-ope, z74x-esito)
utilzo3x.cpy Linkage COGZO3L/COGZO3C (zo3x-commessa, zo3x-tip, zo3x-num)
wcont.cpy, wcont1.cpy Aree di contesto standard (linkage)
utilz77.cpy Linkage di chiamata da COGZ76 (z77-called, z77-commessa, z77-tip-doc, z77-num-doc)
stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, mmmask.cpy, opengen.cpy Copybook di fine procedure
lodracco.k02 Chiave secondaria per la lettura commessa → fascicolo

Programmi chiamati

Programma Scopo
COGS98W Ricerca/accept generico della commessa (studio/paziente/progressivo/numero); usato anche in modalita' "find"/"display" quando richiamato da COGZ76
COGZ74L / COGZ74C Rieditazione del testo della lettera (L) o cartella (C); il testo esistente e' precaricato in LODTMDES e riproposto (z74x-ope = "V" = visualizzazione/modifica); restituisce z74x-esito
COGS54 Selezione stampante ed emulazione per la stampa del documento
COGZO3L / COGZO3C Stampa del documento lettera (L) o cartella (C)

Logica di elaborazione

Struttura goto-driven. Flusso principale:

  • apri: init programma, open-files, costruzione del nome del file temporaneo LODTMDES (#$COGZ74.<operatore> in ext-tmp-dir — riusa lo stesso nome di COGZ74). Se richiamato (z77-called = "COGZ77-CALLED") imposta lo stato di chiamata con commessa, tipo e numero documento ricevuti. Abilita i tasti funzione, carica bitmap labodonto e pulsante custom "Commessa (F5)", inizializza COGS98W.
  • a4: reset maschera; data documento = data di sistema, tipo default "L". Se in stato di chiamata precompila tipo e numero documento e, tramite COGS98W in modalita' "find"/"display", posiziona direttamente la commessa ricevuta (salto a a-10-out); se la commessa non e' trovata avvisa e torna all'accept.
  • a-tm-cli: in modalita' manuale apre COGS98W in "accept" per selezionare la commessa.
  • a-fine-commessa: x-controlla-commessa; visualizza gli estremi dell'ultima lettera e dell'ultima cartella della commessa (a1-cerca-ultimo su LODDFORT letto in rdprv dal numero 9999); risale al fascicolo tramite LODRACCO tipo "FC" (chiave 2 = commessa) e verifica LODFASCI; mostra studio (descrizione da COGGEANA), paziente e numero fascicolo. Se in stato di chiamata legge subito il documento indicato (LODDFORT) e salta all'accept della data.
  • a-tm-tip / a-tm-num-doc / a-tm-data: accept in cascata del tipo documento (COGS60), del numero documento e della data (COGS52, calendario F8). x-controlla-tm-num-doc verifica che il documento (commessa + tipo + numero) esista su LODDFORT.
  • a-richiesta-conferma / a-90 / a-90-ok: x-imposta-conferma valida i campi; se richiamato salta la conferma manuale. In a-90-ok:
  • a2-carica-documento: apre LODTMDES in output e travasa il testo esistente da LODDESCR (lde-tip = "O" + tipo, lde-cod = commessa + numero doc + tabella) nell'archivio temporaneo, cosi' il sottoprogramma di editing lo ripropone.
  • a3-salva-modifiche: aggiorna la data del documento su LODDFORT (write, e in caso di record esistente rewrite).
  • chiama COGZ74L / COGZ74C in modalita' "V" (visualizzazione/modifica) dentro finestra di appoggio; se l'esito e' "S" esegue c-aggiorna.
  • c-aggiorna: apre LODTMDES in input; c1-cancella elimina il testo precedente del documento su LODDESCR, poi (c-20-loop) riscrive il nuovo testo da LODTMDES a LODDESCR. Propone infine la stampa (c-50/c-60) tramite COGS54 + COGZO3L/COGZO3C.
  • fine / z-chiudi: z-close-files, close lodtmdes, cancel "COGS98W", exit program.

Note

  • Il codice usa PERFORM ... THRU e GO TO in modo estensivo (stile legacy pre-convenzioni attuali); commento "Conversione Daniele" in testata.
  • Rispetto a COGZ74 (inserimento), COGZ77 lavora su un documento gia' esistente: non genera un nuovo numero documento e non tocca il progressivo lfs-num-doc del fascicolo; puo' modificare la data del documento (LODDFORT) e il testo (LODDESCR).
  • Il testo esistente viene precaricato in LODTMDES prima di richiamare il sottoprogramma di editing (z74x-ope = "V"), a differenza dell'inserimento dove LODTMDES parte vuoto. In aggiornamento il testo su LODDESCR viene prima cancellato integralmente (c1-cancella) e poi riscritto.
  • LODTMDES e' una tabella temporanea dichiarata manualmente nel sorgente (SELECT nel .select, FD nel file section, COPY del layout e lodtmdes.k01 a fine procedure). Il nome del file (#$COGZ74.<operatore>) coincide con quello usato da COGZ74.
  • Il raccordo commessa → fascicolo usa la chiave secondaria lodracco.k02 (tip + key-2 + key-1), quindi la ricerca parte dal numero commessa (lrc-key-2).
  • La ricerca dell'ultimo documento (a1-cerca-ultimo) usa una lettura all'indietro (st-loddfort-min con num = 9999 seguita da rdprv-loddfort) per intercettare il numero documento piu' alto della commessa per il tipo richiesto.