Vai al contenuto

COGZD1 — Preparazione commessa #2

Sorgente: cbl/cogzd1.cbl | Program-ID: cogzd1 | Tipo: Programma interattivo GUI complesso a due griglie (prestazioni + fasi), ~17.000 righe

Menu: Lab.Odont. > Operativo > Preparazione commessa #2


Scopo

E' il programma centrale di preparazione della commessa di laboratorio: attribuisce alla commessa un piano di fabbricazione personalizzato (tipo "TEMPORANEO") e genera i record commessa (LODCMTES/LODCMRIG) con il riferimento al piano da cui provengono le righe. E' costruito sulla base di COGZ20, ma richiede all'inizio il riferimento alla commessa/prescrizione e lavora su un piano temporaneo.

L'operatore parte da una prescrizione (studio/paziente/progetto), ricerca e associa uno o piu' piani di fabbricazione (PDF), e ottiene una lista di prestazioni; da queste il programma esplode le fasi (azioni) che compongono la commessa, ordinandole, aggregandole per gruppo azione, e calcolando materiali, reparti, tempi e consegne. La maschera presenta due griglie sincronizzate:

  • Griglia prestazioni (e-grid-prest): le prestazioni selezionate sulla commessa;
  • Griglia fasi (e-grid-fasi): le fasi/azioni derivate, con reparto, materiali obbligatori, note, date impegno/rientro.

Al termine (F3 aggiorna) i dati vengono trasferiti dalle tabelle di transito interne alle tabelle definitive della commessa. Il programma gestisce inoltre blocco/sblocco commessa, riapertura, note (cliente, fase, interne), analisi rischi, fascicolo tecnico, archiviazione allegati, gestione impegni e invio email ai responsabili.

Fa uso di un file di configurazione .CNF denominato ODONTO.CNF e di numerose chiavi RNEWCONF.


Tabelle di transito interne

Il cuore dell'elaborazione avviene su tabelle di transito indicizzate, dichiarate manualmente (SELECT + FD) e mappate sulle routine di COGTRANS tramite COPY ... REPLACING:

File di transito Chiave / Contenuto Scopo
T-PRESTAZIONI (cogzd1-t-prestazioni.fd) mappato su verbi COGTRANS Prestazioni selezionate sulla commessa (alimenta la griglia prestazioni)
T-FASI t-fas-chia1 (id) + chiavi ordinamento/ricerca per prestazione Fasi/azioni esplose dalle prestazioni (alimenta la griglia fasi); contiene sequenza, azione, reparto, materiali, date, note
T-PROPRIETA t-ppt-chia1 (id prestazione + proprieta') Proprieta' selezionate per prestazione e materiale collegato
T-AZ-PREST t-cpa-chia1 (prestazione + fase) Collegamento azioni ↔ prestazioni

I nomi fisici sono costruiti in apri in ext-tmp-dir con schema #$cogzd1_fasi.{operatore}, #$cogzd1_prestazioni.{operatore}, #$cogzd1_proprieta.{operatore}, #$cogzd1_az_prest.{operatore}.


File e tabelle (archivi definitivi)

File Copybook Accesso Scopo
LODPRESC lodpresc.k01-agg, lodpresc.k04 Lettura/scrittura Prescrizione: dati anagrafici, consegna, stato commessa
LODCMTES lodcmtes.k02 Lettura/scrittura/riscrittura Testata commessa generata (piano, stato, blocco)
LODCMRIG lodcmrig.k01-agg Lettura/scrittura Righe commessa (una per fase/azione)
LODCMDET lodcmdet.k01-agg Lettura/scrittura Dettaglio righe commessa
LODCMAG2 (via .prc) Lettura/scrittura/riscrittura Dati aggiuntivi commessa
LODCMPRA lodcmpra.k02 Lettura Proprieta' commessa
LODPDFPR lodpdfpr.k02 Lettura Prestazioni del piano di fabbricazione
LODPFSTD lodpfstd.k02 Lettura Piani di fabbricazione standard
LODPNRIG lodpnrig.k01-agg Lettura Righe del piano di fabbricazione (fasi/azioni)
LODPNMAT lodpnmat.k01-agg Lettura Materiali del piano di fabbricazione
LODPREAZ lodpreaz.k02 Lettura Azioni della prestazione
LODPRMDT lodprmdt.k02 Lettura Materiali/dettaglio prestazione
LODDESCR loddescr.k01-agg Lettura/scrittura Descrizioni lavoro (da piano)
LODINFCC lodinfcc.k02 Lettura Informazioni
LODRAPNC lodrapnc.k02 Lettura Raccordi
LODIMPDT lodimpdt.k02 Lettura Impegni dettaglio
LODTMDES (lodtmdes.fd/.cpy) lodtmdes.k01 I-O temporaneo Transito descrizioni (temp per operatore)
LODTMMAT (lodtmmat.fd/.cpy, is external) lodtmmat.k01 I-O temporaneo Transito materiali (temp per operatore)
COGMERCI Lettura Anagrafica merci
COGANRAG Lettura Raggruppamento articoli
COGGEANA Lettura Anagrafica clienti
PRNTOPER Lettura Operatori (reparto operatore corrente)

Programmi chiamati (CALL)

Data la complessita', COGZD1 orchestra un'ampia catena di sottoprogrammi del modulo laboratorio:

Programma Scopo
COGS98W Gestione campi prescrizione (studio/paziente/progetto)
WINZ04 / WINZ07 / WINZ22 Finestre di ricerca piani (wz04), ricerca (wz07), ricerca prestazioni (wz22)
COGZD1A Costruzione tag/etichetta note per cliente/pdf/azione
COGZC5 / COGZC8 Subroutine gestione impegni
COGZCF / COGZCH / COGZCN Subroutine di supporto commessa/fasi/note
COGZDC / COGZDEW Subroutine di dettaglio/gestione
COGZSA Subroutine supporto
COGZ13 / COGZ25 / COGZ30 / COGZ31 / COGZ39 / COGZ45 / COGZ48 / COGZ50 / COGZ51 / COGZ60 / COGZ61 / COGZ85 / COGZ88 / COGZ89 / COGZ93 Catena di funzioni del modulo laboratorio (prescrizione, avanzamento, note, stato commessa, stampe, ecc.)
COGZA6 / COGZB6 / COGZS5 / COGZS7 Subroutine di supporto commessa/numerazione
COGU06 / COGU10W Subroutine di utilita' (divisa/importi)
COGS62 / COGS94W Subroutine di supporto
WIN036 Finestra ausiliaria
POSTA / DIALOGS Invio email ai responsabili; dialog di scelta
GRIDADMN Gestione/personalizzazione delle due griglie
RNEWCONF Lettura configurazione (chiamato piu' volte: x99-confi, x99-confi-indice, x99-confi-operatore)
W$KEYBUF Gestione buffer tastiera (utility runtime)

Copybook incluse (principali)

Working Storage

feurtab.fd, cogfiles.cpy, cogzd1.fd, cogzd1.select, lodtmdes.fd, lodtmmat.fd, cogzd1-t-prestazioni.fd/.cpy, cogzd1.wrk, k-personal.cpy, costanti-labod.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, acucobol.def, utildlg.cpy, wgrid.cpy, utilgdad.cpy, utilncnf.cpy, utilzde.cpy, utils52.cpy, utils62.cpy, utils68.cpy, utils93.cpy, utils94.cpy, utils98.cpy, utilu06.cpy, utilu20.cpy, utilw36.cpy, utilw80.cpy, utilwz03/04/07/22.cpy, utilz25/30/31/39/93/60.cpy, utilza6.cpy, utilzc1.cpy, utilzs5.cpy, utilzs7.cpy, utilu10.cpy, utilpost.cpy, utilmymail.cpy, utilcogzc5/c8/ch/d1a/cf/cn.cpy, utilcogzsa.cpy, utilcogzdc.cpy, utilgesdebug.cpy

Linkage / Screen

wcont.cpy, utilz23/zd1/z45/z48/z50/z51/z61/f12/zb6/z88/z89/z85.cpy, wcont1.cpy, cogzd1-01.scr

Procedure Division

cogzd1.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogzd1.prc, sendw80.cpy, sendwz03.cpy, sendwz07.cpy, gesdebug.cpy, chiavi secondarie lod*.k0*, e le remap cogtrans.k01-k06 per i quattro file di transito.


Parametri di configurazione (RNEWCONF)

COGZD1 legge oltre 30 chiavi (x99-confi, x99-confi-indice, x99-confi-operatore). Le principali:

Gruppo Chiave Variabile interna Effetto (sintesi)
ODONTO GESTIONE-REPARTI tm-cfg-fl-rep Gestione reparti sulle fasi
ODONTO ESCLUDI-MATERIALI-ALLERGICI tm-cfg-escludi Esclusione materiali allergici
ODONTO SELEZIONE-MAT-PREST tm-cfg-mat-prest Selezione materiali per prestazione (influenza il nome del transito LODTMMAT)
LABPREPARA DES-LAVORO-DA-PIANO tm-cfg-des-piano Descrizione lavoro derivata dal piano
odonto azione-iniziale-automatica tm-cfg-azione-accett Azione di accettazione automatica
ODONTO DOCUMENTO-ACCOMPAGNAMENTO tm-cfg-tip-doc Tipo documento di accompagnamento
labprepara stampa-scheda-interna tm-cfg-scheda-interna Stampa scheda interna
odonto modifica-commessa-con-documenti tm-cfg-mod-com-doc Modificabilita' commessa con documenti
LABPREPARA RIAPERTURA-CON-DOCUMENTI / RIAPERTURA-CON-STATO tm-cfg-riapri-se-doc / tm-cfg-riapri-stato Regole di riapertura commessa
LABPREPARA AZIONE-BLOCCO-COMMESSA tm-cfg-azione-blocco Azione che blocca la commessa
abilita labod-impegni tm-cfg-labod-impegni Gestione impegni
LABPREPARA FORZO-PREST-AUTOMATICA tm-cfg-forzo-prest-auto Forza prestazione automatica
LABPREPARA MODO-RICERCA-PIANI tm-cfg-ricerca-piani Modalita' ricerca piani
ODONTO AZIONE-CONTROLLO-QUALITA tm-cfg-azione-cq Azione di controllo qualita'
LABPREPARA ELIMINA-PREST-EVASE tm-cfg-elimina-prest-evase Eliminazione prestazioni evase
LABPREPARA N-CAR-X-AGGR-AZIONI-GRUPPO tm-cfg-n-car-x-aggr-azioni Caratteri per aggregazione azioni per gruppo
LABPREPARA COMMESSA-FAST tm-cfg-commessa-fast Modalita' commessa "fast"
ODONTO NUMERO-COMMESSA-AUTOMATICO tm-cfg-num-aut Numerazione automatica commessa
ODONTO GESTIONE-MULTI-SEDE tm-cfg-multi-sede Multi-sede
LABAVANZ AVANZAMENTO-WEB tm-cfg-avanzamento-web Avanzamento via web
labpresc path-archiviazione-auto tm-cfg-path-archiviazione-auto Cartella archiviazione allegati
odonto modifica-qta-su-prestazioni tm-cfg-modifica-qta-prest Modifica quantita' su prestazioni
azienda email-resp-commerciale / email-resp-produzione Destinatari email di notifica

(Elenco completo nel paragrafo x99-confi, indici 01-31 piu' chiavi condizionali per gesso/progetto/email/operatore-clinica.)


Logica di elaborazione

  1. apri: inizializza gesdebug, costruisce i nomi dei quattro transiti e dei transiti LODTMDES/LODTMMAT, apre i file, definisce i numerosi pulsanti custom (F5 commessa, F7 togli/aggiungi, F6 rientro/gestione/blocca, F1 riapri/prestazione, F5 materiali, F9 note, S-F1 presc, S-F5 avanzamento, S-F7 fascicolo/allegati, S-F2 note interne, S-F8 gestione impegno, F5 analisi rischi), carica la configurazione e prepara le due griglie.
  2. a4: (ri)apre i transiti temporanei LODTMMAT/LODTMDES con controllo "funzione gia' in uso", ricava reparto operatore, divisa conto, azzera le griglie.
  3. Accept campi chiave (a-tm-cli, a-tm-cod-dsp, a-tm-rep, a-tm-des, a-tm-data-scadenza, ...): acquisizione prescrizione, tipo dispositivo, reparto, descrizione, scadenza.
  4. Ricerca piani/prestazioni: se la commessa e' vuota, entra direttamente in ricerca PDF (WINZ04) e prestazioni (WINZ22); le prestazioni scelte popolano T-PRESTAZIONI.
  5. Esplosione fasi (a01-*, a02-prepara-aggiornamenti, a03-add-prest): per ogni prestazione esplode le azioni dal piano (LODPNRIG/LODPREAZ), le ordina, le aggrega per gruppo azione (secondo N-CAR-X-AGGR-AZIONI-GRUPPO), assegna reparto/materiali/tempi e popola T-FASI e T-AZ-PREST. Include gestione automatica di azioni speciali (accettazione, gesso, progetto, controllo qualita').
  6. Gestione griglie (a-grid-prest, a-grid-fasi, a-grid-propr): l'operatore modifica prestazioni/fasi/proprieta', note (cliente/fase/interne), materiali, blocca/sblocca (a12/a13).
  7. Aggiornamento (F3): trasferisce i dati dai transiti alle tabelle definitive (LODCMTES/LODCMRIG/LODCMDET/LODCMAG2/LODDESCR), scrive il piano temporaneo (w-tip-piano = "T"), aggiorna la prescrizione e, se configurato, invia le email di notifica ai responsabili.

Paragrafi chiave

Paragrafo Scopo
apri Inizializzazione completa: transiti, pulsanti, configurazione, griglie
a4 (Ri)apertura transiti LODTMMAT/LODTMDES, reset griglie
a-tm-cli / a-tm-cod-dsp / a-tm-rep / a-tm-des / a-tm-data-scadenza Accept dei campi di testata commessa
x-ricerca-pdf / x-ricerca-prestazioni Ricerca piani e prestazioni (WINZ04/WINZ22)
a01-d-aggiorna-fasi-da-prest Esplosione/aggiornamento fasi a partire dalle prestazioni
a02-prepara-aggiornamenti Preparazione degli aggiornamenti su commessa
a03-add-prest Aggiunta di una prestazione alla commessa
a-grid-prest / a-grid-fasi / a-grid-propr Cicli di gestione delle griglie
a12-blocca-commessa / a13-sblocca-commessa Blocco/sblocco commessa (rwr LODCMTES/LODCMRIG)
c3-aggiorna-note-cli / f3-aggiorna-note-fase Gestione note cliente / note fase
x99-confi / x99-confi-indice / x99-confi-operatore Caricamento configurazione

Note

  • Problema noto — errore 93/47 sui file temporanei. I file temporanei (i quattro transiti #$cogzd1_*, LODTMDES con schema #$cogzd1.{operatore} e LODTMMAT con ##cogzd1.{operatore} o LODTMMAT.{operatore}) sono nominati usando solo il codice operatore (wo-oper), senza PID di processo. Se lo stesso operatore ha piu' istanze del programma (o resti di sessioni precedenti) il nome del file temporaneo collide: l'open output fallisce con errore 93 (lock su lodtmdes per nome non univoco) e innesca a catena errori 47 su LODTMMAT/COGTRANS. Il fix proposto e' rendere univoco il nome del file temporaneo aggiungendo il PID di processo (come gia' fatto per la famiglia COGV60, cfr. tran-v60) e/o verificare l'apertura i-o prima di forzare l'open output. LODTMMAT e' dichiarato is external, quindi il nome deve restare coerente con gli altri programmi che lo condividono: valutare l'impatto prima di modificarlo.
  • Il programma e' molto grande (~17.000 righe) e usa estensivamente PERFORM ... THRU e GO TO (stile legacy derivato da COGZ20): in manutenzione modificare un paragrafo alla volta e verificare lo scope dei loop e le CLOSE/OPEN dei transiti.
  • Fa uso di gesdebug (gesdebug-loadconf, gesdebug-apri-principale) per la diagnostica.