Académique Documents
Professionnel Documents
Culture Documents
--
===================================================================================
=========================================
-- HISTORIAL DE MODIFICACIONES
--
===================================================================================
=========================================
-- Fecha Autor Descripcion
--
===================================================================================
=========================================
-- 12/07/2018 Fabián Alveiro Burbano Robles Se ajusta que
la bandera editable sea actualizada cuando el
--
el valor ACTIVA venga en 1, esta accion se hara solo con la
--
combinacion de roles si_contratacion_niv3 y
si_contratacion_niv4.
--
-----------------------------------------------------------------------------------
-----------------------------------------
--
===================================================================================
=========================================
-- ----------- --------- ----------------------------------------------------
-- PROCEDIMIENTO ALMACENADO SP_CREAR_MEDICAMENTO
-- ----------- --------- ----------------------------------------------------
PROCEDURE SP_CREAR_MEDICAMENTO(
VAR_LABORATORIO IN PAR_LABORATORIO_MEDICAMENTO.DESCRIPCION_LABORATORIO%TYPE
, VAR_ATC IN PAR_ATC.CODIGO_ATC%TYPE
, VAR_CODIGO_MEDICAMENTO IN PAR_APIS.CODIGO_APIS%TYPE
, VAR_DESCRIPCION_MEDICAMENTO IN PAR_APIS.DESCRIPCION_APIS%TYPE
, VAR_PRESENTACION_MEDICAMENTO IN PAR_APIS.DESCRIPCION_APIS%TYPE
, VAR_FECHA_VENCIMIENTO IN VARCHAR2
, VAR_REGISTRO_SANITARIO IN PAR_MEDICAMENTO_DETALLE.REGISTRO_INVIMA%TYPE
, VAR_CODIGO_USUARIO IN PAR_APIS.COD_USER%TYPE
, VAR_NO_POSS IN PAR_APIS.NO_POSS%TYPE
, VAR_ACTIVA IN PAR_APIS.ACTIVA%TYPE
, VAR_CONTROL IN NUMBER
, VAR_ACLARACION_CONDICIONADA IN VARCHAR2
, LIST_PRINCMEDDETALLE IN PAR_PRINC_MED_TABLE
, VAR_RESPUESTA OUT NUMBER
) AS
-----------------------------------------------------------------------------------
--------------------
------------ DECLARACIÓN DEL CURSOR CSR_CODIGOS_MEDICAMENTOS
------------
-----------------------------------------------------------------------------------
--------------------
CURSOR CSR_CODIGO_MEDICAMENTO(VAR_CODIGO_MEDICAMENTO PAR_APIS.CODIGO_APIS
%TYPE) IS
SELECT CODIGO_APIS FROM PAR_APIS WHERE CODIGO_APIS =
VAR_CODIGO_MEDICAMENTO;
-----------------------------------------------------------------------------------
--------------------
------------ DECLARACIÓN DEL CURSOR CSR_ATC
------------
-----------------------------------------------------------------------------------
--------------------
CURSOR CSR_ATC(VAR_ATC PAR_ATC.CODIGO_ATC%TYPE) IS
SELECT CODIGO_ATC FROM PAR_ATC WHERE CODIGO_ATC = VAR_ATC;
-----------------------------------------------------------------------------------
--------------------
------------ DECLARACIÓN DEL CURSOR CSR_LABORATORIO
------------
-----------------------------------------------------------------------------------
--------------------
CURSOR CSR_LABORATORIO(VAR_LABORATORIO
PAR_LABORATORIO_MEDICAMENTO.DESCRIPCION_LABORATORIO%TYPE) IS
SELECT DESCRIPCION_LABORATORIO FROM PAR_LABORATORIO_MEDICAMENTO WHERE
DESCRIPCION_LABORATORIO = VAR_LABORATORIO;
--------------------------------------------------
--- VARIABLES USADAS PARA CONTROLAR EL FOR ---
--------------------------------------------------
LABORATORIO NUMBER:=0;
CODIGO_A_T_C NUMBER:=0;
CODIGO_MEDICAMENTO NUMBER:=0;
ID_LABORATORIO_MEDICAMENTO NUMBER:=0;
ID_APIS_ NUMBER:=0;
ID_MEDICAMENTO_DETALLE NUMBER:=0;
IDATC NUMBER:=0;
nContPrincActivo NUMBER:=0;
nIdMedicamentoDetalle NUMBER:=0;
BEGIN
FOR LAB IN CSR_LABORATORIO(VAR_LABORATORIO) LOOP
LABORATORIO := 1;
END LOOP;
IF VAR_CONTROL = 1 THEN
BEGIN
UPDATE PAR_APIS
SET DESCRIPCION_APIS = VAR_DESCRIPCION_MEDICAMENTO,
NO_POSS = VAR_NO_POSS,
ACTIVA = VAR_ACTIVA,
EDITABLE = case when VAR_ACTIVA = 1 OR (SELECT EDITABLE FROM
PAR_APIS WHERE codigo_apis = VAR_CODIGO_MEDICAMENTO) = 1 THEN 1 ELSE 0 END,
ACLARACION_CONDICIONADA = VAR_ACLARACION_CONDICIONADA,
COD_USER = VAR_CODIGO_USUARIO,
VISIBLE_IPS = 1
WHERE CODIGO_APIS = VAR_CODIGO_MEDICAMENTO;
INSERT INTO
PAR_PRINC_ACT_MED_DETALLE(ID_PRINCIPIO_ACTIVO,ID_MEDICAMENTO_DETALLE,ID_UNIDAD_MEDI
CAMENTO,CANTIDAD)
VALUES(LIST_PRINCMEDDETALLE(i).nIdPrincipioActivo,nIdMedicamentoDetalle,LIST_PRINCM
EDDETALLE(i).nIdUnidadMedicamento,REPLACE(LIST_PRINCMEDDETALLE(i).nCantidad,'.',','
));
END LOOP;
INSERT INTO
PAR_PRINC_ACT_MED_DETALLE(ID_PRINCIPIO_ACTIVO,ID_MEDICAMENTO_DETALLE,ID_UNIDAD_MEDI
CAMENTO,CANTIDAD)
VALUES(LIST_PRINCMEDDETALLE(i).nIdPrincipioActivo,nIdMedicamentoDetalle,LIST_PRINCM
EDDETALLE(i).nIdUnidadMedicamento,REPLACE(LIST_PRINCMEDDETALLE(i).nCantidad,'.',','
));
END LOOP;
END IF;
VAR_RESPUESTA := 5;
END;
-- SI LABORATORIO = 0, QUIERE DECIR QUE EL LABORATORIO NO EXISTE POR LO TANTO
EL MEDICAMENTONO NO SE CREA --
ELSIF LABORATORIO = 0 THEN
VAR_RESPUESTA := 1;
ELSE
BEGIN
REQUIERE_ESPECIALIDAD,ID_APIS_CUPS_OLD,BILATERAL,ID_GRUPO_QX_SOAT,INCRUENTO,ID_HONO
RARIO,COSTOSA,NO_POSS,PROCEDIMIENTO_QX,
ESTANCIA,MIGRACION,UVR,ID_CUPS_TEMP,COD_USER,NO_POSS_BK,ACTIVA,FECHA_INACTIVA,
VISIBLE_IPS, ACLARACION_CONDICIONADA)
VALUES
(S_PAR_APIS.NEXTVAL,'5','32979',VAR_CODIGO_MEDICAMENTO,VAR_DESCRIPCION_MEDICAMENTO,
'0','0',null,'0',null,'0',null,'0',null,'0',VAR_NO_POSS,'0','0','100',null,null,VAR
_CODIGO_USUARIO,'1',VAR_ACTIVA,null,1,VAR_ACLARACION_CONDICIONADA);
VALUES(LIST_PRINCMEDDETALLE(i).nIdPrincipioActivo,S_PAR_MEDICAMENTO_DETALLE.CURRVAL
,LIST_PRINCMEDDETALLE(i).nIdUnidadMedicamento,REPLACE(LIST_PRINCMEDDETALLE(i).nCant
idad,'.',','));
END LOOP;
VAR_RESPUESTA := 4;
END;
END IF;
COMMIT;
END SP_CREAR_MEDICAMENTO;
-----------------------------------------------------------------------------------
-----------
---------------------------------------------------------------------
--- VARIABLES USADAS PARA CONTROLAR EL FOR ---
---------------------------------------------------------------------
TFECHA_INICIAL NUMBER := -1;
TFECHA_FINAL NUMBER := -1;
CONTADOR NUMBER := 0;
NUMFEC_INGRESO NUMBER := 0;
BEGIN
IF NRESPUESTA = 0 THEN
TFECHA_INICIAL := TFECHA_FINAL;
ELSIF NRESPUESTA = 1 THEN
EXIT;
END IF;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('ERROR INESPERADO:::: ');
COMMIT;
END SP_CONSULTA_NO_POSS;
-----------------------------------------------------------------------------------
--------
-- FECHA ACTUALIZACIÓN: 16-04-2018
-- AUTOR : Jaime Herney Meneses Ruiz
-- ACTUALIZACIÓN : Se realiza la modificación para traer el campo EDITABLE
de PAR_APIS
-- ========== ========== ====================================================
OPEN cTecnologia
FOR SELECT PA.CODIGO_APIS, PATC.CODIGO_ATC, PLM.DESCRIPCION_LABORATORIO,
PMD.PRESENTACION_MEDICAMENTO,
PA.DESCRIPCION_APIS, PMD.REGISTRO_INVIMA,
PA.ACLARACION_CONDICIONADA, PMD.FECHA_VENCIMIENTO,
PA.NO_POSS, PA.ACTIVA, PA.EDITABLE
FROM PAR_APIS PA
LEFT JOIN PAR_MEDICAMENTO_DETALLE PMD ON PMD.ID_APIS = PA.ID_APIS
LEFT JOIN PAR_ATC_DETALLE_MEDICAMENTO PADM ON PADM.ID_MEDICAMENTO_DETALLE =
PMD.ID_MEDICAMENTO_DETALLE
LEFT JOIN PAR_ATC PATC ON PATC.ID_ATC = PADM.ID_ATC
LEFT JOIN PAR_LABORATORIO_MEDICAMENTO PLM ON PLM.ID_LABORATORIO_MEDICAMENTO
= PMD.ID_LABORATORIO_MEDICAMENTO
WHERE CODIGO_APIS = vCodigoApis
AND PA.ID_CODIFICADOR = 5;
vError := 0;
vMensaje := 'Consulta éxitosa';
EXCEPTION
verror := '-2';
vmensaje := 'La consulta no arrojo datos';
verror := '-3';
vmensaje := ('Error no controlado' || SQLERRM);
END SP_BUSCAR_MEDICAMENTO;
END PKG_PAR_APIS;