Registrando Escalas de Enfermagem Domiciliar

O controle das escalas dos técnicos / auxiliares de enfermagem deverá ser realizado através do painel do prontuário eletrônico denominado “Equipe” (especificamente na segunda aba denominada “Escala Enfermagem Domiciliar”.

Em linhas gerais, para gerar uma Escala de Enfermagem Domiciliar será necessário a execução de 3 etapas a saber:

1.      Gerar os tipos de regime de enfermagem domiciliar, conforme procedimentos descritos Cadastro de Escala de Enfermagem – Tipo de Regime. A configuração do Turnos de Enfermagem é pré-requisito para que a geração do turno e o consequentemente escalonamento possam ser efetuados.

2.      A geração do turno da Escala de Enfermagem, conforme descritos a seguir e

3.      Acompanhamento da Escala de Enfermagem de Home Care e das Escalas direcionadas para as Cooperativa, descritas após a geração do turno, neste mesmo documento.

Índice de Tópicos

[1] – Geração dos Turnos da Escalara de Enfermagem Domiciliar
[2] – Registrando Instruções para a Escala de Enfermagem Domiciliar
[3] – Escalando Técnicos/Auxiliares de Enfermagem nos Turnos
[4] – Propagando a Escala de Técnicos / Auxiliares de Enfermagem

Geração dos Turnos da Escala de Enfermagem Domiciliar

Para gerar os eventos (plantões ou procedimentos) que formarão a estrutura básica para a Escala de Enfermagem Domiciliar, entre no painel Equipe e passe para a Aba Escala de Enfermagem Domiciliar, onde será apresentada a seguinte tela:


Para gerar a Escala clique no botão 'Gerar Turno' e clique na opção “Gerar Turnos”. Esse botão irá de desdobrar em um popup menu conforme iustrado abaixo:


Opção: Gerar Turnos
: O acionamento dessa opção fará que seja lançada a caixa de diálogo ilustrada abaixo:


Clique no botão 'Novo' fazendo com que uma linha seja adicionada à tela e informe as seguintes colunas:

Regime Enf. Domiciliar: (obrigatório) Abra o combo-box e escolha o tipo de turno desejado

Data de Início: (Obrigatório) Informe a data de início do turno da auxiliar de enfermagem

Data de Término: (Obrigatório) Informe a data de término do turno da auxiliar de enfermagem

Cód Complex.: (não obrigatório) Informe o nível de complexidade.

Cooperativa: (não obrigatório) Caso deseje já deixar os plantões que serão gerados associados a uma Cooperativa selecione uma cooperativa, caso contrário deixe esse atributo em brando.

Nota: Por parametrização o IW permite que o cálculo dos pagamentos dos plantões de enfermagem possam ser pelo nível de remuneração associado ao procedimento/plantão gerado  ou pelo nível de remuneração dos auxiliares (declarado no cadastro dos profissionais). Essa configuração será definida pela política de pagamento de cada Home Care.

Ao clicar no botão 'OK' o IW irá proceder a geração dos registros relacionados com os Procedimentos/Plantões dos Técnicos de enfermagem e fará uma pesquisa automatizada no painel exibindo os novos registros gerados. A ilustração abaixo ilustra o resultado dessa operação:

 

Opção: Remover Turnos: Selecione linhas no gride correspondente a Procedimentos / Plantões que devem ser removidos e clique nessa opção (o sistema somente permitirá a remoção de de registros que estejam livres para remoção (não tenham profissional escalado, não tenham sido relacionados a documentos de pagamento etc).

 

Opção: Adicionar Turno: Essa operação permitirá adicionar novos Procedimentos / Plantões individualmente, por exemplo, em alguns casos pode-se escalar dois profissionais para executar um plantão no domicílio no mesmo horário (por exemplo para dar instruções / treinamento).  Para isso, selecione uma única linha no gride e acione essa opção. O sistema irá exibir a seguinte interface:



Confirme ou edite os horários do Plantão / Procedimento que será adicionado e clique no botão “Salvar”. Eventualmente pode-se adicionar novos procedimentos / plantões (use o botão “Novo” para essa finalidade.



Registrando Instruções para a escala dos Profissionais do Turno

O IW permitirá que o responsável pela geração dos Procedimentos / Plantões dos Técnicos de Enfermagem registre instruções relevantes para o profissional que fará a escala dos Técnicos de Enfermagem. Para isso, clique no botão 'Instruções', fazendo com que uma caixa de diálogo seja aberta e onde poderá ser digitada as instruções necessárias. Após pressionar o botão 'Ok', o sistema fechará a caixa de edição e transportará as instruções para a caixa posicionada no canto superior esquerdo do painel de escala conforme ilustração abaixo:


 

Escalando Técnicos/Auxiliares nos Turnos

Após o turno ter sido gerado, o primeiro passo é identificar os turnos (par-dia, par-noite, ímpar-dia ou ímpar-noite) para que um profissional possa ser escalado. Para isso, selecione a primeira linha da escala, posicionando o mouse sobre ela e clicando no botão 'Turnos', conforme a ilustração abaixo:

Notem que o sistema irá oferecer as seguintes opções de seleção automatizada de grupos de Plantões / Procedimentos:

·         Selecionar turno por designação,

·         Selecionar 1 em 6,

·         Selecionar 1 em 5,

·         Selecionar 1 em 4,

·         Selecionar 1 em 3 ou

·         Selecionar 1 em 2

Por exemplo: Ao selecionar a opção “Selecionar 1 em 4” o sistema fará seguinte seleção automatizada no gride:

Desta forma todas uma linha a cada 4 (corresponde à escalação de um profissional em regime de trabalho 12/36) será selecionada preparando-se assim as informações no gride para realização da transação de “Escala do profissional” propriamente dita.

O passo seguinte será selecionar o profissional que será escalado. Para isso, clique no botão 'Selecionar', que está localizado do lado direto do quadro denominado Profissional, fazendo com que a tela a seguir seja apresentada:


Tipicamente, no filtro Cód. Especialidade, informe a especialidade do profissional desejado (Ex.: 'Técnico de Enfermagem')  e clique no botão 'Pesquisar', para que seja apresentada a lista de profissionais com esta especialidade, como mostra a figura acima. Nota: O tópico “Interface F01178 – Seleção de Profissionais Cadastrados“ descreve com mais detalhes as funcionalidades dessa interface.

Nota: Além da especialidade do profissional, esta tela permite que se possa fazer a pesquisa de um ou mais filtros simultaneamente, resultando assim numa lista de profissionais mais próximo da necessidade do escalador. Por exemplo, pode-se junto com a especialidade fazer a pesquisa por nível de complexidade do profissional, por cooperativa, a qualificação profissional que foi previamente cadastrada, e/ou pelo zoneamente do paciente, e/ou pelo cep e/ou pela disponibilidade de período que foi informado pelo profissional quando da sua contratação pelo Home Care.

Clique com o mouse na linha do nome do Profissional desejado e depois no botão 'Selecionar', fazendo com que os dados deste profissional seja apresentado no quadro denominado 'Profissional' como mostra a ilustração abaixo. Para que este profissional seja escalado, clique no botão 'Profissional', que abrirá uma caixa de opções. Escolha a opção 'Escalar Profissional', conforme mostra a ilustração a seguir :




Depois que o profissional for escalado o nome deste profissional será inserido nos turnos selecionados, conforme pode ser verificado pela figura abaixo:




Para os demais registros de Plantões / Procedimentos a serem escalados execute os mesmos passos descritos acima (faça a seleção automatizada 1 a cada 4, busque o profissional a ser escalado e execute a transação “Escalar Profissional”) até que todos os turnos estejam devidamente escalados.

Caso um profissional tenha sido escalado indevidamente, o estorno do mesmo será efetuado em duas fases a saber:
- repita os passos para marcar as linhas do turno desejado e clicando no botão 'Profissional', escolha a opção 'Estornar escala de Profissional'.
- repita o processo de marcar todas as linhas do turno que acabou de estornar a escala e clique no botão 'Cooperativa' para estornar também a cooperativa que ficou associado ao regsitro.


Registrando um Comentário para um turno específico

Caso seja necessário fazer algum comentário sobre um turno específico, alguma ocorrência que tenha acontecido (ex.: atraso do profissional) clique com o mouse na linha do turno desejado e no botão 'Profissional', escolha a opção 'Comentários', fazendo com que uma caixa de diálogo seja aberta e possa ser digitada as observações desejadas. As informações digitadas nesta caixa serão apresentadas na Coluna 'Observações' do gride.


Registrando o Ponto do Profissional

Para o processamento automatizado da folha de pagamento dos profissionais o IW irá considerar por default os valores “nominais de início e término dos plantões” de modo que apontamento dos horários efetivamente realizados das trocas de plantões não necessita ser feito no IW para fins de cálculo de folha de pagamento. Nos casos em que ocorrerem atrasos nas trocas de plantões e se deseje registrar formalmente esse atraso “com efeitos diretos na folha de pagamento” (o profissional que atrasou será penalizado na sua remuneração proporcionalmente às horas do atraso e, o profissional que cobriu o atraso receberá um aumento de remuneração igualmente proporcional às horas que trabalho a mais) deve-se proceder o apontamento do “Ponto do Profissional.”

Para isso, ilumine o turno que deseja registrar o ponto e que tenha um profissional já escalado e clique no botão 'Profissional' e depois na opção Registro de Ponto, fazendo com que a ilustração a seguir seja apresentada:


Altere as informações necessárias e clique no botão 'Ok' para confirmá-las. Após esse registro observe no gride a marcação dos horários realizados do plantão conforme ilustrado abaixo:





Registrando Furo de Escala

A incidência de furos de escala são comuns nesse tipo de processo e constituem um dos grandes problemas que incidem diariamente sobre os profissionais escaladores. O IW oferece uma transação otimizada que colabora para a automação das tratativas administrativas frente a esse tipo situação. Para efetivar um registro de “Furo de Escala” selecione a linha no gride correspondente ao “Plantão / Procedimento” objeto da condição de “furo de escala” , clique no botão “Profissional” e escolha a opção “Reg. Furo Escala” conforme ilustrado a seguir:



A figura a seguir ilustra o resultado dessa navegação: Será lançada a caixa de diálogo de apoio F01772.

 

Essa interface tem como objetivo otimizar o registro de furos de escala bem como já escalar o profissional substituto em uma única operação.
Para registrar o registro do furo de escala preencha No gride de cima valores para os seguintes atributos:

Apresentou atestado: (sim , não)
Avisou com antecedência: (sim,não)
Descrição do motivo do furo de escala: Campo para digitação livre.
Tipo de furo de escala: Indique uma das opções “Descobriu a escala” ou “Não descobriu a escala” (note: valores de domínio configurados na constante K_GLB_ABSENTWORK_TYPE).

Nota: Esses atributos serão úteis para a construção de indicadores relacionados à incidência de furos de escala por Técnico de Enfermagem.

Valore também informações para os “atributos de filtragem de busca” do profissional para a cobertura do furo de escala que são os seguintes atributos:

Paridade: (par, impar) Indica a paridade de escala do profissional objetivada para o profissional que deverá cobrir a escala. Nota: Utilize esse tipo de filtragem somente se sua empresa trabalha com padronização de paridades de escala por profissionais.

Tipo de Profissional: (normal, folgista, standby) Informe o tipo de profissional a ser buscado para cobrir o furo de escala. Nota: Utilize esse tipo de filtragem somente se sua empresa trabalha com padronização por tipo de profissional para fins de escala.

Período: (dia, noite, procedimento): Informe o período de trabalho do profissional a ser buscado para cobrir o furo de escala. Nota: Utilize esse tipo de filtragem somente se sua empresa trabalha com padronização por período disponível para escala por profissional.

Qualificação do profissional: Selecione uma das qualificações técnicas previamente cadastradas no sistema requeria para o profissional a ser buscado para cobrir o furo de escala. Ex.: SNE etc.

Após preencher os campos de filtragem clique no botão “Pesquisar” para que o sistema busque e exiba no gride de baixo os profissionais localizados (que atendem aos critérios de filtragem informados) que estejam “livres” (não estejam escalados em outros pacientes) durante o período do “plantão / procedimento” objeto do registro do furo de escala.

Selecione um profissional para cobrir o furo de escala e clique no botão “Selecionar profissional”. O sistema irá registrar o ID desse profissional que foi selecionado na coluna “ID Prof Cobriu furo escala” (coluna IDPROFESSIONAL)  e “Nome Prof. Cobriu furo escala”.  Nota: O ID do profissional que provocou o furo de escala ficará registrado na coluna IDPROFABSENTWORK para fins de controles estatísticos de casos de furo de escala.

NOTA TÉCNICA: Para popular o gride de baixo com a relação de profissionais selecionáveis para a cobertura do furo de escala o IW irá primeira checar se existe um valor válido posicionado no parâmetro global denominado CAP_F1772_1_SEARCHFUNCTION. Esse parâmetro permite definir um id de uma função plugada java cadastrada no IW (interface F00153). Se existir um ID válido de função plugada essa função será executada o resultado retornado pela mesma será posicionado no gride de baixo. Caso não exista um valor válido para esse parâmetro o IW irá executar automaticamente o comando SQL cadastrado na IFRSQLCOMMAND associado ao FORMID 1772 com KEYINDEX igual a “1”.


Registrando Folgas de Profissionais

O registro das folgas de profissionais poderá ser necessário tanto para atender em alguns casos a exigências legais ou para tratar previamente a negociação de dias de folgas com antecedência pelos gestores da escala. Para facilitar o trabalho dos escaladores dos técnicos de enfermagem o IW oferece uma transação voltada para essa finalidade.

Para registrar “folgas” de profissionais você poderá selecionar “até no máximo duas linhas no gride” e clicar no botão “Profissional” e selecionar a opção de popup denominada “Reg. Folga”. O sistema irá lançar a interface F01791 que ilustramos a abaixo: Basicamente informe valores para os atributos de “filtragem” (“Tipo Escala”, “Qualificação Profissional” ,”Paridade” e “Período” : Vide comentários no tópico anterior referente ao preenchimento desses atributos de filtragem) e clique no botão “Pesquisar”. O sistema irá exibir no gride de baixo a relação de profissionais localizados que poderão ser escalados para cobrir a folga do profissional originalmente agendado conforme ilustrado abaixo:

Para Você deverá ticar a coluna “Selecionar” para o profissional que irá cobrir a folga correspondente ao “registro indicado” (note que a linha do gride está indicado o ID Procedimento e note também que nos casos de escalas de procedimentos o profissional que irá folgar poderá ter “vários procedimentos agendados para o dia de sua folga objetivada”. Todos esses procedimentos estarão presentes no gride (onde estarão indicados profissionais que poderão substituir o profissional que irá folgar (profissionais que estão livres nos momentos programados para os procedimentos que estavam escalados), aguardando que o “profissional escalador” indique qual profissional fará a cobertura de cada procedimento. É possível que seja escalado um único profissional para cobrir todos dos procedimentos que estavam agendados para o profissional que irá folgar ou poderão ser selecionados vários profissionais distintos, cada um, cobrindo uma parte dos procedimentos que estavam agendados. Para registrar a folga tique as linhas no gride correspondentes aos profissionais que serão escalados para substituir o profissional que está folgando que clique no botão “Reg. Folga”. O sistema fará a substituição do profissional escalado nos dias de folga indicados automaticamente.

Nota: O sistema fará uma ação de apoio impedindo que o profissional escalador cometa um erro de selecionar dois profissionais distintos para cobrir um mesmo procedimento. A figura a seguir ilustra uma mensagem de inconsistência desse tipo levantada pelo sistema:


NOTA TÉCNICA: Para popular o gride de baixo com a relação de profissionais selecionáveis para a cobertura do furo de escala o IW irá primeiramente checar se existe um valor válido posicionado no parâmetro global denominado CAP_F1791_1_SEARCHFUNCTION. Esse parâmetro permite definir um id de uma função plugada java cadastrada no IW (interface F00153). Se existir um ID válido de função plugada essa função será executada e o resultado retornado pela mesma será posicionado no gride de baixo. Caso não exista um valor válido para esse parâmetro o IW irá executar automaticamente o comando SQL cadastrado na IFRSQLCOMMAND associado ao FORMID 1791 da seguinte forma: Se o usuário informar um valor para o atributo de filtragem “Tipo Escala” será executado o comando com KEYINDEX = “101”, caso contrário será executado o comando cadastrado com KEYINDEX igual a “102”. NOTA: Para a execução desses comandos SQL são processadas as seguintes tag´s de substituição: $P{IDPROFESSIONAL},   $P{DISTINCTDAYS} , $P{DAYPOLICY} , $P{PERIODPOLICY} , $P{SCPROFSKILL} , $P{SCHEDULETYPE}. 

Veja no Anexo A ao final desse DOC exemplos de funções plugadas de busca de profissionais para cobertura de folgas dos profissionais nas escalas.


Interface F01178 – Seleção de Profissionais Cadastrados

Matrícula: Permite localizar profissionais a partir do conhecimento do nº de matrícula do mesmo na cooperativa à qual o mesmo está associado.

Nº Registro:
Permite localizar profissionais a partir do conhecimento do seu nº de registro no seu respectivo conselho profissional (Coren, CRM etc).

Nome do Profissional:
Permite localizar profissionais por nome ou parte de nome. Esse campo de filtragem aceita argumentos “%”. Por exemplo para localizar um profissional que possui a palavra “Mendes” como um de seus sobrenomes digite “%Mendes%” nesse campo de filtragem.

Cod. Especialidade: Esse campo é uma caixa de seleção contendo a relação de especialidades cadastradas no IW. Selecione a especialidade desejada como argumento de filtragem.

Nível Remuenração: Informe o nível de remuneração desejado (caso esse atributo esteja naturalmente ativo em seu cadastro de profissionais).

Cooperativa: Corresponde à empresa através da qual o profissional presta serviços. Esse campo é uma caixa de seleção populada com a relação de empresas fornecedoras de mão de obra.

Qualific. Profissional:

Cod. Zoneamento:


Paridade
: Esse filtro é utilizado tipicamente para escalas tipo 12/36 onde os profissionais atuam em dias “pares” ou “ímpares”. Esse filtro permite buscar profissionais com base na paridade de seu cadastro. Por exemplo para buscar um profissional para cobrir um furo de escala em um dia “impar” no mês corrente devemos obter no resultado do filtro somente profissionais que estejam trabalhando em dias “ímpares” no mês objetivado 
Nota Técnica: Para que esse tipo de busca funcione corretamente certifique-se de que a tabela auxiliar denominada GLBPROFDAYPOLICY está devidamente carregada na sua instalação. Essa tabela armazena a paridade de cada mês corrente considerando um profissional cuja paridade na data de referência 01/01/2015 (data meramente convencionada pelo sistema) corresponde a uma paridade “impar”.



Propagando a Escala de Técnicos / Auxiliares de Enfermagem

Periodicamente os turnos de auxiliar de enfermagem são gerados novamente em função do período de prorrogação dos orçamentos, que tanto podem manter o mesmo tipo de turno ou podem ser alterados se houver alteração no quadro de evolução do paciente ao atendimento proposto.

Com a geração de novos turnos se faz necessário fazer o escalonamento novamente dos auxiliares neste turno. Para facilitar o escalonamento dos auxiliares que continuaram prestando serviço ao paciente, o IW disponibiliza o recurso de Propagação da Escala, visando minimizar o escalonamento novamente de um ou vários turnos para cada profissional, conforme procedimentos descritos abaixo.

Nota: A propagação da escala será efetuada sempre paciente a paciente.

Para fazer a Propagação da Escala selecione o paciente desejado e na tela da Escala de Enfermagem Domiciliar posicione o mouse sobre ou ou mais profissionais que terão sua escala propagada e clique no botão chamado Profissional que abrirá a janela de opções. Clique na opção Propagação de Escala, fazendo com que a tela 1434 a seguir seja apresentada:




Na parte superior desta tela é apresentado os Profissionais que foram escalados anteriormente para que possam ser selecionados para a propagação da próxima escala.

Na parte inferior da tela é apresentado os Turnos que foram gerados para o próximo período do orçamento e que terão a escala propagada.

Ilumine com o mouse quais os profissionais que serão escalados e na parte inferior marque com o mouse os turnos que deverão ser escalados, conforme mostra a ilustração acima e clique no botão OK para que a propagação da escala seleciona seja efetivada.


Designando Cooperativa para o Turno de Enfermagem

Caso o Home Care delegue para a Cooperativa a responsabilidade de fazer a escala dos profissionais do turno de enfermagem deverá iluminar todas as linhas do turno e clicar no botão 'Cooperativa', na opção “Designar Cooperativa”, fazendo com que a tela a seguir seja apresentada:




Abra o combo-box Cooperativa e escolha a Cooperativa para a qual deseja designar os turnos e qual o tipo de designação a saber:

- Por Paciente: quando esta opção for escolhida a Cooperativa fica designada ao paciente, ou seja, todos os turnos que serão gerados a partir desta designação serão sempre desta Cooperativa
- Por Turno: quando esta opção for escolhida a Cooperativa designada fica responsável somente por aqueles turnos que foram assinalados. Os próximos turnos não estarão designados à Cooperativa automaticamente como acontece na opção Por Paciente.

Para estornar uma Cooperativa de um turno, adote os mesmos procedimentos acima, clicando agora na opção 'Estornar designação de Cooperativa'.

Adicionando ou Removendo Turno de Enfermagem

Visando dar maior segurança as transações de geração, remoção ou adição de turnos de enfermagem domiciliar, o IW-Care deixou essas transações em um botão à parte, que poderá através do módulo de Segurança do IW, dar acesso somente aos responsáveis pela geração do orçamento ficando indisponível para os responsáveis pela escala, que não podem remover ou adicionar turnos que já fazem parte de um orçamento e que muitas vezes já tem aprovação da Seguradora.


Adição de Turno

Para adicionar um Turno na Escala de Enfermagem, posicione o mouse na linha do turno onde deseja que outro turno seja adicionado para treinamento, por exemplo, e clique no botão 'Gerar Turno' e na opção Adicionar Turno conforme ilustrado a seguir:


Ao acionar a opção “Adicionar Turno” será exibida a caixa de diálogo ilustrada abaixo:




Esta tela já abre com os dados do Turno selecionado preenchido. Se desejar adicionar um turno com a mesma definição de horário de início e término é só pressionar o botão Salvar ou então faça os ajustes necessários quanto ao novo horário do turno a ser adicionado e também clique no botão Salvar para que o turno possa ser registrado.

Quando um turno é adicionado à tela, o turno adicionado ficará com o fundo amarelo indicando que ali houve a adição de turno de enfermagem. Neste caso específico, o turno foi gerado com horários diferentes do turno anterior onde poderá ser escalado um profissional que fará treinamento junto com o auxiliar deste paciente, conforme ilustra a figura abaixo:


Remoção de Turno

Para que um turno possa ser removido, ele não pode ter nem profissional e nem cooperativa designados. Caso o turno a remover já esteja com o profissional escalado, o primeiro passo é estornar a designação do Profissional e da Cooperativa, conforme descrito anteriormente. Depois disso, posicione o mouse sobre a linha do turno a ser removido e clique no botão 'Gerar Turno' e escolha a opção Remover Turno, como mostra a ilustração abaixo:


Será apresentada a caixa de diálogo perguntando “Confirma a exclusão dos itens?” Ao clicar na opção “Sim”, a exclusão será efetuada e nova tela ser apresentada com as informações atualizadas.

 


Deslocando, Dividindo e Alterando Turno de Enfermagem

Deslocamento de Turno

Para o deslocamento do turno, clique na linha do turno a ser deslocado e clique no botão 'Turnos' e na opção Deslocar Turno conforme ilustrado a seguir:


O IW irá emitir a caixa de diálogo que ilustramos a seguir:

No combo box “Tipo de Deslocamento”, escolha o tipo desejando, antecipar ou postergar o turno e, na coluna “Tempo de deslocamento” informe a quantidade de horas a ser deslocado. Após clicar no botão Ok, a alteração será efetuada.

Dividindo um Turno

Caso, um auxiliar não possa cumprir todo o turno e outro profissional precise ser alocado para completar a escala, o IW permite essa quebra do turno e a devida alocação do outro profissional, conforme passos a seguir:

Clique na linha do turno a ser subdividido, faça o estorno da escala do Profissional e da Designação da Cooperativa. Clique novamente a linha do turno desejado e pressione o botão 'Turno' e escolha a opção Subdividir, fazendo com que a tela a seguir seja apresentada:



Pressione o botão novo, fazendo com que uma linha igualzinha a apresentada na tela seja incluída. Altere o horário da coluna TF Programado à necessidade de saída do auxiliar e a coluna T0 Programado da entrada do outro auxiliar e pressione o botão Salvar, fazendo com o novo turno seja incluído e a tela tenha a seguinte apresentação:


Observe que o turno que foi dividido é apresentado agora em 2 linhas e para diferencia-lo dos demais turno está com as colunas 'T0 Programado e 'TF Programado' na cor amarelo claro. É só designar os profissionais que deverão ser alocados ao turno, conforme procedimentos descrito anteriormente.

Alteração de horário de Início e Término do Turno

O IW-Care permite que seja alterado o horário de início ou do término do turno, tendo em vista, por exemplo, que o profissional que iria pegar o próximo turno informou que chegaria atrasado.

Para fazer essa alteração do horário de início, adote os procedimentos descritos anteriormente para selecionar o turno deseja e pressione o botão 'Turno', opção Alterar T0 Programado, fazendo com que a tela a seguir seja apresentada:


Clique no combo-box 'Tipo de deslocamento' e escolha a opção Antecipar ou Postergar. Na coluna Tempo de Deslocamento informe o número de horas ou minutos que esse deslocamento deverá ocorrer.

Para alterar o horário de término do turno é necessário que nenhum profissional esteja escalado. Adote os mesmos procedimentos descritos acima, porém escolhendo a opção Alterar TF Programado do botão 'Turnos' e informando se deseja antecipar ou postergar o horário do turno e a quantidade em horas ou minutos do deslocamento.

 

Editando parâmetros de Cobrança, Pagamento e Responsabilidade pelo Pagamento

Depois que o turno já foi gerado, o profissional devidamente escalado, o IW-Care permite que algumas funções importantes, que influenciam no pagamento da cooperativa ou na cobrança à seguradora possam ser alteradas, em função de uma necessidade específica, através do botão 'Editar' parâmetros. Os recursos disponibilizados são: pagamento, cobrança e responsabilidade do pagamento, cujos tópicos abordaremos abaixo.

Tendo em vista a importância desses parâmetros, tanto no pagamento da Cooperativa, como da cobrança à Seguradora, toda vez que estes forem alterados, o IW-Care registrará a data, horário e usuário que executou esta alteração para posterior verificação se for necessário.

O IW também permite através do módulo de Segurança limitar o acesso a esse botão somente aos usuários responsáveis pelo processo de pagamentos dos profissionais ou pelo faturamento da Seguradora. No módulo de Segurança é possível verificar quais procedimentos deverão ser adotados para dar os acessos necessários.

1.      Parâmetro de Pagamento

Permite que o nível de complexidade de um turno possa ser alterado. Salientamos que a mudança desse parâmetro estará influenciando diretamente no pagamento do serviço à Cooperativa e, por conseguinte, na remuneração do profissional, por isso, tanto esse como os demais parâmetros de edição deverão ser efetuados pelo Gestor responsável pelo pagamento às Cooperativa e com devido cuidado e critério. Para que este parâmetro seja alterado, adote os seguintes procedimentos:

Clique na linha que se deseja alterar o parâmetro de pagamento, e com o mouse sobre o botão 'Editar' escolha a opção Editar Parâmetro Pagamento, fazendo com que a ilustração a seguir seja apresentada:


Se a política de pagamento do turno do auxiliar for 'Pagamentos por Hora', poderá ser alterado o nível de remuneração abrindo o combo-box Nível Complex. Aux.Enfermagem, conforme mostra a ilustração a seguir:




Escolha o nível desejado e pressione o botão Ok, fazendo com que a coluna ‘Cplex.’ da tela da Escala Enfermagem Domiciliar seja alterada para o novo valor informado.



O combo-box Pagar Coop/Prof deverá ser alterado caso se queira registrar que o turno não deverá ser pago à Cooperativa e por conseguinte ao profissional.

Para isso, abra o combo-box e escolha a opção ‘Não’, fazendo com que a coluna ‘Pagar Coop/Prof’ da tela Escala Enfermagem Domiciliar, conforme mostra a tela a seguir, seja alterada e assim quando for processada o documento de pagamento da Cooperativa este turno não será pago.

 





Quando a política de pagamento do turno for 'Pagamento por procedimento', o rádio-box desta opção deverá ser assinalado e no combo-box Nível Complex. Aux. Enfermagem deverá ser aberto e a opção desejada escolhida, conforme mostra a ilustração a seguir:




Após a alteração a coluna Cplex. Será alterada, conforme mostra a ilustração a seguir:


2.      Parâmetro de Cobrança

Permite que o nível de complexidade de um turno possa ser alterado para outro diferente que foi gerado quando da criação do turno, definindo se será ou não cobrado da Seguradora. Como falamos anteriormente, no tópico, Parâmetro de Pagamento, salientamos que o parâmetro de cobrança estará influenciando diretamente na cobrança ou não da Seguradora e por isso, as alterações a serem efetuadas deverão serem executadas pelo Gestor responsável pela cobrança às Seguradora e com devido cuidado e critério. Para que este parâmetro seja alterado, adote os seguintes procedimentos:

Clique na linha que se deseja alterar o parâmetro de cobrança, e com o mouse sobre o botão 'Editar' escolha a opção Editar Parâmetro Cobrança, fazendo com que a ilustração a seguir seja apresentada:





Abra o combo box Nível Complex. Aux. Enfermagem e altere para o nível de complexidade de cobrança desejado e

Abra o combo box 'Cobrança' e escolha a opção desejada, fazendo com que a a coluna Cobrar Seguradora da tela Escala de Enfermagem Domiciliar seja alterada.

 

3. Parâmetro de Responsabilidade do Pagamento

Permite que a responsabilidade pelo pagamento de um turno ou procedimento de enfermagem sejam alterados, conforme a necessidade. Como já falamos nos tópicos anteriores, este parâmetro de Responsabilidade do Pagamento, estará influenciando diretamente de quem será cobrando o turno ou o procedimento da Enfermagem e por isso, as alterações a serem efetuadas deverão serem executadas pelo Gestor responsável com devido cuidado e critério. Para que este parâmetro seja alterado, adote os seguintes procedimentos:

Clique na linha que se deseja alterar o parâmetro, e com o mouse sobre o botão 'Editar' escolha a opção Editar Parâmetro Responsab Pagto, fazendo com que a ilustração a seguir seja apresentada:


Informe o valor desejado para a responsabilidade de pagamento do procedimento / plantão e clique no botão “OK”. O IW irá alterar a responsabilidade nas linhas selecionadas para edição.



4. Editar Benefícios

O IW ainda permite que seja alterado para um ou mais turnos, os benefícios concedidos aos profissionais que foram escalados para eles. Os parâmetros que forem alterados nesta edição podem significar custo maior no pagamento dos profissionais, por isso deverão serem executadas pelo Gestor responsável com devido cuidado e critério. Para que este parâmetro seja alterado, adote os seguintes procedimentos:

Posicione o mouse em um ou mais turnos que deverão ser alterados os benefícios e clique no botão Editar e na opção Editar Benefícios, fazendo com que a tela a seguir seja apresentada:



Se são vários turnos que foram selecionados informe na coluna Aux. Transporte e Bonificação que ficam na parte superior da tela o valor do benefício a ser concedido e clique no botão Aplicar, fazendo com que esse valor seja replicado para todas as linhas selecionadas. Para salvar essa alteração clique no botão Salvar.

Se um único turno for selecionado informe direto nas colunas da tela os valores a serem concedidos e clique no botão Salvar para que seja registrado.


Pesquisando os Turno de Enfermagem

Na tela de Escala de Enfermagem Domiciliar poderá ser feita 3 tipos de pesquisa do turno de enfermagem gerado para o paciente, a saber:
- Não Alocado,
- Selecionar Período e
- Última Semana em diante.

A tela abaixo mostra o resultado de uma pesquisa dos turnos que não tem profissionais alocado (primeira opção do poup-up do botão).




Na segunda opção: 'Selecionar Período', irá abrir uma tela onde as datas do intervalo desejado deverão ser informadas para a pesquisa.
Na terceira opção: 'Última semana em diante' automaticamente o resultado da pesquisa será apresentado, lembrando que se o turno referente a última semana em diante não tiver sido gerado, a tela será apresentada sem informações.

Quando o número de turnos criados for maior que 100 registros, o IW faz um gerenciamento de memória paginando a pesquisa desses registros através da quebra em páginas no máximo de 100 lançamentos em cada página, conforme pode ser verificado na tela abaixo.

Observe que na parte superior da tela, do lado direito poderá ser visualizada uma tela de Paginação, informando que na pesquisa feita tem 617 registros e que esses registros estão quebrados em 300 lançamentos em cada página (1 - 300 de 617).


Para que o restante dos registros sejam apresentados, clique novamente no botão Pesquisar e selecione agora a opção próxima página, conforme ilustrado abaixo: 

 

Conhecendo as Funcionalidades do botão Histórico

Todas transações que são efetuadas nos turnos são registradas em um log que poderá ser analisado para identificar quais as transações que foram registradas e quais usuários a processaram, conforme pode-se visualizar pela tela a seguir:



Descritivo das colunas do Painel Escala de Enfermagem Domiciliar


Nome da Coluna

Conteúdo

Liberação

Informa se a escala da enfermagem está liberada ou não

Cplex

Informa qual o nível de complexidade do profissional que deverá atender o turno da escala de enfermagem. A definição deste nível é efetuada quando da geração do Turno de Enfermagem para o paciente. Este nível de complexidade é um código que foi gerado na estrutura do SCC (Structure Code Configuration). Para pesquisar os níveis existentes ou para a geração de um novo nível de complexidade adote os procedimentos descritos na [05] – Ambiente de Configuração do Código Estruturado.

Designação

Informa qual a designação do Turno de Enfermagem (Par-Dia, Par-Noite, Impar-Dia e Impar-Noite), conforme foi definido na criação dos tipos de Regimes, conforme os procedimentos descritos [07.12] – Cadastro de Escala de Enfermagem – Tipo de Regime

Regime Enf.

Informa qual o tipo de regime da escala de enfermagem (6 horas, 12 horas, 24 horas, etc...), conforme foi definido na criação dos tipos de Regimes, cujo procedimentos estão descritos [07.12] – Cadastro de Escala de Enfermagem – Tipo de Regime

T0 Programado

Informa a data de início do turno da escala de enfermagem

TF Programado

Informa a data de término do turno da escala de enfermagem

Profissional

Informa o profissional que foi alocado para o turno

Cooperativa

Informa o nome da Cooperativa, cujo profissional foi alocado para o Turno

T0 Realizado

Informa a data e horário de início que efetivamente o turno foi realizado. Esta coluna só será preenchida se a informação for devidamente registrada através do procedimento de Registro de Ponto, conforme procedimentos descritos anteriormente.

TF Realizado

Informa a data e horário de término que efetivamente o turno foi realizado. Esta coluna só será preenchida se a informação for devidamente registrada através do procedimento de Registro de Ponto, conforme procedimentos descritos anteriormente.

Observações

Apresenta os comentários que foram devidamente registrados através da opção Comentários do botão do Profissional

Nr. Registro

Informa o número de registro do profissional

Especialidade Profiss.

Informa a especialidade do profissional

Nro Orçamento

Informa o número do orçamento onde os lançamentos da escala foram considerados

Nro Doc Pagto

Informa o número do documento de pagamento definitivo, onde os lançamentos da escala foram considerados para o pagamento do profissional. Quando esta coluna estiver preenchida significa que o IW não permitirá que os dados sejam alterados.

Doc Simulado

Informa o número do documento de pagamento simulado, onde os lançamentos da escala foram considerados para o pagamento do profissional. Quando esta coluna estiver preenchida o IW ainda permitirá que os dados sejam alterados, visto que ainda não é o documento definitivo de pagamento

Preço

Informa, depois que foi gerado o documento de pagamento, o valor a ser pago ao profissional pelas horas de trabalho naquele turno

Cobrar Seguradora

Informa se o valor do turno será cobrado ou não da Seguradora. Quando um turno é gerado, automaticamente esta coluna já vem valorada com Sim para cobrar a Seguradora, mas o usuário do Home Care poderá altera-la, conforme sua necessidade, conforme procedimentos descritos acima no Editando Parâmetros de Cobrança

Código Cobrança

Informa qual o código do turno para a cobrança junto à Seguradora

Resp. Pagto

Informa quem será o responsável pelo pagamento do turno. Quando um turno é gerado, automaticamente esta coluna já vem valorada como responsável a Seguradora, porém este parâmetro poderá ser alterado, conforme procedimentos descritos acima

Pagar Coop/Prof

Informa se o pagamento será efetuado para Cooperativa e o Profissional

%Taxa Adm.

Informa o percentual da taxa de administração cobrada pela Cooperativa pelo serviço prestado

 

Acompanhamento da Escala de Enfermagem de Home Care e as Designadas às Cooperativas

Está é a terceira etapa do processo de Escala de Enfermagem Domiciliar, onde é possível fazer um acompanhamento das escalas que foram geradas para os pacientes. O IW-Care disponibiliza duas telas de pesquisa, a saber:

1) Controle de Escalas de Enfermagem de Home Care

Para os pacientes, cujo os turnos de escala de enfermagem foram designados pelo próprio Home Care, existe a tela F01171 - Ctr. Escala Enf. Home Care, conforme mostra a ilustração abaixo. Para acessa-la, faça a seguinte navegação: no Menu Principal, clique em Execução, depois na opção Gestão de Equipe e clique na opção 2 – Ctr Escalas Enf. Home Care.


Como não existe nenhum tipo de filtro para a pesquisa, essa tela já entra pesquisando as informações e as apresentando, conforme o exemplo acima.

Para verificar se todos os auxiliares foram devidamente escalados para um determinado paciente, clique na linha do paciente desejado e pressione o botão 'Prontuário', fazendo com que a tela do Prontuário seja carregada com este paciente para a verificação.

Descreveremos abaixo, as informações que serão apresentadas nas colunas. Para melhor visualização, clicamos em uma das linhas apresentadas e com o mouse sobre o gride da tela (linha azul com a identificação das colunas) damos um duplo clique fazendo com que a tela seja apresentada da seguinte forma:


Nome da Coluna

Contéudo

Nº Atendim.

Indica número de atendimento do paciente.

Nome do Paciente

Informa o nome do paciente

Sexo

Informa o sexo do paciente

Idade (anos)

Informa a idade do paciente

Seguradora

Informa a Seguradora

Motivo Internação

Informa o motivo da internação

Data Internação

Informa a data de início da internação

Data Prevista Alta

Informa a data prevista da alta do paciente

Respons Pagamento

Informa quem será o responsável pelo pagamento do turno da escala de enfermagem

 

 

2) Controle de Escalas de Enfermagem de Cooperativa

Para os pacientes, cujo os turnos de escala de enfermagem foram designados para as Cooperativas, existe a tela F01206 - Ctr. Escalas Enf. Cooperat., conforme mostra a ilustração abaixo. Para acessa-la, faça a seguinte navegação: no Menu Principal, clique em Execução, depois na opção Gestão de Equipe e clique na opção 3 – Ctr Escalas Enf. Cooperat.


Nesta tela você poderá fazer a pesquisa por 3 filtros a saber:

·         Cooperativa: Dê um duplo clique nesta coluna e escolha qual a Cooperativa deseja pesquisar

·         Consulta: Clique no rádio box 'Todo', se desejar que seja apresentado todos os pacientes, cujas escalas para os turnos de auxiliar de enfermagem foram designadas para aquela Cooperativa ou clique no rádio box 'a escalar', se desejar que seja apresentada somente os pacientes que foram designados para aquela Cooperativa, mas os auxiliares não foram alocados

·         Data Início e Data Fim: Informe qual o período deseja pesquisar, conforme mostra a ilustração abaixo:



No exemplo acima, como pedimos para que fossem apresentados os pacientes que tem turno a escalar, agora é só clicar na linha de um dos pacientes apresentado e o botão 'Lançar Prontuário' será disponibilizado. Pressione este botão e a tela de Prontuário Eletrônico será carregada, posicionado no paciente desejado e o escalonamento dos auxiliares poderá ser efetuado.

Descreveremos abaixo, as informações que serão apresentadas nas colunas. Para melhor visualização, clicamos em uma das linhas apresentadas e com o mouse sobre o gride da tela (linha azul com a identificação das colunas) damos um duplo clique fazendo com que a tela seja apresentada da seguinte forma:

Nome da Coluna

Contéudo

Nº Atendim.

Indica número de atendimento do paciente.

Paciente

Informa o nome do paciente

Idade

Informa a idade do paciente

Sexo

Informa o sexo do paciente

Status

Informa o Status do atendimento do paciente (se em avaliação, atendimento, etc..)

Data Internação

Informa a data de início da internação

Nro Turno

Informa a quantidade de turno que a Cooperativa tem a escalar para o paciente

Nro de Consultas

Informa a quantidade de consultas que a Cooperativa tem a escalar para o paciente

Nro Coletas

Informa a quantidade de coletas de exames que a Cooperativa tem a executar

 

Anexo A

Função Plugada Java Exemplo de pesquisa na interface F01791 (Escala de Folgas de Técnicos de Enfermagem)

NOTA TÉCNICA: Para popular da pesquisa de profissionais selecionáveis para a cobertura do furo de escala o IW irá primeiramente checar se existe um valor válido posicionado no parâmetro global denominado CAP_F1791_1_SEARCHFUNCTION. Esse parâmetro permite definir um id de uma função plugada java cadastrada no IW (interface F00153). Se existir um ID válido de função plugada essa função será executada e o resultado retornado pela mesma será posicionado no gride de baixo na interface F01791. Caso não exista um valor válido para esse parâmetro o IW irá executar automaticamente o comando SQL cadastrado na IFRSQLCOMMAND associado ao FORMID 1791 da seguinte forma: Se o usuário informar um valor para atributo de filtragem “Tipo Escala” será executado o comando com KEYINDEX = “101”, caso contrário será executado o comando cadastrado com KEYINDEX igual a “102”. NOTA: Para a execução desses comandos SQL são processadas as seguintes tag´s de substituição: $P{IDPROFESSIONAL},   $P{DISTINCTDAYS} , $P{DAYPOLICY} , $P{PERIODPOLICY} , $P{SCPROFSKILL} , $P{SCHEDULETYPE}. 

Na sua configuração nativa o IW deve ser configurado com a função java indicada abaixo:

Função A: Se aplica para instalação Mono Filiais e Home Care somente (não se aplica a multifilial e nem a instalações tipo Hospice).

Nota:
Para Multifilial e/ou Hospice utilize a função (B)

// FUNÇÃO: F01791_Search_1_A

// PARAMETRO 151: CAP_F1791_1_SEARCHFUNCTION

// PESQUISA OTIMIZADA PARA ESCALA DE FOLGISTAS

// Versão 22/08/2018

// Versão: 22/08/2018:

//                                 Correção na sintaxe de cast (para driver nativo oracle)

//                                 Considera como filtro de especialidade: " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' " - Especialidades com Tec Enf no nome'

 

 

/* Sintaxe para emissão de display

 

            javax.swing.JOptionPane.showMessageDialog(ctl.getApp(), "Mensagem" ,"Erro",

            JOptionPane.ERROR_MESSAGE);

            return;

*/

 

// IMPORTANTE: CÓDIGOS DE ESPECIALIDADES RESULTANTES DA BUSCA ESTÃO FIXAS NOS COMANDOS: VIDE A SEGUINTE CLAUSULA NOS COMANDOS: + " AND G.SCSPECIALITY IN ( 38173, 38196) "

// Ao migrar essa função para a base dos clientes certifique de que os códigos das epecilidades "TECNICO DE ENFERMAGEM" e/ou "AUXILIAR DE ENFERMAGEM" correpondem de fato aos

//   códigos SCC citados nessa cláusula

 

/*  NA CHAMADA DA FUNÇÃO PLUGADA SÃO REALIZADAS AS SEGUINTES CONSTRUÇÕES:

interpreter.set("ctl", ctl);

interpreter.set("map", map);

interpreter.set("userparam", userParam);

interpreter.set("eMgr", eMgr);    - eMgr:excetption manager

interpreter.set("rParam", rParam);

interpreter.set("rsFilter", rsFilter);

 

rParam é a estrutura (Row) onde devem ser devolvidos o comando e o keyindex de gride para exibição do resultado

rParam.addField(new Field("CMD", Field.STRING, null));

rParam.addField(new Field("KEYINDEX", Field.INTEGER, null));

 

rsFilter é o Recordset de cabeçalho da tela com os atributos da filtragem

 

 

 

PARAMETROS DE FILTRAGEM : GRIDE DE CABEÇALHO DA F01770  - 1° ABA

----------------------------------------------------------------

 

IDPROFESSIONAL (LONG) : Id (idperson da GLBPERSON) referente ao profissional que irá folgar

 

DISTINCTDAYS: (STRING) - Formada pela concatenação das datas (somente dia) distintas das linhas selecionadas pelo usuário no gride separas por vírgulas.

Exemplo: $P{DISTINCTDAYS} = '01/01/2015','03/01/2015'

 

DAYPOLICTY: (INTEGER) Corresponde ao valor da coluna GLBPROFESSIONAL.DAYPOLCY  , que corresponde ao conceito de "paridade"

do profissional que irá folgar no mês de referência = 01/01/2015 (DAYPOLICYORIG)

 

SCPROFSKILL: (LONG) Corresponde a um código de "QUALIFICAÇÃO PROFISSIONAL" de técnicos de enfermagem

 

SCHEDULETYPE (INTEGER) : Corresponde a um associado à constante K_CAP_PROF_SCHED_TYPE

0          Normal  Não

1          Folgista Não

2          StandBy Não

 

PERIODPOLICY (INTEGER):  Corresponde a um associado à constante K_CAP_PROF_SCHED_TYPE

0          .           Não

1          Dia       Não

2          Noite     Não

3          Proc      Não

 

*/

 

import java.util.*;

import com.iw.controllerLayer.*;

import com.iw.communicationLayer.*;

import com.iw.visualLayer.components.*;

import java.math.*;

import java.text.SimpleDateFormat;

 

 

String strIDPROFESSIONAL;

String strDISTINCTDAYS;

String strSCPROFSKILL;

String strSCHEDULETYPE;

String strPERIODPOLICY;

 

String strFiltroSCHEDULETYPE;

String strFiltroPERIODPOLICY;

String strFiltroSCPROFSKILL;

String strKeyindex;

String SqlCommand;

String SqlCommand_before;

 

 

// Obtem strIDPROFESSIONAL

if (rsFilter.getFirstRow().getField("IDPROFESSIONAL").isValued() && rsFilter.getFirstRow().getField("IDPROFESSIONAL").getValue() != null) {

            strIDPROFESSIONAL =  rsFilter.getFirstRow().getField("IDPROFESSIONAL").getValue().toString();

}

 

 

// Obtem strDISTINCTDAYS

if (rsFilter.getFirstRow().getField("DISTINCTDAYS").isValued() && rsFilter.getFirstRow().getField("DISTINCTDAYS").getValue() != null) {

            strDISTINCTDAYS =  rsFilter.getFirstRow().getField("DISTINCTDAYS").getValue().toString();

}

 

 

// Obtem strSCPROFSKILL

if (rsFilter.getFirstRow().getField("SCPROFSKILL").isValued() && rsFilter.getFirstRow().getField("SCPROFSKILL").getValue() != null) {

            strSCPROFSKILL =  rsFilter.getFirstRow().getField("SCPROFSKILL").getValue().toString();

} else {

            strSCPROFSKILL = "-";

}

 

 

// Obtem strSCHEDULETYPE

if (rsFilter.getFirstRow().getField("SCHEDULETYPE").isValued() && rsFilter.getFirstRow().getField("SCHEDULETYPE").getValue() != null) {

            strSCHEDULETYPE =  rsFilter.getFirstRow().getField("SCHEDULETYPE").getValue().toString();

} else {

            strSCHEDULETYPE = "-";

}

 

 

// Obtem strPERIODPOLICY

if (rsFilter.getFirstRow().getField("PERIODPOLICY").isValued() && rsFilter.getFirstRow().getField("PERIODPOLICY").getValue() != null) {

            strPERIODPOLICY =  rsFilter.getFirstRow().getField("PERIODPOLICY").getValue().toString();

} else {

            strPERIODPOLICY = "-";

}

 

 

// MONTAGEM DE COMANDO SQLBEFORE DE VALORACAO DAS COLUNAS RESTDAY (ATENCAO: EXISTE UM PONTO E VIRGULA NO COMANDO )

SqlCommand_before =    "UPDATE GLBPROFSHIFTAGENDA SET RESTDAY = -1"

                                    + " WHERE"

                                    + " CURRENTDATE IN (" + strDISTINCTDAYS + ")"

                                    + " AND IDPROFESSIONAL = " + strIDPROFESSIONAL + ";"

 

                                    + "UPDATE GLBPROFSHIFTAGENDA SET RESTDAY =  -16764007"

                                    + " WHERE"

                                    + " CURRENTDATE IN (" + strDISTINCTDAYS + ")"

                                    + " AND IDPROFESSIONAL = " + strIDPROFESSIONAL 

                                    + " AND IDPROFESSIONAL IN (SELECT IDPROFRESTBREAK FROM CAPSHIFTITEM WHERE TRUNC(PROGRAMMEDEND) = TRUNC(GLBPROFSHIFTAGENDA.CURRENTDATE)  ) ; ";

 

 

 

 

if (strSCPROFSKILL.equals("-")) {

// FILTRO POR QUALIFICACAO PROFISSIONAL INATIVO

 

 

            // Prepara filtro por SCHEDULETYPE

            // -------------------------------

 

            if (strSCHEDULETYPE.equals("-")) {

 

                        strFiltroSCHEDULETYPE = "";

 

            } else {

 

                        strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

            }

 

 

            // Prepara filtro por PERIODPOLICY

            // -------------------------------

 

            if (strPERIODPOLICY.equals("-")) {

 

                        strFiltroPERIODPOLICY = "";

 

            } else {

 

                        strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

            }

 

            // Valora strKeyindex

            // ------------------

            strKeyindex = "101";

 

            SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS ,"

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA,H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real)  AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

 

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

 

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

 

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, SCCCODE K "

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                    + " AND K.ID = G.SCSPECIALITY "

                                    + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

 

 

//                                 + " AND G.SCSPECIALITY IN ( 38173, 38196) "

 

 

 

 

 

 

 

} else {

// FILTRO POR QUALIFICACAO PROFISSIONAL ATIVO

 

 

            // Prepara filtro por SCHEDULETYPE

            // -------------------------------

 

            if (strSCHEDULETYPE.equals("-")) {

 

                        strFiltroSCHEDULETYPE = "";

 

            } else {

 

                        strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

            }

 

 

            // Prepara filtro por PERIODPOLICY

            // -------------------------------

 

            if (strPERIODPOLICY.equals("-")) {

 

                        strFiltroPERIODPOLICY = "";

 

            } else {

 

                        strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

            }

 

 

 

            // Prepara filtro por SCPROFSKILL

            // -------------------------------

 

            if (strSCPROFSKILL.equals("-")) {

 

                        strFiltroSCPROFSKILL = "";

 

            } else {

 

                        strFiltroSCPROFSKILL = "AND G.IDPERSON = I.IDPROFESSIONAL AND I.SCPROFSKILL = " + strSCPROFSKILL;

            }

 

 

            // Valora strKeyindex

            // ------------------

            strKeyindex = "101";

 

 

 

            SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS ,"

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA, H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real)  AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

 

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

 

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

 

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, I.GLBPROFSKILL, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                    + " AND K.ID = G.SCSPECIALITY "

                                    + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " " + strFiltroSCPROFSKILL

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

 

//                                 + " AND G.SCSPECIALITY IN ( 38173, 38196) "

 

}

 

 

 

// SETA VALORES DE "CMD" e "KEYINDEX"

 

SqlCommand = SqlCommand_before + SqlCommand;

rParam.getField("CMD").setValue(SqlCommand);

rParam.getField("KEYINDEX").setValue(new Integer(strKeyindex));

 

 

 

return ;

 

Função B: Se aplica para instalação Multi e/ou Hospice


// FUNÇÃO: F01791_Search_1_B

// PARAMETRO 151: CAP_F1791_1_SEARCHFUNCTION

// PESQUISA OTIMIZADA PARA ESCALA DE FOLGISTAS

// Versão: 22/08/2018: Preparação para operação em Hospice e Multifilial

//                                             Correção de falha na pesquisa de folgistas multifilial

//                                             Correção na sintaxe de cast (para driver nativo oracle)

//                                             Considera como filtro de especialidade: " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' " - Especialidades com Tec Enf no nome'

 

/* Sintaxe para emissão de display

            javax.swing.JOptionPane.showMessageDialog(ctl.getApp(), "Mensagem" ,"Erro",

            JOptionPane.ERROR_MESSAGE);

            return;

 */

 

/* NA CHAMADA DA FUNÇÃO PLUGADA SÃO REALIZADAS AS SEGUINTES CONSTRUÇÕES:

 

interpreter.set("ctl", ctl);

interpreter.set("map", map);

interpreter.set("userparam", userParam);

interpreter.set("eMgr", eMgr);    - eMgr:excetption manager

interpreter.set("rParam", rParam);

interpreter.set("rsFilter", rsFilter);

 

rParam é a estrutura (Row) onde devem ser devolvidos o comando e o keyindex de gride para exibição do resultado

rParam.addField(new Field("CMD", Field.STRING, null));

rParam.addField(new Field("KEYINDEX", Field.INTEGER, null));

 

rsFilter é o Recordset de cabeçalho da tela com os atributos da filtragem

 

PARAMETROS DE FILTRAGEM : GRIDE DE CABEÇALHO DA F01770  - 1° ABA

 ----------------------------------------------------------------

 IDPROFESSIONAL (LONG) : Id (idperson da GLBPERSON) referente ao profissional que irá folgar

 DISTINCTDAYS: (STRING) - Formada pela concatenação das datas (somente dia) distintas das linhas selecionadas pelo usuário no gride separas por vírgulas.

 Exemplo: $P{DISTINCTDAYS} = '01/01/2015','03/01/2015'

 DAYPOLICY: (INTEGER) Corresponde ao valor da coluna GLBPROFESSIONAL.DAYPOLCY  , que corresponde ao conceito de "paridade"

 do profissional que irá folgar no mês de referência = 01/01/2015 (DAYPOLICYORIG)

 SCPROFSKILL: (LONG) Corresponde a um código de "QUALIFICAÇÃO PROFISSIONAL" de técnicos de enfermagem

 

SCHEDULETYPE (INTEGER) : Corresponde a um associado à constante K_CAP_PROF_SCHED_TYPE

 0          Normal  Não

 1          Folgista Não

 2          StandBy Não

 

PERIODPOLICY (INTEGER):  Corresponde a um associado à constante K_CAP_PROF_SCHED_TYPE

 0          .           Não

 1          Dia       Não

 2          Noite     Não

 3          Proc      Não

 

PARAMETROS DE CONTEXTO DE PROCESSAMENTO

 ---------------------------------------

 

 MULTIFILIAL: Indica se o modelo multifial está ativo

 0: Modelo Mono Filial

 <> 0: Modelo Multi Filial: Nesse parâmetro é passado o ID DA FILIAL do paciente  (     IDHEATHPROVIDER )

 

HOSPICE: Indica se a escala é de um paciente de Hospice ou Home Care (Domiciliar)

 1: Hospice

 0: Home Care (Domiciliar)

 Nas escalas de Hospice na CAPSHIFT é valorada a coluna IDDEPARTMENT ao passo que no modelo Home Care a coluna que é valorada é IDADMISSION

 A valoração dessas colunas é mutualmente exclusiva

 

 */

 

import java.util.*;

 import com.iw.controllerLayer.*;

 import com.iw.communicationLayer.*;

 import com.iw.visualLayer.components.*;

 import java.math.*;

 import java.text.SimpleDateFormat;

 

 String strIDPROFESSIONAL;

 String strDISTINCTDAYS;

 String strSCPROFSKILL;

 String strSCHEDULETYPE;

 String strPERIODPOLICY;

 String strMULTIFILIAL;

 String strHOSPICE;

 String strFiltroSCHEDULETYPE;

 String strFiltroPERIODPOLICY;

 String strFiltroSCPROFSKILL;

 String strKeyindex;

 String SqlCommand;

 String SqlCommand_before;

 

// Obtem strIDPROFESSIONAL

 

if (rsFilter.getFirstRow().getField("IDPROFESSIONAL").isValued() && rsFilter.getFirstRow().getField("IDPROFESSIONAL").getValue() != null) {

            strIDPROFESSIONAL =  rsFilter.getFirstRow().getField("IDPROFESSIONAL").getValue().toString();

 }

 

// Obtem strDISTINCTDAYS

 

if (rsFilter.getFirstRow().getField("DISTINCTDAYS").isValued() && rsFilter.getFirstRow().getField("DISTINCTDAYS").getValue() != null) {

            strDISTINCTDAYS =  rsFilter.getFirstRow().getField("DISTINCTDAYS").getValue().toString();

 }

 

 

 

// Obtem strSCPROFSKILL

 

if (rsFilter.getFirstRow().getField("SCPROFSKILL").isValued() && rsFilter.getFirstRow().getField("SCPROFSKILL").getValue() != null) {

            strSCPROFSKILL =  rsFilter.getFirstRow().getField("SCPROFSKILL").getValue().toString();

 } else {

            strSCPROFSKILL = "-";

 }

 

// Obtem strSCHEDULETYPE

 

if (rsFilter.getFirstRow().getField("SCHEDULETYPE").isValued() && rsFilter.getFirstRow().getField("SCHEDULETYPE").getValue() != null) {

            strSCHEDULETYPE =  rsFilter.getFirstRow().getField("SCHEDULETYPE").getValue().toString();

 } else {

            strSCHEDULETYPE = "-";

 }

 

 

 

// Obtem strPERIODPOLICY

 

if (rsFilter.getFirstRow().getField("PERIODPOLICY").isValued() && rsFilter.getFirstRow().getField("PERIODPOLICY").getValue() != null) {

            strPERIODPOLICY =  rsFilter.getFirstRow().getField("PERIODPOLICY").getValue().toString();

 } else {

            strPERIODPOLICY = "-";

 }

 

 

 

// Obtem valores de strMULTIFILIAL e strHOSPICE a partir do IDSHIF

 

// Obtem strMULTIFILIAL

 

if (rsFilter.getFirstRow().getField("MULTIFILIAL").isValued() && rsFilter.getFirstRow().getField("MULTIFILIAL").getValue() != null) {

            strMULTIFILIAL =  rsFilter.getFirstRow().getField("MULTIFILIAL").getValue().toString();

 }

 

 

 

// Obtem strHOSPICE

 

if (rsFilter.getFirstRow().getField("HOSPICE").isValued() && rsFilter.getFirstRow().getField("HOSPICE").getValue() != null) {

 

            strHOSPICE =  rsFilter.getFirstRow().getField("HOSPICE").getValue().toString();

 

}

 

 

 

// MONTAGEM DE COMANDO SQLBEFORE DE VALORACAO DAS COLUNAS RESTDAY (ATENCAO: EXISTE UM PONTO E VIRGULA NO COMANDO )

 

SqlCommand_before =    "UPDATE GLBPROFSHIFTAGENDA SET RESTDAY = -1"

                                    + " WHERE"

                                    + " CURRENTDATE IN (" + strDISTINCTDAYS + ")"

                                    + " AND IDPROFESSIONAL = " + strIDPROFESSIONAL + ";"

 

                                    + "UPDATE GLBPROFSHIFTAGENDA SET RESTDAY =  -16764007"

                                    + " WHERE"

                                    + " CURRENTDATE IN (" + strDISTINCTDAYS + ")"

                                    + " AND IDPROFESSIONAL = " + strIDPROFESSIONAL 

                                    + " AND IDPROFESSIONAL IN (SELECT IDPROFRESTBREAK FROM CAPSHIFTITEM WHERE TRUNC(PROGRAMMEDEND) = TRUNC(GLBPROFSHIFTAGENDA.CURRENTDATE)  ) ; ";

 

 

 

// Verifica se Modelo Multifilial está ativo

 

// Verifica se se é modelo Hospice ou Home Care  (se na CAPSHIFT IDEPARTMENT estiver valorado ==> modelo Hospice. No modelo Home Care a coluna IDADMISSION é que é valorada.

 

// Essas duas colunas tem valoração mutuamente exclusiva

 

 

 

// ==========================================================================================================

 

if ( strMULTIFILIAL.equals("0") && strHOSPICE.equals("0")  ) {

 

 

 

            // (1) Inicio

            // Mono Filial - Home Care

            // KEYINDEX = 101        

            // -----------------------

 

            if (strSCPROFSKILL.equals("-")) {

 

            // FILTRO POR QUALIFICACAO PROFISSIONAL INATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "101";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , null as DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA,H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, SCCCODE K "

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

            } else {

 

            // FILTRO POR QUALIFICACAO PROFISSIONAL ATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Prepara filtro por SCPROFSKILL

                        // -------------------------------

 

                        if (strSCPROFSKILL.equals("-")) {

                                    strFiltroSCPROFSKILL = "";

                        } else {

                                    strFiltroSCPROFSKILL = "AND G.IDPERSON = I.IDPROFESSIONAL AND I.SCPROFSKILL = " + strSCPROFSKILL;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "101";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , null as DEPARTMENTNAME , "

                                                + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA, H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, I.GLBPROFSKILL, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " " + strFiltroSCPROFSKILL

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

            }

 

            // (1) Término

            // Mono Filial - Home Care

            // KEYINDEX = 101        

            // -----------------------

 

}

 

 

 

// ==========================================================================================================

 

if ( strMULTIFILIAL.equals("0") && strHOSPICE.equals("1")  ) {

 

            // (2) Inicio

            // Mono Filial ? Hospice

            // KEYINDEX = 102

            // -----------------------   

 

            if (strSCPROFSKILL.equals("-")) {

            // FILTRO POR QUALIFICACAO PROFISSIONAL INATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "102";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND ,NULL AS IDADMISSION , NULL AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , C.NAME AS DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA,H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDDEPARTMENT = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTDEPARTMENTJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B , GLBDEPARTMENT C , GLBPROFESSIONAL G , GLBPERSON H, SCCCODE K "

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDDEPARTMENT = C.ID"

                                     + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTDEPARTMENTJOB ";

 

 

 

            } else {

 

            // FILTRO POR QUALIFICACAO PROFISSIONAL ATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Prepara filtro por SCPROFSKILL

                        // -------------------------------

 

                        if (strSCPROFSKILL.equals("-")) {

                                    strFiltroSCPROFSKILL = "";

                        } else {

                                    strFiltroSCPROFSKILL = "AND G.IDPERSON = I.IDPROFESSIONAL AND I.SCPROFSKILL = " + strSCPROFSKILL;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "102";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND ,NULL AS IDADMISSION , NULL AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , C.NAME AS DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA, H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDDEPARTMENT = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTDEPARTMENTJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B , GLBDEPARTMENT C , GLBPROFESSIONAL G , GLBPERSON H, I.GLBPROFSKILL, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDDEPARTMENT = C.ID"  

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " " + strFiltroSCPROFSKILL

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTDEPARTMENTJOB ";

 

 

 

            }

 

            // (2) Término

            // Mono Filial ? Hospice

            // KEYINDEX = 102

            // -----------------------

 

}

 

 

 

// ==========================================================================================================

 

if ( !strMULTIFILIAL.equals("0") && strHOSPICE.equals("0")  ) {

 

 

 

            // (3) Inicio

            // Multi Filial - Home Care

            // KEYINDEX = 101

            // -----------------------

 

 

 

            if (strSCPROFSKILL.equals("-")) {

            // FILTRO POR QUALIFICACAO PROFISSIONAL INATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

 

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "101";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , null as DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA,H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                                                   + " AND H.ID IN ( SELECT IDPROFESSIONAL FROM GLBHPROVXPROF WHERE IDHEALTHPROVIDER = " +  strMULTIFILIAL + ")   " 

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

 

 

 

 

 

 

            } else {

 

            // FILTRO POR QUALIFICACAO PROFISSIONAL ATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Prepara filtro por SCPROFSKILL

                        // -------------------------------

 

                        if (strSCPROFSKILL.equals("-")) {

                                    strFiltroSCPROFSKILL = "";

                        } else {

                                    strFiltroSCPROFSKILL = "AND G.IDPERSON = I.IDPROFESSIONAL AND I.SCPROFSKILL = " + strSCPROFSKILL;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

 

                        strKeyindex = "101";

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND , C.ID AS IDADMISSION , E.NAME AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , null as DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA, H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDADMISSION = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTADMISSIONJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B ,  CAPADMISSION C , GLBPATIENT D, GLBPERSON E , GLBPROFESSIONAL G , GLBPERSON H, I.GLBPROFSKILL, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDADMISSION = C.ID"

                                    + " AND C.IDPATIENT = D.ID"

                                    + " AND D.IDPERSON = E.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                                                   + " AND H.ID IN ( SELECT IDPROFESSIONAL FROM GLBHPROVXPROF WHERE IDHEALTHPROVIDER = " +  strMULTIFILIAL + ")   " 

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " " + strFiltroSCPROFSKILL

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTADMISSIONJOB ";

 

 

 

            }

 

           

 

            // (3) Término

            // Multi Filial - Home Care

            // KEYINDEX = 101         

            // -----------------------

 

}

 

 

 

// ==========================================================================================================

 

if ( !strMULTIFILIAL.equals("0") && strHOSPICE.equals("1")  ) {

 

            // (4) Inicio

            // Multi Filial ? Hospice

            // KEYINDEX = 102

            // -----------------------

 

           

 

           

 

            if (strSCPROFSKILL.equals("-")) {

            // FILTRO POR QUALIFICACAO PROFISSIONAL INATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

                        strKeyindex = "102";

 

 

 

 

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND ,NULL AS IDADMISSION , NULL AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , C.NAME AS DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA,H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDDEPARTMENT = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTDEPARTMENTJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B , GLBDEPARTMENT C , GLBPROFESSIONAL G , GLBPERSON H, SCCCODE K "

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDDEPARTMENT = C.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                                                   + " AND H.ID IN ( SELECT IDPROFESSIONAL FROM GLBHPROVXPROF WHERE IDHEALTHPROVIDER = " +  strMULTIFILIAL + ")   " 

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTDEPARTMENTJOB ";

 

 

 

 

 

 

 

            } else {

 

            // FILTRO POR QUALIFICACAO PROFISSIONAL ATIVO

 

                        // Prepara filtro por SCHEDULETYPE

                        // -------------------------------

 

 

 

                        if (strSCHEDULETYPE.equals("-")) {

                                    strFiltroSCHEDULETYPE = "";

                        } else {

                                    strFiltroSCHEDULETYPE = "AND G.SCHEDULETYPE = " + strSCHEDULETYPE;

                        }

 

 

 

                        // Prepara filtro por PERIODPOLICY

                        // -------------------------------

 

                        if (strPERIODPOLICY.equals("-")) {

                                    strFiltroPERIODPOLICY = "";

                        } else {

                                    strFiltroPERIODPOLICY = "AND G.PERIODPOLICY = " + strPERIODPOLICY;

                        }

 

 

 

                        // Prepara filtro por SCPROFSKILL

                        // -------------------------------

 

                        if (strSCPROFSKILL.equals("-")) {

                                    strFiltroSCPROFSKILL = "";

                        } else {

                                    strFiltroSCPROFSKILL = "AND G.IDPERSON = I.IDPROFESSIONAL AND I.SCPROFSKILL = " + strSCPROFSKILL;

                        }

 

 

 

                        // Valora strKeyindex

                        // ------------------

 

                        strKeyindex = "102";

 

                        SqlCommand = "SELECT A.ID AS IDSHIFTITEM, A.PROGRAMMEDSTART, A.PROGRAMMEDEND ,NULL AS IDADMISSION , NULL AS PATIENTNAME, B.INSTRUCTIONS AS SCALEINSTRUCTIONS , C.NAME AS DEPARTMENTNAME , "

                                    + " H.NAME AS PROFFOLGISTA , H.ID AS IDPROFFOLGISTA, H.ID AS IDPROFNEW, H.GENDER AS GENDERPROFFOLGISTA, H.RELIGION AS RELIGIONPROFFOLGISTA, H.RACE AS RACEFOLGISTA,"

                                    + " G.SCHEDULETYPE AS SCHEDULETYPEPROFFOLGISTA, cast(TRUNC(SYSDATE - H.BIRTHDAY)/354 as real) AS AGEPROFFOLGISTA ,"

                                    + " ( SELECT MAX(PROGRAMMEDSTART)"

                                    + "    FROM CAPSHIFTITEM A1 , CAPSHIFT B1"

                                    + "    WHERE"

                                    + "      A1.IDSHIFT = B1.ID"

                                    + "      AND B1.IDDEPARTMENT = C.ID"

                                    + "      AND A1.IDPROFESSIONAL = G.IDPERSON"

                                    + " ) AS LASTDEPARTMENTJOB"

                                    + " , CAST ("

                                    + "      ( SELECT CAST((CASE RESTPROVISION"

                                    + "         WHEN 0 THEN CAST('-1' AS NUMBER(9,0))"

                                    + "         WHEN 1 THEN CAST(' -6697729' AS NUMBER(9,0))"

                                    + "         ELSE CAST('-1' AS NUMBER(9,0))"

                                    + "         END) AS NUMBER(9,0))"

                                    + "        FROM GLBPROFSHIFTAGENDA Z"

                                    + "        WHERE"

                                    + "          Z.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "          AND Z.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "       )"

                                    + "  AS NUMBER(9,0) ) AS RESTPROVCOLOR"

                                    + " , CAST ("

                                    + "      ( SELECT Y.RESTDAY"

                                    + "        FROM GLBPROFSHIFTAGENDA Y"

                                    + "        WHERE"

                                    + "         Y.CURRENTDATE = TRUNC(A.PROGRAMMEDSTART )"

                                    + "         AND Y.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + "      )"

                                    + "  AS NUMBER(9,0)) AS  RESTDAY"

                                    + " FROM CAPSHIFTITEM A , CAPSHIFT B , GLBDEPARTMENT C , GLBPROFESSIONAL G , GLBPERSON H, I.GLBPROFSKILL, SCCCODE K"

                                    + " WHERE"

                                    + " TRUNC(A.PROGRAMMEDSTART) IN (" + strDISTINCTDAYS + ")"

                                    + " AND A.IDPROFESSIONAL = " + strIDPROFESSIONAL

                                    + " AND A.IDSHIFT = B.ID"

                                    + " AND B.IDDEPARTMENT = C.ID"

                                    + " " + strFiltroSCHEDULETYPE

                                    + " " + strFiltroPERIODPOLICY

                                    + " AND G.IDPERSON <> " + strIDPROFESSIONAL

                                    + " AND G.IDPERSON = H.ID"

                                                                   + " AND K.ID = G.SCSPECIALITY "

                                                                   + " AND UPPER(K.CODENAME) LIKE 'TEC%ENF%' "

                                                                   + " AND H.ID IN ( SELECT IDPROFESSIONAL FROM GLBHPROVXPROF WHERE IDHEALTHPROVIDER = " +  strMULTIFILIAL + ")   "             

                                    + " AND G.IDPERSON NOT IN ("

                                    + "   SELECT Z.IDPROFESSIONAL FROM CAPSHIFTITEM Z"

                                    + "   WHERE"

                                    + "     Z.PROGRAMMEDSTART = A.PROGRAMMEDSTART"

                                    + "     AND  Z.PROGRAMMEDEND = A.PROGRAMMEDEND"

                                    + "        AND Z.IDPROFESSIONAL IS NOT NULL"

                                    + "   )"

                                    + " " + strFiltroSCPROFSKILL

                                    + " ORDER BY A.PROGRAMMEDSTART, A.ID, LASTDEPARTMENTJOB ";

 

            }

 

            // (4) Término

            // Multi Filial ? Hospice

            // KEYINDEX = 102

            // -----------------------

 

}

 

// SETA VALORES DE "CMD" e "KEYINDEX"

 

SqlCommand = SqlCommand_before + SqlCommand;

rParam.getField("CMD").setValue(SqlCommand);

rParam.getField("KEYINDEX").setValue(new Integer(strKeyindex));

 

return ;