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
|
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 ; |