Á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 AC1006D
linenumberstrue
{acp/ac1006d.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 tp-comb                        as char
    field ds-servico                     as char.

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-sistema 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).

case nr-ver-tra-imp:
    when "22" then assign in-prox-pos = 3399. 
    when "24" then assign in-prox-pos = 3393. 
    when "25" then assign in-prox-pos = 3409.
end case.
 
repeat:                                                                                     
    case nr-ver-tra-imp:
        when "22" or when "25" then assign in-prox-pos = in-prox-pos + 29.                                                  
        when "24" then assign in-prox-pos = in-prox-pos + 35.                                                  
    end case.
    
    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
           tmp-servicos-req.cd-tipo-percentual           = substr(segmento-req-par,in-prox-pos + 34,2)   //45-Fator Red/Acr
           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 + 51,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.cd-prest-divisao             = substr(segmento-req-par,in-prox-pos + 36,15)  //Unidade do prestador divisão (4 dígitos) + código do prestador divisão (8 dígitos) + código especialidade do prestador divisão (3 dígitos)
           tmp-servicos-req.cd-grau-part                 = substr(segmento-req-par,in-prox-pos + 152,2)  //Grau de participação do membro de equipe
           tmp-servicos-req.cd-via-acesso                = substr(segmento-req-par,in-prox-pos + 149,2)  //Via de acesso
           tmp-servicos-req.cd-tecnica                   = substr(segmento-req-par,in-prox-pos + 151,1)  //Técnica utilizada
           tmp-servicos-req.nm-prof-exec                 = substr(segmento-req-par,in-prox-pos + 67,70)  //Nome do profissional pf executante
           tmp-servicos-req.cons-prof-compl              = substr(segmento-req-par,in-prox-pos + 154,7)  //Sigla do conselho do profissional pf executante
           tmp-servicos-req.num-cons-compl               = substr(segmento-req-par,in-prox-pos + 161,15) //Numero do conselho do profissional pf executante
           tmp-servicos-req.uf-compl                     = substr(segmento-req-par,in-prox-pos + 176,2)  //Numero do conselho do profissional pf executante
           tmp-servicos-req.cd-cbos-compl                = substr(segmento-req-par,in-prox-pos + 178,7)  //CBOS do profissional pf executante
           tmp-servicos-req.nr-cpf-compl                 = /*  Não era passado por segmento          */  //Cpf do conselho do profissional pf executante
           tmp-servicos-req.hr-inicial                   = substr(segmento-req-par,in-prox-pos + 145,4)  //Hora inicial do registro (Ex: 12:57, este campo fica 1257)
           tmp-servicos-req.hr-final                     = substr(segmento-req-par,in-prox-pos + 145,4)  //Hora final do registro (Ex: 12:57, este campo fica 1257)
           tmp-servicos-req.dt-realizacao                = substr(segmento-req-par,in-prox-pos + 141,8)  //Data do registro (Ex: 25/05/2021, este campo fica 25052021)
           tmp-servicos-req.cd-variacao                  = substr(segmento-req-par,in-prox-pos + 189,4)  //Código da variação do procedimento
           tmp-servicos-req.cr-solicitacao               = substr(segmento-req-par,in-prox-pos + 66,1)   //Caráter da solicitação
           tmp-servicos-req.tp-comb                      = substr(segmento-req-par,in-prox-pos + 193,6)  //Tipo da combinação não permitida
           /*tmp-servicos-req.ds-servico                   =  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.