Árvore de páginas

Versões comparadas

Chave

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

Carteirinha e Tipo de

Carteirinha

planos

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Saúde

Módulo:

Plano de Saúde

Rotina:

Rotina

Nome Técnico

PLSA262

Geração de Lote de Cartão

PPLCHAMCBImprime Carteirinha e Mostra Tipo de Planos

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:11.80
Versão Expedida:11.80

Descrição

Implementado melhoria para visualização e impressão da carteirinha em papel via remote ou pelo portal do beneficiáriobem como exibi informações sobre diferença entre tipos de planos conforme determinação da ANS.

 

Procedimento para Utilização

Nesta rotina foi disponibilizado o Ponto de Entrada (PLRRN360), onde o cliente pode configurar o layout do cartão conforme sua preferência.  

Para impressão via remote:

  1. Acesse o menu /Atualizações/Cartão Identific./Lotes de Cartão (PLSA262)
  2. Informe os parâmetros solicitados e click em exportar.  Obs.: Tipo Geração = Impressão

Image Removed

3. Click no botão Confirmar e confirmar a tela com Sim a tela abaixo.

Image Removed

4. Selecione a impressora e click em OK.

Image Removed

Image Removed

Para Impressão via Porta do Beneficiário.

  1.  Acesse o menu /Principal/ Imprimir Carteirinha.
  2. Informe os parâmetros solicitados.
    Image Removed
  3. Click em Confirmar para a impressão.

Image Removed

Image Removed

 

 

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 STARTPATH 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 é 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.: http://www.ans.gov.br/images/stories/Legislacao/rn/RN_379anexo.pdf.

Para impressão via remote:

  1. Acesse o menu /Atualizações/Cartão Identific./Lotes de Cartão (PLSA262)
  2. Informe os parâmetros solicitados e click em exportar.  Obs.: Tipo Geração = Impressão

Image Added

3. Click no botão Confirmar e confirmar a tela com Sim a tela abaixo.

Image Added

4. Selecione a impressora e click em OK.

Image Added

Impressão com informação do arquivo de fundo frente e verso. 

Image Added

Impressão sem informação do arquivo de fundo frente e verso.

Image Added

Para Impressão via Porta do Beneficiário.

  1.  Acesse o menu /Principal/Carteirinha.
  2. Informe os parâmetros solicitados.
    Image Added
  3. Clicando no link Tipos de Planos e redirecionado para URL informada no parâmetro (MV_LRN360). Esta opção só aparece quando o parâmetro for criado e tiver conteúdo.

  4. Click em Confirmar para a impressão.

Image Added

Impressão com informação do arquivo de fundo frente e verso.

Image Added

Impressão sem informação do arquivo de fundo frente e verso.

Image Added

Redirecionamento ao clicar no Link tipo de planos.

Image Added

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

Image Added

 

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:

Impressão de carteirinhaCarteirinha

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 := '':= 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:boxbox((nLinIni + 0000)/nTweb, (nColIni + 0000)/nTweb, (nLinIni + nLinMax)/nTweb, (nColIni + nColMax)/nTweb)

nColA4 := -0335

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

//linha abaixo do titulo
AddTBrush(oPrint, (nLinIni + 190)/nTweb, (nColIni + 0010)/nTweb, (nLinIni + 191)/nTweb, ( (nColIni + nColMax)*0.47)/nTweb, "Carteirinha", oFont05n,,,, 2)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 60110, 80)

//linha abaixo do titulo
AddTBrush(oPrint, FRENTE

if file(cImgFrente)
//imagem de fundo da frente do cartao
oPrint:SayBitmap((nLinIni + 190110)/nTweb, (nColIni + 0010230)/nTweb, cImgFrente, (nLinIni + 1911200)/nTweb, (nColIni + nColMax600)/nTweb)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 110, 80) 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), @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)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//11 - padrao de acomodacao
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 300600)/nTweb, aDados[nX,11], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50, 80)

//12 - tipo de contratacao
oPrint:Say((nLinIni + 195)/nTweb, (nColIni + 3001000)/nTweb, aDados[nX,12], oFont02)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 50165, 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 } )

...