Laboratorio Odontotecnico — Prescrizioni Mediche¶
Area funzionale: Laboratori Odontotecnici / Operativo Programma documentato: COGZ40 | Righe codice: 7.428
Indice¶
- Panoramica
- Struttura dati prescrizione
- Funzionalità principali
- Pulsanti funzione
- Flusso operativo
- File principali
- Programmi chiamati
- Configurazioni
- Validazioni
1. Panoramica¶
COGZ40 — Gestione Prescrizioni Mediche¶
File: /programmi/eurocoge/cbl/cogz40.cbl (7.428 righe)
Autore: Andrea Parmeggiani - Eurosystem
Conversione GUI: Daniele
Funzione principale: Punto di ingresso del workflow laboratorio odontotecnico. Gestisce l'inserimento, modifica e visualizzazione delle prescrizioni mediche che costituiscono la base per la successiva creazione delle commesse di laboratorio.
Posizione nel workflow:
[1] COGZ40 (Prescrizione medica) ← TU SEI QUI
↓
[2] COGZ41/COGZD1 (Preparazione commessa)
↓
[3] COGZ45 (Avanzamento lavori)
↓
[4] COGZB7 (Evasione commessa)
Caratteristiche chiave: - 🏥 Gestione completa anagrafica: studio medico, paziente, medico prescrittore - 📋 Numerazione automatica: progressivo prescrizioni configurabile - 📅 Gestione date: entrata, consegna prevista, consegna effettiva - 💰 Preventivo: importo stimato in divisa configurabile - 📎 Allegati: gestione immagini e documenti (archiviazione automatica) - 🔄 Stati: gestione ciclo di vita prescrizione (N/A/C/E) - 📊 Integrazioni: agenti, distributori, bollettini, impegni
2. Struttura dati prescrizione¶
2.1 Chiave prescrizione¶
La prescrizione è identificata univocamente da 3 componenti:
| Campo | Tipo | Descrizione |
|---|---|---|
| tm-cli | pic 9(05) | Codice studio medico/cliente |
| tm-paziente | pic x(25) | Codice paziente (alfanumerico) |
| tm-pro | pic 9(10) | Progressivo prescrizione (numero interno) |
Chiave file: LODPRESC (lpm-studio + lpm-paziente + lpm-num)
2.2 Campi principali¶
Anagrafica¶
| Campo | Tipo | Descrizione | Obbligatorio |
|---|---|---|---|
tm-num |
pic 9(10) | Numero prescrizione interno | ✅ Auto |
tm-piano |
pic x(20) | Descrizione piano di cura | ❌ |
tm-n-archivio |
pic x(12) | Numero archivio/cartella paziente | ❌ |
tm-stato |
pic x(01) | Stato (N/A/C/E/F/G/P/U/R) | ✅ |
tm-dottore |
pic x(40) | Nome medico prescrittore | ❌ |
tm-prescrittore |
Codice medico prescrittore | ❌ | |
├─ tm-cp-tip |
pic x(01) | Tipo (M=Medico, A=Agente, etc.) | |
└─ tm-dottore-cod |
pic 9(10) | Codice anagrafico |
Importi e commerciale¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-imp-preventivo |
pic 9(12)v999999 | Importo preventivo stimato |
tm-imp-divisa |
pic x(02) | Divisa importo (EUR, USD, etc.) |
tm-age-cod |
pic 9(05) | Codice agente commerciale |
tm-age-des |
pic x(40) | Descrizione agente |
tm-dist-cod |
pic 9(05) | Codice distributore |
tm-dist-des |
pic x(40) | Descrizione distributore |
Date e tempi¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-data-ent |
pic 9(08) | Data entrata prescrizione (AAAAMMGG) |
tm-data-cns |
pic 9(08) | Data consegna prevista (AAAAMMGG) |
tm-ora-cns |
pic 9(04) | Ora consegna prevista (HHMM) |
tm-data-cons-eff |
pic 9(08) | Data consegna effettiva (AAAAMMGG) |
tm-ora-cons-eff |
pic 9(04) | Ora consegna effettiva (HHMM) |
tm-data-ordine |
pic 9(08) | Data ordinazione materiali |
Dati paziente¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-paz-esteso |
pic x(40) | Nome completo paziente |
tm-data-nascita |
pic 9(08) | Data nascita paziente |
tm-anni |
pic 9(03) | Età calcolata |
tm-telefono |
pic x(25) | Telefono paziente |
tm-rif-paziente |
pic x(30) | Riferimento esterno paziente |
tm-paz-indi |
pic x(80) | Indirizzo completo paziente |
tm-cassetta |
pic x(15) | Numero cassetta/contenitore |
Altri dati¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-com-4 / tm-com-5 |
pic 9(04/05) | Numero commessa collegata |
tm-presc |
pic x(20) | Numero prescrizione esterna |
tm-fl-preventivo |
pic x(01) | Flag richiede preventivo |
tm-fl-progetto |
pic x(01) | Flag richiede progetto tecnico |
tm-tip-doc |
pic x(01) | Tipo documento (configurabile) |
tm-fl-image |
pic x(01) | Flag ha immagini allegate |
tm-ordine |
pic x(03) | Numero ordine materiali |
tm-cod-alle |
pic x(10) | Codice allegato/immagine |
2.3 Stati prescrizione¶
| Codice | Costante | Descrizione | Modificabile |
|---|---|---|---|
| N | k-lo-com-solo-presc | Solo prescrizione (non ancora commessa) | ✅ |
| P | k-lo-com-prescr | Prescrizione registrata | ✅ |
| A | k-lo-com-aperta | Commessa aperta (da COGZ41) | ❌ |
| C | k-lo-com-chiusa | Commessa chiusa | ❌ |
| E | k-lo-com-evasa | Commessa evasa | ❌ |
| F | k-lo-com-lav-esterna | Presso fornitore esterno | ❌ |
| G | k-lo-com-boll-anticipato | Bollettino anticipato | ❌ |
| U | k-lo-com-prova | Sospesa per controllo utente | ❌ |
| R | k-lo-com-rientro | Rientro da controllo | ❌ |
Nota: Stati A-E-F-G-U-R rendono la prescrizione non modificabile (solo consultazione).
3. Funzionalità principali¶
3.1 Inserimento nuova prescrizione¶
Flusso:
- Selezione studio medico (tm-cli):
- Lookup su
COGGEANAtipo "C" (clienti) -
Caricamento dati studio (indirizzo, contatti)
-
Identificazione paziente (tm-paziente):
- Codice alfanumerico max 25 caratteri
-
Se configurato, attribuzione automatica (
tm-cfg-attrib-auto-paz) -
Assegnazione numero (tm-num):
- Se
tm-cfg-num-aut = "S": numerazione automatica progressiva -
Altrimenti: inserimento manuale
-
Compilazione dati:
- Medico prescrittore (lookup su anagrafica medici)
- Date entrata/consegna
- Importo preventivo
- Dati paziente (nome, telefono, indirizzo, età)
-
Agente/distributore
-
Salvataggio:
- WRITE su
LODPRESC - Logging operazione (se
tm-cfg-log = "S")
3.2 Modifica prescrizione esistente¶
Validazioni:
- ✅ Prescrizione deve esistere
- ✅ Stato deve essere "N" o "P" (no commesse aperte)
- ✅ Se
tm-cfg-mod-consegna-se-chiusa = "N": blocco modifica se chiusa
Campi modificabili:
- Tutti i campi della prescrizione
- Date entrata/consegna
- Importo preventivo
- Agente/distributore
- Note e allegati
Non modificabile:
- Chiave prescrizione (studio/paziente/progressivo)
- Numero commessa collegata (se esiste)
3.3 Cancellazione prescrizione¶
Condizioni:
- ❌ Blocco assoluto se esiste commessa collegata (
tm-com-4otm-com-5valorizzati) - ❌ Blocco se stato diverso da "N" o "P"
- ✅ Conferma obbligatoria dall'operatore
Operazioni:
- Verifica assenza commessa
- Conferma utente
- DELETE record
LODPRESC - Logging cancellazione
3.4 Consultazione prescrizione¶
Modalità:
- Diretta: inserimento codice studio/paziente/progressivo
- Ricerca avanzata (F9): filtri multipli su vari campi
- Da chiamata esterna: parametro
w-dc-called = "S"con chiave preimpostata
Informazioni visualizzate:
- Tutti i dati della prescrizione
- Eventuale commessa collegata (numero e stato)
- Allegati/immagini disponibili
- Note (interne, particolari, medico, lavoro)
4. Pulsanti funzione¶
Tabella pulsanti (15 pulsanti custom)¶
| Tasto | Codice | Bitmap | Funzione | Programma | Descrizione |
|---|---|---|---|---|---|
| F1 | k-f1-note-interne (02) | 29 | Note interne | - | Inserimento note uso interno laboratorio |
| F2 | k-f2-note-particol (03) | 30 | Note particolari | - | Note specifiche per la lavorazione |
| F5 | k-f5-commessa (01) | 5 | Commessa | COGZ41/COGZD1 | Crea commessa da prescrizione |
| F5 | k-f5-stampa-etic (04) | 31 | Stampa etichette | - | Stampa etichette prescrizione |
| F6 | k-f6-materiale-cons (07) | 34 | Materiale consegnato | - | Materiali consegnati al paziente |
| F6 | k-f6-bollettino (12) | 62 | Numero bollettino | - | Associa numero bollettino CCP |
| F6 | k-f6-preventivi (14) | 8 | Preventivi | COGZ43 | Gestione preventivo economico |
| F7 | k-f7-archivia-imm (08) | 35 | Archivia immagine | COGU06 | Archiviazione/visualizzazione immagini |
| F9 | k-f9-note-lavoro (10) | 37 | Note lavoro | COGZDEW | Note di lavorazione estese |
| F10 | k-f10-bollettini (13) | 64 | Gestione bollettini | COGS65W | Gestione completa bollettini CCP |
| Shift+F1 | k-sf1-nuovo-fascicolo (11) | 38 | Nuovo fascicolo | COGZ51 | Crea fascicolo tecnico paziente |
| Shift+F4 | k-sf4-fascicolo-tec (15) | - | Fascicolo tecnico | COGZ51 | Apre fascicolo esistente |
| Shift+F6 | k-sf6-medici (05) | 32 | Medici | COGZA7 | Anagrafica medici prescrittori |
| Shift+F7 | k-sf7-note-medico (06) | 33 | Note medico | COGZDEW | Istruzioni dal medico |
| Shift+F8 | k-sf8-gest-impegno (09) | 36 | Gestione impegno | - | Pianificazione impegni su commessa |
Bitmap utilizzate:
- File
labodonto(handle 1): bitmap 5, 8, 29-38, 62, 64 - File
labodonto2(handle 2): (se presenti)
5. Flusso operativo¶
5.1 Inizializzazione¶
AVVIO COGZ40
│
├─ Caricamento configurazioni (COGTABEL tipo 70)
├─ Verifica modalità chiamata (diretta / da COGZ07 / parametrica)
├─ Creazione 15 pulsanti custom
├─ Impostazione tasti funzione (F1, F3, F4, F8, F9)
│
└─ Se chiamato con parametri (w-dc-called="S")
└─ Posizionamento diretto su prescrizione
5.2 Ciclo principale CRUD¶
┌─────────────────────────────────────────────────────────────────┐
│ CICLO ACCEPT MASCHERA │
└─────────────┬───────────────────────────────────────────────────┘
│
├─[CAMPO tm-cli] Studio medico
│ ├─ Lookup COGGEANA tipo "C"
│ ├─ Validazione esistenza
│ └─ Caricamento indirizzo/contatti
│
├─[CAMPO tm-paziente] Codice paziente
│ ├─ Se vuoto + cfg auto: genera codice
│ └─ Lunghezza max 25 caratteri
│
├─[CAMPO tm-pro] Progressivo
│ ├─ Se vuoto + cfg auto: next progressivo
│ ├─ Altrimenti: inserimento manuale
│ └─ Lookup prescrizione esistente
│
├─[CAMPO tm-num] Numero prescrizione
│ ├─ Se cfg num-aut="S": auto da contatore
│ └─ Altrimenti: manuale
│
├─[CAMPO tm-dottore] Medico prescrittore
│ ├─ Ricerca su COGGEANA / COGMODST
│ └─ Popolamento tm-prescrittore
│
├─[CAMPO tm-age-cod] Agente
│ ├─ Lookup COGTABEL tipo 21 (agenti)
│ └─ Multi-agente se configurato
│
├─[CAMPO tm-dist-cod] Distributore
│ └─ Lookup COGGEANA tipo distributori
│
├─[CAMPO tm-data-*] Date
│ ├─ Validazioni formato AAAAMMGG
│ ├─ CALL DTPRG / PRGDT (conversione giuliano)
│ └─ Controllo coerenza date
│
└─[CAMPO tm-imp-preventivo] Importo
├─ Formato 9(12)V999999
└─ Validazione divisa
5.3 Gestione tasti funzione¶
┌─ F3 (Conferma/Aggiorna) ──────────────────────────────────────┐
│ │ │
│ ├─ [INSERIMENTO] tm-pro non esiste │
│ │ ├─ Validazione campi obbligatori │
│ │ ├─ WRITE LODPRESC │
│ │ ├─ Logging (se abilitato) │
│ │ └─ Messaggio "Inserimento effettuato" │
│ │ │
│ └─ [MODIFICA] tm-pro esiste │
│ ├─ Verifica stato modificabile (N/P) │
│ ├─ Controllo assenza commessa collegata │
│ ├─ REWRITE LODPRESC │
│ └─ Logging (se abilitato) │
└───────────────────────────────────────────────────────────────┘
┌─ F4 (Cancella) ───────────────────────────────────────────────┐
│ │ │
│ ├─ Validazione esistenza prescrizione │
│ ├─ Verifica assenza commessa (tm-com-4/5 = 0) │
│ ├─ Conferma operatore │
│ ├─ DELETE LODPRESC │
│ └─ Messaggio "Cancellazione effettuata" │
└───────────────────────────────────────────────────────────────┘
┌─ F5 (Commessa) ───────────────────────────────────────────────┐
│ │ │
│ ├─ Verifica prescrizione salvata │
│ ├─ Controllo stato = N o P │
│ ├─ CALL COGZ41 o COGZD1 (preparazione commessa) │
│ │ └─ Passa chiave prescrizione │
│ ├─ Ritorno: aggiornamento tm-com-4/5 se creata │
│ └─ Refresh maschera │
└───────────────────────────────────────────────────────────────┘
┌─ F7 (Archivia immagine) ──────────────────────────────────────┐
│ │ │
│ ├─ CALL COGU06 (gestione allegati) │
│ │ ├─ Modalità: A=Archivia, V=Visualizza │
│ │ ├─ Tipo documento: LP (Prescrizione Lab.) │
│ │ └─ Chiave: studio+paziente+progressivo │
│ ├─ Aggiornamento tm-fl-image se allegati presenti │
│ └─ Path archiviazione da tm-cfg-path-archiviazione-auto │
└───────────────────────────────────────────────────────────────┘
┌─ F9 (Ricerca avanzata) ───────────────────────────────────────┐
│ │ │
│ ├─ Apertura popup ricerca │
│ ├─ Filtri disponibili: │
│ │ ├─ Studio medico │
│ │ ├─ Paziente (parziale) │
│ │ ├─ Numero prescrizione │
│ │ ├─ Range date entrata/consegna │
│ │ ├─ Stato │
│ │ └─ Agente/Distributore │
│ ├─ Esecuzione query su LODPRESC │
│ ├─ Selezione da lista risultati │
│ └─ Caricamento prescrizione selezionata │
└───────────────────────────────────────────────────────────────┘
6. File principali¶
6.1 File generali¶
| File | Prefisso | Descrizione | Accesso |
|---|---|---|---|
| FEURTAB | - | Tabelle file gestionali | R |
| COGTABEL | euta- | Tabelle configurazione | R |
| COGGEANA | ana- | Anagrafica generale (studi, medici, pazienti) | R/W |
| COGTESBO | tes- | Testate bolle/documenti | R |
| COGAPPOG | app- | Appoggio temporaneo | R/W |
| COGTESCM | tsc- | Testate commesse generali | R |
| COGRACBB | rbb- | Raccordi buoni/bollettini | R/W |
| COGDESCR | des- | Descrizioni variabili (multilingua) | R |
| COGRIFER | rif- | Riferimenti esterni | R/W |
| COGDESTI | dst- | Destinazioni uso | R |
| COGANAPP | anp- | Anagrafica appoggio | R |
| COGANAAG | anag- | Anagrafica agenti | R |
| COGMODST | mod- | Modelli standard | R |
| COGMOADG | moadg- | Modelli agenti | R |
| PRNTOPER | ptop- | Operatori sistema | R |
| LOGFILE | - | Log operazioni | W |
6.2 File laboratorio odontotecnico (LOD*)¶
| File | Prefisso | Descrizione | Accesso | Chiave |
|---|---|---|---|---|
| LODTABEL | lt*- | Tabelle configurazione laboratorio | R | tipo+codice |
| LODDESCR | - | Descrizioni laboratorio | R | - |
| LODRACCO | - | Raccordi | R/W | - |
| LODPNTES | lpt- | Piani di lavoro (testa) | R | numero piano |
| LODPNRIG | lpr- | Piani di lavoro (righe) | R | piano+riga |
| LODPRESC | lpm- | Prescrizioni mediche (file principale) | R/W/D | studio+paziente+numero |
| LODCMTES | lct- | Commesse laboratorio (testa) | R | numero commessa |
| LODCMRIG | lcr- | Commesse laboratorio (righe) | R | commessa+riga |
| LODFASCI | lfc- | Fascicoli tecnici pazienti | R/W | studio+paziente+numero |
| LODPFSTD | pfs- | Piani fabbricazione standard | R | codice |
| LODCMAGG | cma- | Commesse aggiuntive | R | - |
| LODBOLCL | lbc- | Bollettini clienti/CCP | R/W | numero |
| LODINFCC | icc- | Informazioni commesse clinica | R/W | - |
| LODCMAG2 | - | Commesse magazzino 2 | R/W | - |
| LODTABDU | - | Tabelle dati utente | R | - |
| LODMODST | - | Modelli standard laboratorio | R | - |
| LODRMSTD | - | Righe modelli standard | R | - |
| LODTMDES | - | Temporaneo descrizioni | R/W | temporaneo |
Relazioni principali:
COGGEANA (studio medico tipo "C")
├── 1:N ─> LODPRESC (prescrizioni per studio)
│ ├── chiave: studio+paziente+progressivo
│ └── 1:1 ─> LODCMTES (commessa generata)
│ └── numero in lpm-num-com
└── 1:N ─> LODFASCI (fascicoli tecnici pazienti)
LODPRESC
├── 0:N ─> LODBOLCL (bollettini CCP)
├── 0:N ─> Allegati/immagini (COGU06)
└── 0:N ─> Note (COGZDEW)
7. Programmi chiamati¶
7.1 Programmi laboratorio (COGZ*)¶
| Programma | Funzione | Quando viene chiamato |
|---|---|---|
| COGZ0A | Gestione azzera prescrizione | Utility azzeramento dati (util-cogz0a) |
| COGZ13 | Gestione elementi dentali | Gestione elementi dentali per prescrizione |
| COGZ41 | Preparazione commessa standard | F5, creazione commessa da prescrizione |
| COGZ43 | Gestione preventivo | F6, elaborazione preventivo economico |
| COGZ51 | Fascicolo tecnico | Shift+F1/Shift+F4, gestione fascicolo paziente |
| COGZ53 | Gestione bollettini | F10, gestione bollettini CCP |
| COGZ71 | Gestione progressivi | Attribuzione numero progressivo prescrizione |
| COGZ85 | Gestione impegni | Shift+F8, pianificazione impegni |
| COGZ93 | Gestione rientro | Gestione rientro prescrizione (util-z93) |
| COGZA7 | Anagrafica medici | Shift+F6, lookup/gestione medici prescrittori |
| COGZAP | Gestione appoggio prescrizioni | Utility gestione appoggio (util-cogzap) |
| COGZC5 | Utility commesse 5 | Funzioni supporto commesse (util-cogzc5) |
| COGZC8 | Utility commesse 8 | Funzioni supporto commesse (util-cogzc8) |
| COGZCH | Utility check commesse | Controlli validazione commesse (util-cogzch) |
| COGZCF | Rapporti non conformità | Gestione NC su prescrizioni |
| COGZD1 | Preparazione commessa avanzata | Versione avanzata COGZ41 con ODONTO.CNF |
| COGZDEW | Note estese | F9/Shift+F7, gestione note lavoro/medico |
| COGZ1C | Gestione commesse 1C | Utility gestione commesse (util-cogz1c) |
7.2 Programmi generali¶
| Programma | Funzione | Utilizzo |
|---|---|---|
| COGU10W | Gestione commesse generica | Utility generale gestione (util-u10) |
| COGU06 | Gestione allegati/immagini | F7, archiviazione/visualizzazione documenti |
| COGU41 | Utility 41 | Funzioni di supporto (util-u41) |
| COGS52W | Gestione stringhe 52 | Manipolazione testi (util-s52) |
| COGS54 | Gestione stringhe 54 | Manipolazione testi (util-s54) |
| COGS65W | Gestione bollettini CCP | F10, gestione completa bollettini |
| COGS94W | Gestione stampe 94 | Stampe varie (util-s94) |
| COGS98W | Gestione commesse generica | Caricamento/validazione commesse (util-s98) |
| COGD88 | Gestione documenti 88 | Gestione documenti vari (util-d88) |
| COGF14 | Gestione finanziaria | Controlli amministrativi/finanziari |
| COGG32 | Gestione anagrafica 32 | Lookup anagrafica generale (util-g32) |
| COGV93 | Gestione V93 | Utility (util-cogv93) |
| COPIAF | Copia files | Copia/gestione file documenti |
| DIALOGS | Dialoghi GUI | Popup e dialoghi vari (util-dlg) |
| DTPRG | Data → Progressivo giuliano | Conversione data calendario ↔ giuliano |
| PRGDT | Progressivo giuliano → Data | Conversione giuliano ↔ calendario |
| RNEWCONF | Lettura nuova configurazione | Ricarica configurazioni runtime (util-ncnf) |
8. Configurazioni¶
8.1 Configurazioni COGTABEL tipo 70¶
Il programma legge configurazioni specifiche laboratorio da COGTABEL tipo 70, argomento configurazione laboratorio.
Struttura configurazione (righe 148-176):
01 tm-cfg.
02 tm-cfg-tip-doc pic x(01). * Gestione tipi documento
02 tm-cfg-num-aut pic x(01). * Numerazione automatica S/N
02 tm-cfg-cnt-medico pic x(03). * Contatore numero medico
02 tm-cfg-log pic x(01). * Logging operazioni S/N
02 tm-cfg-z40-mostra-lavori pic x(01). * Mostra lavori in corso
02 tm-cfg-z40-avv-commessa pic x(01). * Avvia automaticamente commessa
02 tm-cfg-piu-agenti pic x(01). * Multi-agente S/N
02 tm-cfg-pagam-anticipato-cc pic x(01). * Pagamento anticipato CCP
02 tm-cfg-attrib-auto-paz pic x(01). * Attribuzione auto paziente
02 tm-cfg-auto-paz pic x(10). * Prefisso auto paziente
02 tm-cfg-cass-vis pic x(01). * Visualizza cassetta
02 tm-cfg-datanas-vis pic x(01). * Visualizza data nascita
02 tm-cfg-respons-vis pic x(01). * Visualizza responsabile
02 tm-cfg-ges-tipo-doc pic x(01). * Gestione tipo documento
02 tm-cfg-mod-com-doc pic x(01). * Modifica commessa/documento
02 tm-cfg-rientro pic x(01). * Gestione rientri
02 tm-cfg-gg-ant-chiusura pic 9(02)v9(01). * Giorni anticipo chiusura
02 tm-cfg-labod-impegni pic x(01). * Gestione impegni S/N
02 tm-cfg-gg-lav-in-prova pic 9(04)v9(01). * Giorni lavoro in prova
02 tm-cfg-vis-data-cons-effettiva pic x(01). * Visualizza data consegna effettiva
02 tm-cfg-mod-consegna-se-chiusa pic x(01). * Modifica consegna se chiusa
02 tm-cfg-mod-consegna-ultima-riga pic x(01). * Modifica consegna ultima riga
02 tm-cfg-fpa-rch-com pic x(01). * Flag PA richiede commessa
02 tm-cfg-abilita-ordine pic x(01). * Abilita ordinazione materiali
02 tm-cfg-path-archiviazione-auto pic x(80). * Path archiviazione automatica
02 tm-cfg-modo-gestione-allegati pic x(01). * Modalità gestione allegati
02 tm-cfg-modalita-prog pic x(01). * Modalità progressivo
02 tm-cfg-nr-commesse-per-data-cons pic 9(06). * Max commesse per data consegna
8.2 Parametri linkage¶
Chiamata da altri programmi (righe 191-197):
01 w-dati-called.
02 w-dc-called pic x(01). * "S" se chiamato
02 w-dc-cogz07 pic x(01). * "S" se chiamato da COGZ07
02 w-dc-prescrizione. * Chiave preimpostata:
03 w-dc-studio pic 9(05). * - Studio medico
03 w-dc-paziente pic x(25). * - Paziente
03 w-dc-pro pic 9(10). * - Progressivo
Uso:
- Se w-dc-called = "S": il programma si posiziona direttamente sulla prescrizione specificata
- Se w-dc-cogz07 = "S": chiamata da COGZ07, disabilita numerazione automatica
8.3 Logging operazioni¶
Se tm-cfg-log = "S", il programma registra su file LOGFILE:
- Inserimenti prescrizioni
- Modifiche prescrizioni
- Cancellazioni prescrizioni
- Operatore, data/ora, chiave record
9. Validazioni¶
9.1 Validazioni campi obbligatori¶
| Campo | Validazione | Messaggio errore |
|---|---|---|
tm-cli |
Deve esistere in COGGEANA tipo "C" | "Studio medico non esistente" |
tm-paziente |
Lunghezza <= 25, not spaces | "Codice paziente obbligatorio" |
tm-num |
Se num-aut="N": deve essere inserito | "Numero prescrizione obbligatorio" |
tm-data-ent |
Formato AAAAMMGG, data valida | "Data entrata non valida" |
tm-data-cns |
Formato AAAAMMGG, >= data-ent | "Data consegna non valida" |
9.2 Validazioni campi opzionali¶
| Campo | Validazione |
|---|---|
tm-age-cod |
Se valorizzato: deve esistere in COGTABEL tipo 21 |
tm-dist-cod |
Se valorizzato: deve esistere in COGGEANA |
tm-dottore-cod |
Se valorizzato: deve esistere in anagrafica medici |
tm-imp-preventivo |
Se valorizzato: deve essere >= 0 |
tm-ora-cns |
Formato HHMM, HH 00-23, MM 00-59 |
tm-data-nascita |
Se valorizzata: calcolo automatico tm-anni |
tm-telefono |
Formato libero max 25 caratteri |
9.3 Validazioni stato¶
Regole modificabilità:
if lpm-stato = "A" or "C" or "E" or "F" or "G" or "U" or "R"
move "N" to tm-modificabile
display "Prescrizione non modificabile (commessa già aperta/chiusa)"
else
move "S" to tm-modificabile
end-if
Regole cancellazione:
if lpm-num-com > 0 * Esiste commessa collegata
display "Impossibile cancellare: commessa già generata"
exit paragraph
end-if
9.4 Validazioni coerenza date¶
* Data consegna >= Data entrata
if tm-data-cns < tm-data-ent
display "Data consegna non può essere precedente a data entrata"
move 1 to campo-in-errore
end-if
* Data consegna effettiva >= Data entrata
if tm-data-cons-eff not = 0
if tm-data-cons-eff < tm-data-ent
display "Data consegna effettiva non valida"
end-if
end-if
9.5 Controlli automatici¶
Attribuzione automatica paziente (se tm-cfg-attrib-auto-paz = "S"):
if tm-paziente = spaces
string tm-cfg-auto-paz "-" progressivo-auto
delimited size into tm-paziente
end-if
Calcolo età paziente:
if tm-data-nascita not = 0
compute tm-anni = (datasis - tm-data-nascita) / 10000
* Arrotondamento a anni interi
end-if
Diagramma flusso completo¶
AVVIO COGZ40
│
├─ Caricamento configurazioni (COGTABEL tipo 70)
├─ Verifica modalità chiamata
│ ├─ w-dc-called="S" → posizionamento diretto
│ ├─ w-dc-cogz07="S" → disabilita num auto
│ └─ Altrimenti → modalità normale
├─ Creazione 15 pulsanti custom (labodonto/labodonto2)
├─ Impostazione tasti funzione
│
└─ CICLO PRINCIPALE
│
├─[INPUT tm-cli] Studio medico
│ ├─ Lookup COGGEANA tipo "C"
│ ├─ Validazione esistenza
│ └─ Caricamento dati studio
│
├─[INPUT tm-paziente] Codice paziente
│ ├─ Se vuoto + cfg auto → genera codice
│ └─ Validazione lunghezza max 25
│
├─[INPUT tm-pro] Progressivo
│ ├─ Se vuoto → nuovo inserimento
│ │ └─ Se num-aut="S" → next progressivo
│ └─ Se valorizzato → lookup LODPRESC
│ ├─ Se trovato → MODIFICA
│ │ ├─ Caricamento tutti i campi
│ │ ├─ Verifica stato modificabile (N/P)
│ │ └─ Blocco se commessa esistente
│ └─ Se non trovato → INSERIMENTO
│
├─[COMPILAZIONE CAMPI]
│ ├─ tm-num (numero prescrizione)
│ ├─ tm-dottore (medico) → lookup COGGEANA
│ ├─ tm-data-ent/cns (date)
│ ├─ tm-imp-preventivo (importo)
│ ├─ tm-age-cod (agente) → COGTABEL tipo 21
│ ├─ tm-dist-cod (distributore) → COGGEANA
│ ├─ tm-paz-esteso (nome paziente)
│ ├─ tm-data-nascita → calcolo tm-anni auto
│ ├─ tm-telefono, tm-paz-indi (contatti)
│ └─ Campi vari (cassetta, tipo doc, etc.)
│
├─[TASTI FUNZIONE]
│ ├─ F1 → Note interne
│ ├─ F2 → Note particolari
│ ├─ F3 → CONFERMA/AGGIORNA
│ │ ├─ Validazioni campi obbligatori
│ │ ├─ Se nuovo → WRITE LODPRESC
│ │ ├─ Se esistente → REWRITE LODPRESC
│ │ └─ Logging (se abilitato)
│ ├─ F4 → CANCELLA
│ │ ├─ Verifica assenza commessa
│ │ ├─ Conferma utente
│ │ └─ DELETE LODPRESC
│ ├─ F5 → Crea COMMESSA (CALL COGZ41/COGZD1)
│ ├─ F6 → Preventivo (COGZ43) / Bollettino / Materiale
│ ├─ F7 → Archivia immagine (COGU06)
│ ├─ F9 → Ricerca avanzata
│ ├─ F10 → Gestione bollettini (COGS65W)
│ ├─ S-F1 → Nuovo fascicolo (COGZ51)
│ ├─ S-F4 → Fascicolo tecnico (COGZ51)
│ ├─ S-F6 → Anagrafica medici (COGZA7)
│ ├─ S-F7 → Note medico (COGZDEW)
│ └─ S-F8 → Gestione impegno
│
└─[EVENTI SPECIALI]
├─ Cambio studio → clear paziente/progressivo
├─ Cambio paziente → clear progressivo
├─ Data nascita → ricalcolo età automatico
└─ Agente → verifica multi-agente cfg
Note implementative¶
Numerazione automatica¶
Meccanismo (se tm-cfg-num-aut = "S"):
1. Lettura ultimo numero da contatore (file COGTABEL o LODPRESC)
2. Incremento +1
3. Assegnazione a tm-num
4. Aggiornamento contatore
Formato numero: pic 9(10), max 9.999.999.999
Gestione allegati¶
Archiviazione automatica (se tm-cfg-path-archiviazione-auto valorizzato):
- Path base da configurazione
- Sottocartelle per anno/mese
- Nomenclatura file: LP_studio_paziente_progressivo_timestamp.ext
- Tipi supportati: PDF, JPG, PNG, TIFF, DOC, DOCX
Flag immagine:
- tm-fl-image = "S": almeno un allegato presente
- tm-fl-image = "N": nessun allegato
Multi-agente¶
Se tm-cfg-piu-agenti = "S":
- Possibilità di associare più agenti alla prescrizione
- Gestione percentuali provvigione per agente
- Ripartizione automatica importi
Integrazione commessa¶
Flusso creazione commessa (F5):
COGZ40 (Prescrizione)
│
├─ Salvataggio prescrizione (se modificata)
├─ CALL COGZ41 (preparazione standard)
│ │ O
│ └─ CALL COGZD1 (preparazione avanzata con ODONTO.CNF)
│ │
│ ├─ Copia dati prescrizione → commessa
│ ├─ Assegnazione piano fabbricazione
│ ├─ Creazione righe commessa (azioni)
│ ├─ Calcolo tempi e materiali
│ └─ WRITE LODCMTES + LODCMRIG
│
├─ Aggiornamento LODPRESC:
│ ├─ lpm-num-com = numero commessa generata
│ └─ lpm-stato = "A" (aperta)
│
└─ Refresh maschera
Documentato da: Claude (Anthropic) Data: 2026-03-03 Versione: 1.0