DECLARE WAPT_ID NUMBER; NUM_PRO NUMBER; ETA_CALC NUMBER; NUM NUMBER; WTR_PROTOCOLLO NUMBER; WCOD_REG VARCHAR2(6); WFORZ VARCHAR2(3); WCOM_DOM VARCHAR2(30); WIND_DOM VARCHAR2(30); WCIV_MOD VARCHAR2(9); WTEL_DOM VARCHAR2(10); WCODICESTP VARCHAR2(16); WDATA_STP VARCHAR2(10); WDIS_STP VARCHAR2(3); WANONIMO VARCHAR2(1); WRESULT VARCHAR2(600); WTERM_NAME VARCHAR2(200); WNUMERICO NUMBER; -- WAPT_ID NUMBER; FLAG_ERRORE NUMBER; BEGIN CONTROLLO_CAMPI; ------------------------------------------------------------------------------------------------------------ ---- PREPARAZIONE DATI ANAGRAFE-EXTRA ---------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------ WCOD_REG:=' '; WFORZ:='N'; WCOM_DOM:= NULL; WIND_DOM:= NULL; WCIV_MOD:= NULL; WTEL_DOM:= NULL; WCODICESTP:= NULL; WDATA_STP:= NULL; WDIS_STP:= NULL; WANONIMO:= 'N'; FLAG_ERRORE := 0; WRESULT := sanita.ins_assistito@anagrafe_insass(:ANAGRAFE_PT.APT_COG,:ANAGRAFE_PT.APT_NOME,TO_CHAR(:ANAGRAFE_PT.APT_DATANASCITA,'DDMMYYYY'),'F',:ANAGRAFE_PT.APT_CF,WFORZ,WCOD_REG,:ANAGRAFE_PT.APT_COM_NASC, :ANAGRAFE_PT.APT_CITTA,:ANAGRAFE_PT.APT_VIA,:ANAGRAFE_PT.APT_CIV,:ANAGRAFE_PT.APT_TELEFONO,WCOM_DOM,WIND_DOM,WCIV_MOD, WTEL_DOM,:ANAGRAFE_PT.APT_CITTADINANZA,:ANAGRAFE_PT.APT_STATO_CIVILE,WANONIMO,WCODICESTP,WDATA_STP,WDIS_STP,:CG$UTENTE,:CG$UTENTE,'SCR'); BEGIN WNUMERICO := TO_NUMBER(SUBSTR(WRESULT,2,1)); if wnumerico = 0 then wnumerico:='A'; end if; SET_ALERT_PROPERTY('CFG_INFORMATION',alert_message_text,'Il progressivo anagrafico e'' : '||WRESULT); IF SHOW_ALERT('CFG_INFORMATION') = Alert_button1 then :ANAGRAFE_PT.ANA_ID:=WRESULT; END IF; EXCEPTION WHEN OTHERS THEN IF substr(WRESULT,9,28) <> 'ANAGRAFICA DUPLICATA' AND SUBSTR(WRESULT,9,33) <> 'CODICE FISCALE DUPLICATO' AND SUBSTR(WRESULT,9,33) <> 'Codice Fiscale esistente' AND (:ANAGRAFE_PT.APT_ID IS NOT NULL AND SUBSTR(WRESULT,9,28) <> 'UTENTE NON ABILITATO') THEN SET_ALERT_PROPERTY('CFG_ERROR',alert_message_text,WRESULT); IF SHOW_ALERT('CFG_ERROR') = Alert_button1 then FLAG_ERRORE := 1; RAISE FORM_TRIGGER_FAILURE; END IF; END IF; END; ------------------------------------------------------------------------------------------------------- -- PRENDIAMO APT_ID ------------------------------------------------------------------------------------------------------- IF :ANAGRAFE_PT.APT_ID IS NULL THEN BEGIN WAPT_ID := NULL; SELECT MAX(APT_ID) INTO WAPT_ID FROM ANAGRAFE_PT; IF WAPT_ID IS NULL THEN WAPT_ID := 1; ELSE WAPT_ID := WAPT_ID + 1; END IF; EXCEPTION WHEN OTHERS THEN WAPT_ID := 1; END; :ANAGRAFE_PT.APT_ID := WAPT_ID; END IF; ------------------------------------------------------------------------------------------------------- -- L'ANNO LO PRENDIAMO DALLA DATA DI SISTEMA ------------------------------------------------------------------------------------------------------- SELECT TO_CHAR(SYSDATE,'YYYY') INTO :ANAGRAFE.ANNO FROM DUAL; ------------------------------------------------------------------------------------------------------- -- DETERMINO IL NUMERO DI PROTOCOLLO ------------------------------------------------------------------------------------------------------- BEGIN NUM_PRO := NULL; SELECT MAX(TR_PROTOCOLLO) INTO NUM_PRO FROM STATO_PT WHERE SUBSTR(TR_PROTOCOLLO,1,4) = :ANNO ; IF NUM_PRO IS NULL THEN NUM_PRO := :ANNO||'1'; ELSE NUM_PRO := SUBSTR(NUM_PRO,1,4)||TO_CHAR(SUBSTR(NUM_PRO,5,20)+1); END IF; EXCEPTION WHEN OTHERS THEN NUM_PRO := :ANNO||'1'; END; ---------------------------------------------------------------- -- CREA UN NUOVO RECORD SU STATO_PT CON IL PROTOCOLLO SE E' UN PRIMO INSERIMENTO -- OPPURE AGGIORNA SOLO IL PROTOCOLLO SE ERA UNA VECCHIA PAZIENTE ---------------------------------------------------------------- BEGIN IF :PARAMETER.WAPT_ID IS NULL THEN :PARAMETER.WAPT_ID := :ANAGRAFE_PT.APT_ID; END IF; SELECT APT_ID INTO WAPT_ID FROM ANAGRAFE_PT WHERE APT_ID = :PARAMETER.WAPT_ID; UPDATE STATO_PT SET PT_ANNO = :ANNO,FLAG = 'I', PT_PRENOTATO = '0',PT_TARGET = '0', PT_VIVO = '1', TR_PROTOCOLLO = NUM_PRO WHERE APT_ID = :PARAMETER.WAPT_ID; EXCEPTION WHEN OTHERS THEN BEGIN INSERT INTO STATO_PT (APT_ID,PT_ANNO,FLAG,PT_PRENOTATO,PT_TARGET, PT_VIVO,TR_PROTOCOLLO,ANA_ID) VALUES (:ANAGRAFE_PT.APT_ID,:ANNO,'I','0','0', '1',NUM_PRO,WRESULT ); EXCEPTION WHEN OTHERS THEN SET_ALERT_PROPERTY('CFG_ERROR',alert_message_text,'ERRORE : '||DBMS_ERROR_TEXT||' CONTATTARE IL FORNITORE'); IF SHOW_ALERT('CFG_ERROR') = Alert_button1 then FLAG_ERRORE := 1; RAISE FORM_TRIGGER_FAILURE; END IF; END; END; :parameter.wcommit:='1'; IF FLAG_ERRORE = 0 THEN EXECUTE_TRIGGER('KEY-COMMIT'); END IF; :PARAMETER.WTICKET := 1; SET_ITEM_PROPERTY('PRELIEVO_NUOVO',ENABLED,PROPERTY_ON); SET_ITEM_PROPERTY('PRELIEVO_NUOVO',NAVIGABLE,PROPERTY_ON); GO_ITEM('PRELIEVO_NUOVO'); END;