SELECT
DISTINCT P.CD_PACIENTE
, P.NM_PACIENTE
, DECODE (P.TP_SEXO, 'M', 'MASCULINO',
'F', 'FEMININO',
'I', 'INDEFINIDO') SEXO
, TRUNC(P.DT_NASCIMENTO) DT_NASCIMENTO
, (SELECT FN_IDADE (P.DT_NASCIMENTO, 'a A / m M / d D' ) FROM DUAL) IDADE_PACIENTE
, A.CD_ATENDIMENTO
, A.DT_ATENDIMENTO
, (SELECT FN_IDADE (A.DT_ATENDIMENTO, 'a A / m M / d D' ) FROM DUAL) DIAS_INTERNADO
, PE.CD_PRESTADOR --PRESTADOR DO ATENDIMENTO
, PE.NM_PRESTADOR
, L.CD_LEITO --LEITO DO PACIENTE
, L.DS_LEITO
, UI.CD_UNID_INT CD_UNIDADE_INTERNACAO--UNIDADE DE INTERNAÇÃO VINCULADA A INTERNAÇÃO
, UI.DS_UNID_INT UNIDADE_INTERNACAO
, (SELECT S.NM_SETOR FROM SETOR S WHERE UI.CD_SETOR = S.CD_SETOR) AS SETOR_UNIDADE_INTERNACAO --SETOR DA UNIDADE DE INTERNAÇÃO
, E.CD_ESPECIALID CD_ESPEC_ATENDIMENTO--ESPECIALIDADE VINCULADA AO MÉDICO PRESTADOR DO ATENDIMENTO
, E.DS_ESPECIALID ESPEC_ATENDIMENTO
, (CASE WHEN UI.CD_UNID_INT = 63 AND E.CD_ESPECIALID IN (64, 60, 82) THEN 1 ELSE 0 END) STATUS
FROM LEITO L
JOIN ATENDIME A ON A.CD_LEITO = L.CD_LEITO
JOIN UNID_INT UI ON UI.CD_UNID_INT = L.CD_UNID_INT
JOIN SETOR S ON S.CD_SETOR = UI.CD_SETOR
JOIN PACIENTE P ON P.CD_PACIENTE = A.CD_PACIENTE
JOIN ESP_MED EM ON EM.CD_PRESTADOR = A.CD_PRESTADOR --ESPECIALIDADE DO ATENDIMENTO
JOIN ESPECIALID E ON E.CD_ESPECIALID = A.CD_ESPECIALID --SE COLOCAR P.CD_PRESTADOR IRÁ RETORNAR MAIS RESULTADOS, POIS UM PRESTADOR PODE TER MAIS DE UMA ESPECIALIDADE.
JOIN PRESTADOR PE ON PE.CD_PRESTADOR = A.CD_PRESTADOR
WHERE A.TP_ATENDIMENTO = 'I'
AND A.CD_MOT_ALT IS NULL
I would like to know if I can instead of this operation in the case: UI.CD_UNID_INT = 63 OR E.CD_ESPECIALID IN (64, 60, 82)
Replace it with some select with join so I do not plaster the entire code and have it changed that specialty or sector have to change the code?
Instead of doing this: (CASE WHEN (UI.CD_UNID_INT = 63 AND E.CD_ESPECIALID IN (64, 60, 82)) OR (UI.CD_UNID_INT = 64 AND E.CD_ESPECIALID IN (800, 652, 802) ) OR (UI.CD_UNID_INT = 68 AND E.CD_ESPECIALID IN (800, 652, 802)) THEN 1 ELSE 0 END) STATUS