Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Carteirinha

Carteira e Tipo de planos

Características do Requisito

11.80

Linha de Produto:

Microsiga Protheus

Segmento:

Saúde

Módulo:

Plano de Saúde

Rotina:

PLSA262PPLCHAMCB

Rotina

Nome Técnico

Geração de Lote de Cartão

PLSA262

Imprime Carteirinha e Mostra Tipo de PlanosPPLCHAMCB

Ponto de Entrada:

PLRRN360.

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

BA1 - Beneficiarios

Sistema(s) Operacional(is):

Todos

Versões/Release:

11.80

Versão Corrigida:

Versão Expedida:11.80


Descrição

Implementado Implementação de melhoria para visualização e impressão da carteirinha carteira, bem como exibi apresentação de informações sobre diferença entre tipos de planos conforme determinação da ANS.

 

 

Procedimento para Configuração

 

CONFIGURAÇÃO DE PARÂMETROS 

  1. No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017). Crie o(s) parâmetro(s) a seguir:

Nome da Variável

Descrição

Nome:

MV_PLSFRE

Tipo:

Caracter

Cont. Por.:

frente.png

Descrição:

 Informar Informar o nome do arquivo da frente do cartão

Nome da VariávelDescrição
Nome:MV_PLSVER
Tipo:Caracter
Cont. Por.:verso.png
Descrição:Informar o nome do arquivo de verso do cartão
Nome da VariávelDescrição
Nome:

MV_LRN360

Tipo:Caracter
Cont. Por.:

Informe Informar o link referente a normativa RN-360 e/ou RN-379

Descrição:

URL do site

Procedimento para Utilização

  • Para impressão
da
  • frente e verso é necessário informar o nome do arquivo e extensão nos parâmetros MV_PLSFRE (Frente) e MV_PLSVER (Verso).
  • Os arquivos devem estar localizados
na
  • na STARTPATH
do
  •  do servidor.
  • No portal existe a opção tipo de planos para atender a normativa RN-379 que ajusta a RN-360.
  • Para o link
aparecer
  • ser exibido é necessário informar a URL no parâmetro MV_LRN360
.  
  •  (URL para redirecionamento do Anexo I da RN-379).
  • Exemplo URL informada no parâmetro
.
  1. Acesse o menu
  2. /
  3. Atualizações/Cartão Identific./Lotes de Cartão (PLSA262).
  4. Informe os parâmetros solicitados e click em
  5. exportar.  Obs.
  6. Exportar.
  7. Observação: Tipo Geração = Impressão.
    Image Modified
3. Click no botão Confirmar e confirmar a tela com Sim a
  1. Clique em Confirmar e clique em "Sim" conforme a tela abaixo.
    Image Modified
4. 
  1. Selecione a impressora e
click
  1. clique em OK.
    Image Modified
Impressão com
  • Abaixo a imagem com a impressão das informação do arquivo de fundo frente e verso. 

Impressão sem

  • Abaixo a imagem com a impressão sem a informação do arquivo de fundo frente e verso.


Para Impressão via Porta do Beneficiário.

     
  1. Acesse o menu
  2. /
  3. Principal/Carteirinha.
  4. Informe os parâmetros solicitados.
      1. Image Modified
  5. Clicando no link
  6. Clique em Tipos de Planos

  7. e redirecionado
  8. , o sistema e redirecionará para URL informada no parâmetro (MV_LRN360).

  9. Esta opção só aparece
  10.  

  11. Essa opção é exibida quando o parâmetro for criado e

  12. tiver
  13. conter conteúdo.

  14. Click
  15. Clique em Confirmar para a impressão.

Impressão
  • Abaixo a imagem com a impressão com informação do arquivo de fundo frente e verso.

Impressão

  • Abaixo a imagem com a impressão sem informação do arquivo de fundo frente e verso.

  • Redirecionamento ao clicar
no Link tipo de planos
  • em Tipo de Planos.

  • Sem o parâmetro ou com conteúdo em branco
a
  • na opção Tipo de Planos não é
mostrada
  • exibida.

Ponto de Entrada

Descrição:

Permite mudar o formato da impressão da carteirinha.

Localização:

Atualizações/Cartão Identific./Lotes de Cartão ou /Principal/Carteirinha

Eventos:

Carteirinha

Programa Fonte:

PLRRN360

Função:

Plano de Saúde

Retorno:

Nome

Tipo

Descrição

Obrigatório

 cFileName

Caracter

Nome do Arquivo PDF

Sim

 cMsg

Caracter

Mensagem de erro

Sim

 

 

 

 

 

Exemplo: 

#INCLUDE "PROTHEUS.CH"
#INCLUDE "PLSMGER.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "fileio.ch"

#DEFINE IMP_PDF 6
#DEFINE lSrvUnix IsSrvUnix()
//-------------------------------------------------------------------
/*/{Protheus.doc} PLRRN360
Ponto de entrada para impressao de Carteirinha do beneficiário. Regras
definidas na RN-360

@author PLS TEAM
@version P11
@since 15.10.15
/*/
//-------------------------------------------------------------------
user function PLRRN360()
local cMatric := paramixb[1]
local aDados := paramixb[2]
local lWeb := paramixb[3]
local cPathSrv := paramixb[4]
local nLinMax := 0
local nColMax := 0
local nLinIni := 0
local nColIni := 0
local nColA4 := 0
local nX := 0
local nWeb := 0
local nTweb := 1
local nLweb := 0
local nLwebC := 0
local cFileName := ''
local cMsg := ''
local cFileLogo := ''
Local cStartPath:= GetSrvProfString("STARTPATH","")
local cImgFrente:= cStartPath + "\" + getNewPar("MV_PLSFRE", "frente.png")
local cImgVerso := cStartPath + "\" + getNewPar("MV_PLSVER", "verso.png")
local cRel := "carbene"
local lContinua := .t.
local oFont02 := nil
local oFont02n := nil
local oFont03n := nil
local oFont05n := nil
local oPrint := nil
local aRet := {}

cTitulo := "Carteirinha do Beneficiário"

//quando for chamada web aciona a funcao para validacao e busca dos dados a serem impresso (lote de carteirinha)
if lWeb

aRet := PLSA261INC(SubStr(cMatric,1,4),cMatric,getNewPar("MV_PLSMP1V","4"),.t.,,.t.,.t.)

if aRet[1]
aDados := aRet[4]
endIf

endIf

//em montagem ou alteracao do layout do relatorio usar esta matriz
/*aDados := { { replicate('A',30),; //01 - nome do beneficiario
replicate('B',21),; //02 - numero da matricula
replicate('C',10),; //03 - data de ascimento do beneficiario
replicate('D',15),; //04 - numero do cartao naciona de saude CNS
replicate('E',12),; //05 - numero do registro do plano ou do cad. do plano na ans
replicate('F',56),; //06 - segmentacao assistencial do plano
replicate('G',6),; //07 - codigo do registro da operadora na ans
replicate('H',30)+replicate('P',15)+replicate('X',30),; //08 - informacao de contato com a operadora
replicate('I',40)+replicate('P',15)+replicate('X',30),; //09 - informacao de contato com a ans
replicate('J',10),; //10 - data de termino da cobertura parcial temporaria
replicate('L',13),; //11 - padrao de acomodacao
replicate('M',17),; //12 - tipo de contratacao
replicate('N',19),; //13 - area de abrangencia geografica
replicate('O',22),; //14 - nome do produto
replicate('P',60),; //15 - nome fantasia da operadora
replicate('Q',20),; //16 - nome fantasia da administradora de beneficios
replicate('R',40),; //17 - nome da p. juridica contratante do plano coletivo ou emp.
replicate('S',10),; //18 - data de inicio da vigencia do plano
replicate('T',10) } } //19 - informacoes
*/

//verifica se tem registro a ser impresso
if len(aDados) == 0
if !lWeb
msgAlert("Não é possível realizar a impressão!")
else
cMsg := "Não é possível realizar a impressão!"
endIf
lContinua := .f.
endIf

if lContinua
//preparando para impressao
nLinMax := 2275
nColMax := 3270

//estilo de fontes
oFont02 := TFont():New("courier new", 10, 10, , .F., , , , .T., .F.) // Normal
oFont02n:= TFont():New("courier new", 10, 10, , .T., , , , .T., .F.) // Negrito
oFont03n:= TFont():New("courier new", 10, 10, , .F., , , , .T., .F.) // Negrito
oFont05n:= TFont():New("Arial", 20, 20, , .T., , , , .T., .F.) // Negrito

//define o arquivo para impressao
if lWeb
cFileName := cRel+lower(CriaTrab(NIL,.F.))+".pdf"
else
cFileName := cRel+CriaTrab(NIL,.F.)
endIf

//New ( < cFilePrintert >, [ nDevice], [ lAdjustToLegacy], [ cPathInServer], [ lDisabeSetup ], [ lTReport], [ @oPrintSetup], [ cPrinter], [ lServer], [ lPDFAsPNG], [ lRaw], [ lViewPDF] )
nH := PLSAbreSem("PPLSIMPCAR.SMF")
if lWeb
oPrint := FWMSPrinter():New( cFileName,,.f.,cPathSrv,.t.,,@oPrint,,,.f.,.f.)
else
oPrint := FWMSPrinter():New( cFileName,,.f.,cPathSrv,.t.,,,,,.f.,,)
endIf
PLSFechaSem(nH,"PPLSIMPCAR.SMF")

if lSrvUnix
ajusPath(@oPrint)
endIf

oPrint:lServer := lWeb
oPrint:cPathPDF := cPathSrv

nTweb := 3.9
nLweb := 10
nLwebC := -3
nWeb := 25
nColMax := iIf(lWeb,2980,3100)

oPrint:setLandscape()// Modo paisagem
oPrint:setPaperSize(9)// Papél A4

//Device
if lWeb
oPrint:setDevice(IMP_PDF)
else
oPrint:Setup()
if !(oPrint:nModalResult == 1)// Botao cancelar da janela de config. de impressoras.
return
endif
endif

//Carrega e Imprime Logotipo da Empresa
fLogoEmp(@cFileLogo)

//dados a serem impressos
For nX := 1 To Len(aDados)

nLinIni := 080
nColIni := 080
nColA4 := 000

//Inicia uma nova pagina
oPrint:startPage()

//Box Principal
oPrint:box((nLinIni + 0000)/nTweb, (nColIni + 0000)/nTweb, (nLinIni + nLinMax)/nTweb, (nColIni + nColMax)/nTweb)

nColA4 := -0335

//titulo
oPrint:Say((nLinIni + 0080)/nTweb, ((nColIni + nColMax)*0.47)/nTweb, "Carteirinha", oFont05n,,,, 2)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 60, 80)

//linha abaixo do titulo
AddTBrush(oPrint, (nLinIni + 190)/nTweb, (nColIni + 0010)/nTweb, (nLinIni + 191)/nTweb, (nColIni + nColMax)/nTweb)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 110, 80)

//FRENTE

if file(cImgFrente)
//imagem de fundo da frente do cartao
oPrint:SayBitmap((nLinIni + 110)/nTweb, (nColIni + 230)/nTweb, cImgFrente, (1200)/nTweb, (600)/nTweb)
else
//box marcando a frente do cartao
oPrint:box((nLinIni + 145)/nTweb, (nColIni + 280)/nTweb, (nLinIni + 700)/nTweb, (nColIni + 1430)/nTweb)
endIf

//Tem que estar abaixo do RootPath - logomarca
if file(cFilelogo)
//logo
oPrint:SayBitmap((nLinIni + 160)/nTweb, (nColIni + 300)/nTweb, cFileLogo, (155)/nTweb, (090)/nTweb)

//01 - nome do beneficiario
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 500)/nTweb, aDados[nX,1], oFont02n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 55, 80)

//02 - numero da matricula
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 500)/nTweb, aDados[nX,2], oFont02n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//caso nao tenha logo muda a posicao do nome e matricula
else
//01 - nome do beneficiario
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,1], oFont02n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//02 - numero da matricula
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,2], oFont02n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

endIf

//03 - data de ascimento do beneficiario
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,3], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//04 - numero do cartao naciona de saude CNS
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,4], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//05 - numero do registro do plano ou do cad. do plano na ans
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,5], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//06 - segmentacao assistencial do plano
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,6], oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//07 - codigo do registro da operadora na ans
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,7], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//08 - informacao de contato com a operadora
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, allTrim(left(aDados[nX,8],30)) + iif(!empty(allTrim(left(aDados[nX,8],30))),', ','') , oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 30, 80)

oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, allTrim(subStr(aDados[nX,8],31,15)) + iif(!empty(allTrim(subStr(aDados[nX,8],31,15))),' - ','') + allTrim(subStr(aDados[nX,8],46,30)), oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//09 - informacao de contato com a ans
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, allTrim(left(aDados[nX,9],40)) + iif(!empty(allTrim(left(aDados[nX,9],40))),', ',''), oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 30, 80)

oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, allTrim(subStr(aDados[nX,9],41,15)) + iif(!empty(allTrim(subStr(aDados[nX,9],41,15))),' - ','') + allTrim(subStr(aDados[nX,8],56,30)), oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 100, 80)


//VERSO


//indicacao para corte entre frente e versao
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 250)/nTweb, replicate('-',130), oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 100, 80)

if file(cImgVerso)
//imagem de fundo do verso do cartao
oPrint:SayBitmap((nLinIni + 130)/nTweb, (nColIni + 230)/nTweb, cImgVerso, (1200)/nTweb, (600)/nTweb)
else
//box marcando o verso do cartao
oPrint:box((nLinIni + 145)/nTweb, (nColIni + 280)/nTweb, (nLinIni + 700)/nTweb, (nColIni + 1430)/nTweb)
endIf

//10 - data de termino da cobertura parcial temporaria
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,10], oFont02)

//11 - padrao de acomodacao
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 600)/nTweb, aDados[nX,11], oFont02)

//12 - tipo de contratacao
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 1000)/nTweb, aDados[nX,12], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 165, 80)

//13 - area de abrangencia geografica
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[1,13], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//14 - nome do produto
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,14], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//15 - nome fantasia da operadora
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,15], oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//16 - nome fantasia da administradora de beneficios
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,16], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//17 - nome da p. juridica contratante do plano coletivo ou emp.
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,17], oFont03n)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//18 - data de inicio da vigencia do plano
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,18], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//19 - informacoes
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300)/nTweb, aDados[nX,19], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//Finaliza a pagina
oPrint:endPage()
next

//imprime quando web e mostra o preview no remote
if lWeb
oPrint:Print()
else
oPrint:Preview()
endIf
endIf

return( { cFileName, cMsg } )