Histórico da Página
Devido a adequação da quantidade de dígitos dos insumos para 10 dígitos foi alterado o segmento de envio de serviços ao à rotina AC1006D.
O código foi alterado para receber os dados do serviços através de uma temp table tabela temporária e retornar uma temp table uma tabela temporária para facilitar as alterações no envio e recebimento tráfego de dados pelo AC1006D.
Será Para o funcionamento correto, será necessário adaptar programas específicos que realizam a chamada do AC1006Ddesta rotina (acp/ac1006d.p).
Segue a baixo a definição da temp-table e conversão do segmento para temp-table. . Esta definição das tabelas temporárias é apenas informativa dos campos disponíveis, nas rotinas específicas deverá ser utilizado a include "{acp/ac1006d.i}"
Na prática, o cliente deverá substituir a criação do segmento pela criação da temp tmp-servicos-req, atribuindo os valores do segmento nas respectivas posições da temp conforme exemplo a seguir.
...
Programas AC1000D até AC1000Z, ACURASERIOUS e ACURASIEMENS - Não foi passado os parâmetros novos pois os fontes foram considerados descontinuados.
AC1008D
Para o funcionamento correto, será necessário adaptar programas específicos que realizam a chamada desta rotina (acp/ac1008d.p).
Segue a baixo a definição da temp-table e conversão do segmento para temp-table. Esta definição das tabelas temporárias é apenas informativa dos campos disponíveis, nas rotinas específicas deverá ser utilizado a include "{acp/ac1008d.i}"
Na prática, o cliente deverá substituir a criação do segmento pela criação da temp tmp-servicos-req, atribuindo os valores do segmento nas respectivas posições da temp conforme exemplo a seguir.
Bloco de código | ||||
---|---|---|---|---|
| ||||
{acp/ac1008d.i}
/*
def temp-table tmp-servicos-req no-undo
field in-ordem as int /* Não utilizado */
field tp-servico as char format "x(12)"
field tp-insumo as char format "99"
field qt-servico as char format "999"
field qt-servico-dec as char format "999"
field cd-servico as char format "99999999"
field cd-tipo-percentual as char format "99"
field vl-servico as char format "x(9)"
field cd-prest-exec as char format "x(15)"
field cd-prest-divisao as char format "x(15)"
field cd-grau-part as char format "x(2)"
field cd-via-acesso as char
field cd-tecnica as char
field cd-servico-generico as char format "99999999"
field nm-prof-exec as char format "x(70)"
field cons-prof-compl as char
field num-cons-compl as char
field uf-compl as char
field cd-cbos-compl as char
field nr-cpf-compl as char
field hr-inicial as char
field hr-final as char
field dt-realizacao as date
field cd-variacao as int
field cd-servico-principal-pacote as char /* Serviço principal utilizado no pacote, caso deseje utilizar um procedimento alternativo ao invés do principal */
field cr-solicitacao as char /* U - Urgência E - Eletivo */
field cd-unid-medida as char /* Removido na 12.1.33 */
field tp-comb as char
field tp-dente-regiao as char
field qt-us as dec
field id-face-dente as char format "x(25)".
def temp-table tmp-retorno-serv no-undo
field id-autoriza as char
field in-servico as char
field tp-servico as char
field cd-servico as int64
field qt-ser-per as dec
field vl-part-cob as dec
field cd-pacote as char.
*/
def var in-prox-pos as int no-undo.
def var nr-ver-tra-imp as char no-undo.
def var segmento-req-par as char no-undo.
assign nr-ver-tra-imp = substr(segmento-req-par, 81, 2).
assign in-prox-pos = 554.
if nr-ver-tra-imp = "04"
then in-prox-pos = 551.
repeat:
assign in-prox-pos = in-prox-pos + 29.
create tmp-servicos-req.
/* Campo da temp *//* Posição que a informação estava no segmento *//* Descrição */
assign tmp-servicos-req.tp-servico = substr(segmento-req-par,in-prox-pos + 01, 1) //I - Insumos, P - Procedimentos e A - Pacote
tmp-servicos-req.tp-insumo = substr(segmento-req-par,in-prox-pos + 02, 2) //Tipo insumo
tmp-servicos-req.qt-servico = substr(segmento-req-par,in-prox-pos + 12,5) //Quantidade inteira do serviço (Ex: Qtd: 12,5, este campo fica 12)
tmp-servicos-req.qt-servico-dec = substr(segmento-req-par,in-prox-pos + 17,3) //Quantidade fracionada do serviço (Ex: Qtd: 12,5, este campo fica 5)
tmp-servicos-req.cd-servico = substr(segmento-req-par,in-prox-pos + 04, 8) //Código do serviço, 8 dígitos para procedimentos ou pacotes e 10 dígitos para insumos. No caso de 10 dígitos é possível dar um assign no campo com os 10 dígitos.
tmp-servicos-req.vl-servico = substr(segmento-req-par,in-prox-pos + 20,14) //Valor do serviço informado em tela sem a virgula (Ex: Valor 100,10, este campo fica 10010)
tmp-servicos-req.cd-prest-exec = substr(segmento-req-par,in-prox-pos + 49,15) //Unidade do prestador exec (4 dígitos) + código do prestador exec (8 dígitos) + código especialidade do prestador exec (3 dígitos)
tmp-servicos-req.nm-prof-exec = substr(segmento-req-par,in-prox-pos + 77,70) //Nome do profissional pf executante
tmp-servicos-req.cons-prof-compl = substr(segmento-req-par,in-prox-pos + 208,5) //Sigla do conselho do profissional pf executante
tmp-servicos-req.num-cons-compl = substr(segmento-req-par,in-prox-pos + 147,15) //Numero do conselho do profissional pf executante
tmp-servicos-req.uf-compl = substr(segmento-req-par,in-prox-pos + 162,2) //Numero do conselho do profissional pf executante
tmp-servicos-req.cd-cbos-compl = substr(segmento-req-par,in-prox-pos + 164,7) //CBOS do profissional pf executante
tmp-servicos-req.hr-inicial = substr(segmento-req-par,in-prox-pos + 73,4) //Hora inicial do registro (Ex: 12:57, este campo fica 1257)
tmp-servicos-req.hr-final = substr(segmento-req-par,in-prox-pos + 73,4) //Hora final do registro (Ex: 12:57, este campo fica 1257)
tmp-servicos-req.dt-realizacao = substr(segmento-req-par,in-prox-pos + 65,8) //Data do registro (Ex: 25/05/2021, este campo fica 25052021)
tmp-servicos-req.tp-comb = substr(segmento-req-par,in-prox-pos + 212,6) //Tipo da combinação não permitida
tmp-servicos-req.tp-dente-regiao = substr(segmento-req-par,in-prox-pos + 171,4) //Tipo de dente regiao
tmp-servicos-req.qt-us = substr(segmento-req-par,in-prox-pos + 200,7) //Qt us
tmp-servicos-req.id-face-dente = substr(segmento-req-par,in-prox-pos + 175,25). //Id face dente
assign in-prox-pos = in-prox-pos + 219.
end.
//Retorno
if length (LinhaDeVolta-par) < 225
then leave.
assign in-prox-pos-aux = 225.
repeat:
create tmp-retorno-serv.
assign tmp-retorno-serv.id-autoriza = substr(LinhaDeVolta-par,in-prox-pos-aux , 1) //Status do registro
tmp-retorno-serv.in-servico = substr(LinhaDeVolta-par,in-prox-pos-aux + 1, 1) //I - Insumos, P - Procedimentos
tmp-retorno-serv.tp-servico = substr(LinhaDeVolta-par,in-prox-pos-aux + 3,2) //Tipo insumo
tmp-retorno-serv.cd-servico = substr(LinhaDeVolta-par,in-prox-pos-aux + 5, 8) //Serviço, é retornado com 8 ou 10 dígitos dependendo do tipo
tmp-retorno-serv.qt-ser-per = substr(LinhaDeVolta-par,in-prox-pos-aux + 13,8) //Quantidade do serviço (Ex: Qtd: 12,5, este campo fica 12500)
tmp-retorno-serv.vl-part-cob = substr(LinhaDeVolta-par,in-prox-pos-aux + 21,14) //Valor da participação no prestador (Ex: 100,15, este campo fica com 10015)
tmp-retorno-serv.cd-pacote = substr(LinhaDeVolta-par,in-prox-pos-aux + 35,8) //Codigo do pacote
assign in-prox-pos-aux = in-prox-pos-aux + 56.
end.
|
Após deve ser feito a chamada para o AC1008D passando os paramento conforme definição a seguir.
Bloco de código | ||
---|---|---|
| ||
/*01*/def input param lg-mens-tela-par as log no-undo. /*02*/def input param lg-simulacao-par as log no-undo. /*03*/def input param r-maquclin-par as recid no-undo. /*04*/def input param in-tipo-proces-par as char format "x(01)" no-undo. /*05*/def input param segmento-req-par as char format "x(8000)" no-undo. /* Segmento com os dados do documento (sem o serviço) */ /*06*/def input param id-aplicativo-par like paramint.id-aplicativo no-undo. /*07*/def output param segmento-res-par as char format "x(8000)" no-undo. /* Segmento com retorno dos dados do documento (sem o serviço) */ /*08*/def output param cd-erro-sistema-par as char no-undo. /*09*/def input param lg-trata-comb-nao-perm-wac-par as int no-undo. |