Histórico da Página
Carteira e Tipo de
Carteirinhaplanos
Características do Requisito
Linha de Produto: | Microsiga Protheus | |||||||
Segmento: | Saúde | |||||||
Módulo: | Plano de Saúde | |||||||
Rotina: |
| |||||||
Ponto de Entrada: | PIMRN360PLRRN360. | |||||||
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 Implementação de melhoria para impressão da carteirinha em papel via remote ou pelo portal do beneficiáriovisualização e impressão da carteira, bem como apresentação de informações sobre diferença entre tipos de planos conforme determinação da ANS.
Procedimento para
UtilizaçãoNesta rotina foi disponibilizado o Ponto de Entrada (PIMRN360), onde o cliente pode configurar o layout do cartão conforme sua preferência.
Para impressão via remote:
- Acesse o menu /Atualizações/Cartão Identific./Lotes de Cartão (PLSA262)
- Informe os parâmetros solicitados e click em exportar. Obs.: Tipo Geração = Impressão
3. Click no botão Confirmar e confirmar a tela com Sim a tela abaixo.
4. Selecione a impressora e click em OK.
Para Impressão via Porta do Beneficiário.
- Acesse o menu /Principal/ Imprimir Carteirinha.
- Informe os parâmetros solicitados.
- Click em Confirmar para a impressão.
Configuração
CONFIGURAÇÃO DE PARÂMETROS
- 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 o nome do arquivo da frente do cartão |
Nome da Variável | Descriçã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ável | Descrição |
---|---|
Nome: | MV_LRN360 |
Tipo: | Caracter |
Cont. Por.: | Informar o link referente a normativa RN-360 e/ou RN-379 |
Descrição: | URL do site |
Procedimento para Utilização
- Para impressão 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 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: http://www.ans.gov.br/images/stories/Legislacao/rn/RN_379anexo.pdf.
- Para impressão via remote:
- Acesse o menu Atualizações/Cartão Identific./Lotes de Cartão (PLSA262).
- Informe os parâmetros solicitados e click em Exportar.
- Observação: Tipo Geração = Impressão.
- Clique em Confirmar e clique em "Sim" conforme a tela abaixo.
- Selecione a impressora e clique em OK.
- Abaixo a imagem com a impressão das informação do arquivo de fundo frente e verso.
- 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.
- Acesse o menu Principal/Carteirinha.
- Informe os parâmetros solicitados.
Clique em Tipos de Planos, o sistema e redirecionará para URL informada no parâmetro (MV_LRN360).
Essa opção é exibida quando o parâmetro for criado e conter conteúdo.
- Clique em Confirmar para a impressão.
- Abaixo a imagem com a impressão com informação do arquivo de fundo frente e verso.
- Abaixo a imagem com a impressão sem informação do arquivo de fundo frente e verso.
- Redirecionamento ao clicar em Tipo de Planos.
- Sem o parâmetro ou com conteúdo em branco na opção Tipo de Planos não é 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: | Impressão de carteirinhaCarteirinha | ||||||||||||||||
Programa Fonte: | PIMRN360PLRRN360 | ||||||||||||||||
Função: | Plano de Saúde | ||||||||||||||||
Retorno: |
|
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} PIMRN360PLRRN360
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 PIMRN360PLRRN360()
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 nWeb cFileName := 0''
local nTweb cMsg := 1''
local nLweb cFileLogo := 0
local nLwebC := 0
local cFileLogo := ''
Local cStartPath:= GetSrvProfString("STARTPATH","")
local cImgFrente:= cStartPath + "\" + getNewPar("MV_PLSRELOPLSFRE", "frente.png")
local cFileName := ''
local cMsg := ''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((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 + nColMax)/nTweb)
nColA4 := -0335
//titulo
oPrint:Say(0010)/nTweb, (nLinIni + 0080191)/nTweb, ( (nColIni + nColMax)*0.47)/nTweb, "Carteirinha", oFont05n,,,, 2)
fSomaLin(nLinMax, nColMax, @nLinIni, nColIni, 60110, 80)
//FRENTE
if file(cImgFrente)
//linha abaixo do titulo
AddTBrush(oPrint, 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 } )