Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
titleDefinição da temp-table e de-para dos campos para o segmento AC1006DAC1008D
linenumberstrue
{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-erro-sistemapacote as char
    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).

caseassign nrin-ver-tra-imp:
prox-pos    when "22" then assign in-prox-pos = 3399. 
    when "24" then assign = 554.

if nr-ver-tra-imp = "04" 
then in-prox-pos = 3393. 
    when "25" then assign in-prox-pos = 3409551.
end case.
 
repeat:            
 
repeat:                                                                        
    case nr-ver-tra-imp:
        when "22" or when "25" then
    assign in-prox-pos = in-prox-pos + 29.
    
    create tmp-servicos-req.
    /*     Campo da temp                              
 *//* Posição que a informação estava no segmento *//* when "24" then assign in-prox-pos = in-prox-pos + 35.Descrição */
    assign tmp-servicos-req.tp-servico                   = substr(segmento-req-par,in-prox-pos + 01, 1)  //I - Insumos, P - Procedimentos e A                  - Pacote
    end case.
    
    create tmp-servicos-req.
tp-insumo    /*     Campo da temp         = substr(segmento-req-par,in-prox-pos +                    *//* Posição que a informação estava no segmento *//* Descrição */
    assign 02, 2)  //Tipo insumo
           tmp-servicos-req.tpqt-servico                   = substr(segmento-req-par,in-prox-pos + 0112,5) 1)  //IQuantidade inteira -do Insumos, P - Procedimentos e A - Pacoteserviço (Ex: Qtd: 12,5, este campo fica 12)
           tmp-servicos-req.tpqt-servico-insumodec                    = substr(segmento-req-par,in-prox-pos + 0217,3) 2)  //Tipo insumoQuantidade fracionada do serviço (Ex: Qtd: 12,5, este campo fica 5)
           tmp-servicos-req.qtcd-servico                   = substr(segmento-req-par,in-prox-pos + 1204,5 8)   //QuantidadeCódigo inteira do serviço (Ex: Qtd: 12,5, este campo fica 12)
           tmp-servicos-req.qt-servico-dec     , 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.
          = substr(segmento tmp-servicos-req.vl-servico                   = substr(segmento-req-par,in-prox-pos + 1720,314)   //QuantidadeValor fracionada do serviço informado em tela sem a virgula (Ex: Qtd:Valor 12100,510, este campo fica 510010)
           tmp-servicos-req.cd-prest-servicoexec                   = substr(segmento-req-par,in-prox-pos + 0449, 815)  //CódigoUnidade do prestador serviço,exec 8(4 dígitos) para+ procedimentoscódigo oudo pacotesprestador eexec 10(8 dígitos) para+ insumos.código Noespecialidade casodo deprestador 10 dígitos é possível dar um assign no campo com os 10 dígitos.exec (3 dígitos)
           tmp-servicos-req.cdnm-tipo-percentualprof-exec                 = substr(segmento-req-par,in-prox-pos + 3477,270)   //45-Fator Red/AcrNome do profissional pf executante
           tmp-servicos-req.vlcons-prof-servicocompl                   = substr(segmento-req-par,in-prox-pos + 20208,145)  //ValorSigla do serviçoconselho informadodo emprofissional telapf semexecutante
 a virgula (Ex: Valor 100,10, este campo fica 10010)
           tmp-servicos  tmp-servicos-req.cdnum-prestcons-exec compl               = substr(segmento-req-par,in-prox-pos + 51147,15)  //UnidadeNumero do prestador exec (4 dígitos) + código conselho do prestadorprofissional execpf (8executante
 dígitos) + código especialidade do prestador exec (3 dígitos)
  tmp-servicos-req.uf-compl         tmp-servicos-req.cd-prest-divisao             = substr(segmento-req-par,in-prox-pos + 36162,152)  //UnidadeNumero do prestadorconselho divisãodo (4profissional dígitos)pf +executante
 código do prestador divisão (8 dígitos) + código especialidade do prestador divisão (3 dígitos)
           tmp-servicos-req.cd-graucbos-partcompl                 = substr(segmento-req-par,in-prox-pos + 152164,27)  //Grau de participaçãoCBOS do membroprofissional depf equipeexecutante
           tmp-servicos-req.cd-via-acessohr-inicial                   = substr(segmento-req-par,in-prox-pos + 14973,24)  //Via de acessoHora inicial do registro (Ex: 12:57, este campo fica 1257)
           tmp-servicos-req.cdhr-tecnicafinal                     = substr(segmento-req-par,in-prox-pos + 15173,14)  //TécnicaHora utilizada
final do registro (Ex: 12:57, este campo fica 1257)
           tmp-servicos-req.nm-prof-exec dt-realizacao                = substr(segmento-req-par,in-prox-pos + 6765,708)  //NomeData do profissional pf executante registro (Ex: 25/05/2021, este campo fica 25052021)
           tmp-servicos-req.cons-prof-compltp-comb                      = substr(segmento-req-par,in-prox-pos + 154212,76)  //SiglaTipo doda conselhocombinação do profissional pf executantenão permitida
           tmp-servicos-req.numtp-consdente-compl regiao              = substr(segmento-req-par,in-prox-pos + 161171,154)  //NumeroTipo dode conselhodente do profissional pf executanteregiao 
    	       tmp-servicos-req.uf-complqt-us                        = substr(segmento-req-par,in-prox-pos + 176200,27)  //Numero do conselho do profissional pf executante
Qt us
		           tmp-servicos-req.cdid-cbosface-compldente                = substr(segmento-req-par,in-prox-pos + 178175,725) . //CBOSId do profissional pf executanteface dente


    assign in-prox-pos =     tmp-servicos-req.nr-cpf-compl            in-prox-pos + 219. 
end.

//Retorno
if  length (LinhaDeVolta-par) < 225
then leave.

assign in-prox-pos-aux = 225.

repeat:
     = /*create tmp-retorno-serv.
   Não era passado por segmentoassign tmp-retorno-serv.id-autoriza     = substr(LinhaDeVolta-par,in-prox-pos-aux , 1)    */  //CpfStatus do conselho do profissional pf executanteregistro
           tmp-servicosretorno-reqserv.hr-inicial            in-servico       = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 1451,4 1)  //HoraI inicial do registro (Ex: 12:57- Insumos, esteP campo fica 1257)- Procedimentos
           tmp-servicosretorno-reqserv.hrtp-finalservico                     = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 1453,42)   //Hora final do registro (Ex: 12:57, este campo fica 1257)Tipo insumo
           tmp-servicosretorno-reqserv.dt-realizacao    cd-servico            = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 1415, 8)  //Data do registro (Ex: 25/05/2021, este campo fica 25052021)Serviço, é retornado com 8 ou 10 dígitos dependendo do tipo
           tmp-servicosretorno-reqserv.cdqt-ser-variacaoper                  = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 18913,48)  //Código da variação do procedimentoQuantidade do serviço (Ex: Qtd: 12,5, este campo fica 12500)
           tmp-servicosretorno-reqserv.cr-solicitacao vl-part-cob              = substr(segmento-reqLinhaDeVolta-par,in-prox-pos-aux + 6621,114)   //CaráterValor da solicitação
participação no prestador (Ex: 100,15, este campo fica com 10015)
  tmp-servicos-req.tp-comb            tmp-retorno-serv.cd-pacote          = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 19335,68)  //Tipo da combinação não permitida
Codigo do pacote

           assign in-prox-pos-aux = /*tmpin-servicosprox-req.dspos-servicoaux + 56.                 =   Apenas versão >= 12.1.33               */  //Descrição do insumo genérico realizado, utilizado para controlar a quantidade utilizada corretamente (mov-insu.char-21, insuusos.char-21, insuguia.char-4)

    if   nr-ver-tra-imp = "22" or nr-ver-tra-imp = "24" or nr-ver-tra-imp = "25"
    then assign in-prox-pos = in-prox-pos + 165. 
end.

//Retorno
if   length (LinhaDeVolta-par) < 174
then leave.

assign in-prox-pos-aux = 174.

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-erro-sistema = substr(LinhaDeVolta-par,in-prox-pos-aux + 35, 4) //Mensagem de erro no sistema
           tmp-retorno-serv.cd-pacote       = substr(LinhaDeVolta-par,in-prox-pos-aux + 47, 8).//Código do pacote do procedimento ou insumo
   
           assign in-prox-pos-aux = in-prox-pos-aux + 56.                                                                                
end.                           
         

Após deve ser feito a chamada para o AC1006D passando os paramento conforme definição a seguir.


Após deve ser feito a chamada para o AC1008D passando os paramento conforme definição a seguir.

Bloco de código
titleParâmetros AC1008D
/*01*/
Bloco de código
titleParâmetros AC1006D
/*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 idlg-mens-aplicativotela-par     as log        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) */
/*0802*/def definput output param cdlg-errosimulacao-sistema-par            as log char                     no-undo.
/*0903*/ def input  param lg-trata-comb-nao-perm-wac-par as int   r-maquclin-par       as recid                    no-undo.
/*1004*/def definput output param dsin-errotipo-sistemaproces-ptu-par        as char format  init ""x(01)"           no-undo.
/*1105*/def definput output param dssegmento-erro-comb-nao-perm-req-par      as char format "x(8000)"    no-undo. /* Segmento com os dados do documento (sem o      no-undo. serviço) */
/*1206*/ def input  param table for tmp-servicos-req. /* Solicitação de serviços, substitui parte do segmento */
/*13*/ id-aplicativo-par    like paramint.id-aplicativo no-undo.
/*07*/def output param table for tmp-docusos.segmento-res-par  /* Retorno temp igualas achar docusos para acesso em caso de simulação */
/*14*/ def output param table for tmp-procusosformat "x(8000)"    no-undo. /* RetornoSegmento tempcom igual aretorno procusosdos paradados acessodo emdocumento caso(sem deo simulaçãoserviço) */
/*1508*/ def output param table for tmp-insuusos. /* Retorno temp igual a insuusos para acesso em caso de simulação */
/*16*/ def output param table for tmp-retorno-serv. /* Retorno do resultado do registro por movimento */ cd-erro-sistema-par  as char                     no-undo.
/*09*/def  input param lg-trata-comb-nao-perm-wac-par as int            no-undo.