SELECT w.nr_atendimento, w.nm_pessoa_fisica, w.ie_triagem, w.ie_consulta, w.ie_medicacao, w.ie_laboratorio, w.ie_imagem, case when ((w.ie_medicacao = 'Não Solicitado' or w.ie_medicacao = 'Medicação Liberada') and (w.ie_laboratorio = 'Não Solicitado' or w.ie_laboratorio = 'Laudo Liberado') and (w.ie_imagem = 'Não Solicitado' or w.ie_imagem = 'Laudo Liberado') and w.ie_consulta = 'Atendido' and w.ie_desfecho is null) then 'Dirija-se ao Consultório' when w.ie_desfecho = 'A' then 'Alta do Pronto Socorro' when w.ie_desfecho = 'I' then 'Alta para Internação' when w.ie_desfecho = 'T' then 'Alta para transferência' else 'Pendente' end ie_alta FROM (select ap.nr_atendimento, nvl(pf.nm_social, pf.nm_pessoa_fisica) nm_pessoa_fisica, ap.dt_alta, aa.ie_desfecho, /* FASE TRIAGEM */ case when (tpa.dt_fim_triagem is null and local_triagem.ds_local_curto is not null) then local_triagem.ds_local_curto || ' Chamando' when (tpa.dt_fim_triagem is not null and tpa.dt_fim_triagem is not null) then 'Triagem Realizada' else 'Aguardando Triagem' end ie_triagem, /* FASE MÉDICO */ case when (ap.dt_atend_medico is null and local_medico.ds_local_curto is not null) then 'Médico Chamando'|| ' (' || local_medico.ds_local_curto || ')' when (ap.dt_atend_medico is not null and ap.dt_fim_consulta is null) then 'Consulta Iniciada' when (ap.dt_atend_medico is not null and ap.dt_fim_consulta is not null) then 'Atendido' else 'Aguardando Consulta Médica' end ie_consulta, /* FASE MEDICAÇÃO */ case when (select 1 FROM tasy.prescr_medica pm, tasy.prescr_material pmat WHERE pm.nr_atendimento = ap.nr_atendimento and pmat.nr_prescricao = pm.nr_prescricao fetch first 1 rows only) is null then 'Não Solicitado' else (SELECT case when max(pmat.dt_baixa) is not null then 'Medicação Liberada' else 'Realizar Medicação' end ie_medicacao FROM tasy.prescr_medica pm, tasy.prescr_material pmat WHERE pm.nr_atendimento = ap.nr_atendimento and pmat.nr_prescricao = pm.nr_prescricao) end ie_medicacao, /* FASE LABORATÓRIO */ case when (SELECT 1 FROM dual where not exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null)) is not null then 'Não Solicitado' when (SELECT 1 FROM dual where exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend < 20)) is not null then 'Aguardando Coleta Laboratório' when (SELECT 1 FROM dual where exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend >= 20) and not exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend < 20) and not exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend = 35) ) is not null then 'Coleta Realizada / Aguardando Laudo' when (SELECT 1 FROM dual where exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend = 35) and exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend < 35) ) is not null then 'Parcial Liberado' when (SELECT 1 FROM dual where exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend = 35) and not exists( select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp WHERE pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is not null and pp.ie_status_atend < 35) ) is not null then 'Laudo Liberado' end ie_laboratorio, /* FASE EXAME DE IMAGEM */ case when (SELECT 1 FROM dual where not exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and p.cd_tipo_procedimento in (2,3,4,15,34) and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null)) is not null then 'Não Solicitado' when (SELECT 1 FROM dual where exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and p.cd_tipo_procedimento in (2,3,4,15,34) and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and pp.ie_status_execucao < 20)) is not null then 'Aguardando Realização do Exame' when (SELECT 1 FROM dual where exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and p.cd_tipo_procedimento in (2,3,4,15)--,34) and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and pp.ie_status_execucao = 20) and not exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and p.cd_tipo_procedimento in (2,3,4,15,34) and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and pp.ie_status_execucao < 20) and not exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and p.cd_tipo_procedimento in (2,3,4,15,34) and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and pp.ie_status_execucao > 20) ) is not null then 'Exame Realizado / Aguardando Laudo' when (SELECT 1 FROM dual where exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and ((pp.ie_status_execucao = 40 and p.cd_tipo_procedimento in (2,3,4,15)) or (pp.ie_status_execucao = 20 and p.cd_tipo_procedimento in (34)))) and exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and ((pp.ie_status_execucao < 40 and p.cd_tipo_procedimento in (2,3,4,15)) or (pp.ie_status_execucao < 20 and p.cd_tipo_procedimento in (34)))) ) is not null then 'Parcial Liberado' when (SELECT 1 FROM dual where exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and ((pp.ie_status_execucao = 40 and p.cd_tipo_procedimento in (2,3,4,15)) or (pp.ie_status_execucao = 20 and p.cd_tipo_procedimento in (34)))) and not exists (select 1 from tasy.prescr_medica pm, tasy.prescr_procedimento pp, tasy.procedimento p WHERE p.cd_procedimento = pp.cd_procedimento and p.ie_origem_proced = pp.ie_origem_proced and pm.nr_atendimento = ap.nr_atendimento and pp.nr_prescricao = pm.nr_prescricao and pp.nr_seq_exame is null and ((pp.ie_status_execucao < 40 and p.cd_tipo_procedimento in (2,3,4,15)) or (pp.ie_status_execucao < 20 and p.cd_tipo_procedimento in (34)))) ) is not null then 'Laudo Liberado' end ie_imagem from tasy.atendimento_paciente ap, tasy.pessoa_fisica pf, TASY.TRIAGEM_PRONTO_ATEND tpa, tasy.atendimento_alta aa, (select mls.ds_local_curto, ap.nr_atendimento from TASY.fila_visualizacao_senha fvs, tasy.maquina_local_senha mls, tasy.atendimento_paciente ap where fvs.dt_atualizacao > sysdate-1 and mls.nr_sequencia = nr_seq_local_chamada and ap.nr_seq_pac_senha_fila = fvs.nr_seq_pac_senha_fila and mls.nr_seq_grupo_local_senha = 6) local_triagem, (select mls.ds_local_curto, ap.nr_atendimento from TASY.fila_visualizacao_senha fvs, tasy.maquina_local_senha mls, tasy.atendimento_paciente ap where fvs.dt_atualizacao > sysdate-1 and mls.nr_sequencia = nr_seq_local_chamada and ap.nr_seq_pac_senha_fila = fvs.nr_seq_pac_senha_fila and mls.nr_seq_grupo_local_senha = 7) local_medico where ap.cd_pessoa_fisica = pf.cd_pessoa_fisica and ap.nr_atendimento = tpa.nr_atendimento and ap.ie_tipo_atendimento = 3 and ap.nr_atendimento = local_triagem.nr_atendimento(+) and ap.nr_atendimento = local_medico.nr_atendimento(+) and ap.nr_atendimento = aa.nr_atendimento(+)) W WHERE w.nr_atendimento = :nr_atendimento