Histórico da Página
...
Segue a baixo a definição da temp-table e conversão do segmento para temp-table.
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/ac1006d.i} /* def temp-table tmp-servicos-req/*01*/ def input param lg-mens-tela-par no-undo field asin-ordem log as no-undo.int /*02 Não utilizado */ def input paramfield lgtp-simulacao-parservico as log as char format "x(12)" field tp-insumo no-undo. /*03*/ def input param r-maquclin-par as char format "99" field qt-servico as recid as char no-undo. /*04*/ def input param in-tipo-proces-parformat "999" field qt-servico-dec as char format "x(01)999" field no-undo. /*05*/ def input param segmento-req-parcd-servico as char format "x(8000)99999999" no-undo. /* Segmento com os dados do documento (sem o serviço) */ /*06*/ def input param id-aplicativo-parfield cd-tipo-percentual as char format "99" field vl-servico like paramint.id-aplicativo no-undo. /*07*/ def output param segmento-res-par as char format "x(9)" field cd-prest-exec as char format "x(8000)" no-undo. /* Segmento com retorno dos dadosas dochar documentoformat (sem o serviço) */ /*08*/ def output param"x(15)" field cd-erroprest-sistema-pardivisao as as char format "x(15)" field cd-grau-part as no-undo. /*09*/ def input param lg-trata-comb-nao-perm-wac-par as intchar format "x(2)" field cd-via-acesso as char field no-undo. /*10*/ def output param ds-erro-sistema-ptu-par cd-tecnica as char init "" as char field no-undo. /*11*/ def output param ds-erro-comb-nao-perm-par cd-servico-generico as char format "99999999" field asnm-prof-exec char as char no-undo. /*12*/ def input param table for tmp-servicos-req. /* Solicitação de serviços, substitui parte do segmento */ /*13*/ def output param table for tmp-docusos. /* Retorno temp igual a docusos para acesso em caso de simulação */ /*14*/ def output param table for tmp-procusos. /* Retorno temp igual a procusos para acesso em caso de simulação */ /*15*/ 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 */ |
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/ac1006d.i} /* def temp-table tmp-servicos-reqformat "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 no-undochar field inhr-ordemfinal as int /* Não utilizado */char field tpdt-servicorealizacao as char format "x(12)"date field tpcd-insumovariacao as char format "99"int field qtcd-servico-principal-pacote as char /* Serviço principal utilizado no pacote, caso deseje utilizar um procedimento alternativo ao asinvés chardo format "999"principal */ field qtcr-servico-decsolicitacao as char format "999" field cd-servico /* U - Urgência E - Eletivo */ field tp-comb as char format "99999999" field cd-tipo-percentual as char format "99" field vlds-servico as char format "x(9)". def temp-table tmp-retorno-serv no-undo field cd-prest-execid-autoriza as char field in-servico as char field tp-servico as char asfield charcd-servico format "x(15)"as int64 field cdqt-prestser-divisaoper as dec field vl-part-cob as dec field cd-erro-sistema as char format "x(15)" field cd-grau-partpacote 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 format "x(2)" field cd-via-acesso 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. as char field cd-tecnica when "24" then assign in-prox-pos = 3393. when "25" then assign in-prox-pos = 3409. end case. repeat: 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 case nr-ver-tra-imp: field uf-compl when "22" or when "25" then assign in-prox-pos = in-prox-pos + 29. as char field cd-cbos-compl as char field nr-cpf-compl when "24" then assign in-prox-pos = as char in-prox-pos + 35. field hr-inicial as char field hr-final asend charcase. field dt-realizacao create tmp-servicos-req. /* Campo da temp 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*//* 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 + as char 02, 2) //Tipo insumo field ds-servico tmp-servicos-req.qt-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= substr(segmento-req-par,in-prox-pos + 12,5) //Quantidade inteira do serviço (Ex: Qtd: 12,5, este campo fica 12) field qt-ser-per as dec field vl-part-cob as dec tmp-servicos-req.qt-servico-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: = 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.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 case nr-ver-tra-imp: 100,10, este campo fica 10010) when "22" or when "25" then assign in-prox-pos = in-prox-pos + 29. 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 when "24" then assign= insubstr(segmento-prox-pos = req-par,in-prox-pos + 35.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 end case. create tmp-servicos-req. /* Campo da temp= 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 Posiçãode que a informação estava no segmento *//* Descrição */ acesso assign tmp-servicos-req.tpcd-servicotecnica = substr(segmento-req-par,in-prox-pos + 01151, 1) //I - Insumos, P - Procedimentos e A - PacoteTécnica utilizada tmp-servicos-req.tpnm-prof-insumoexec = substr(segmento-req-par,in-prox-pos + 0267, 270) //Tipo insumoNome do profissional pf executante tmp-servicos-req.qtcons-prof-servicocompl = substr(segmento-req-par,in-prox-pos + 12154,57) //Quantidade inteiraSigla do serviçoconselho (Ex: Qtd: 12,5, este campo fica 12)do profissional pf executante tmp-servicos-req.qtnum-servicocons-deccompl = substr(segmento-req-par,in-prox-pos + 17161,315) //QuantidadeNumero fracionada do serviçoconselho (Ex: Qtd: 12,5, este campo fica 5)do profissional pf executante tmp-servicos-req.cduf-servicocompl = substr(segmento-req-par,in-prox-pos + 04176, 82) //CódigoNumero do serviço,conselho 8do dígitosprofissional para procedimentos ou pacotes e 10 dígitos para insumospf executante tmp-servicos-req.cd-tipo-percentualcbos-compl = substr(segmento-req-par,in-prox-pos + 34178,27) //45-Fator Red/AcrCBOS do profissional pf executante tmp-servicos-req.vl-serviconr-cpf-compl = /* Não era passado =por 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) //Cpf do conselho do profissional pf executante tmp-servicos-req.cd-prest-exechr-inicial = substr(segmento-req-par,in-prox-pos + 51145,154) //Unidade do prestador exec (4 dígitos) + código do prestador exec (8 dígitos) + código especialidade do prestador exec (3 dígitosHora inicial do registro (Ex: 12:57, este campo fica 1257) tmp-servicos-req.cd-prest-divisaohr-final = substr(segmento-req-par,in-prox-pos + 36145,154) //UnidadeHora do prestador divisão (4 dígitos) + código final do prestadorregistro divisão (8 dígitos) + código especialidade do prestador divisão (3 dígitosEx: 12:57, este campo fica 1257) tmp-servicos-req.cd-grau-part dt-realizacao = substr(segmento-req-par,in-prox-pos + 152141,28) //Grau de participação do membro de equipeData do registro (Ex: 25/05/2021, este campo fica 25052021) tmp-servicos-req.cd-via-acessovariacao = substr(segmento-req-par,in-prox-pos + 149189,24) //Via de acessoCódigo da variação do procedimento tmp-servicos-req.cdcr-tecnicasolicitacao = substr(segmento-req-par,in-prox-pos + 15166,1) //TécnicaCaráter da utilizadasolicitação tmp-servicos-req.nm-prof-exectp-comb = substr(segmento-req-par,in-prox-pos + 67193,706) //NomeTipo doda profissionalcombinação pfnão executantepermitida /*tmp-servicos-req.cons-prof-compl = substr(segmento-req-par,in-prox-pos + 154,7) //Sigla do conselho do profissional pf executanteds-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 tmp-servicos-req.num-cons-compl nr-ver-tra-imp = "24" or nr-ver-tra-imp = "25" then assign in-prox-pos = substr(segmento-req-par,in-prox-pos + 161,15) //Numero do conselho do profissional pf executante tmp-servicos-req.uf-compl = substr(segmento-req-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 +, 176,21) //NumeroStatus do conselho do profissional pf executante registro tmp-servicosretorno-reqserv.cd-cbos-compl in-servico = substr(segmento-reqLinhaDeVolta-par,in-prox-pos-aux + 1781,7 1) //CBOS do profissional pf executanteI - Insumos, P - Procedimentos tmp-servicosretorno-reqserv.nrtp-cpf-complservico = /* Não era passado por segmento= substr(LinhaDeVolta-par,in-prox-pos-aux + 3,2) //Tipo insumo tmp-retorno-serv.cd-servico */ //Cpf do conselho do profissional pf executante tmp-servicos-req.hr-inicial = 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(segmento-reqLinhaDeVolta-par,in-prox-pos-aux + 14513,48) //HoraQuantidade inicial do registroserviço (Ex: 12:57Qtd: 12,5, este campo fica 125712500) tmp-servicosretorno-reqserv.hr-final vl-part-cob = substr(segmento-reqLinhaDeVolta-par,in-prox-pos-aux + 14521,414) //HoraValor da finalparticipação dono registroprestador (Ex: 12:57100,15, este campo fica com 125710015) tmp-servicosretorno-req.dt-realizacaoserv.cd-erro-sistema = substr(LinhaDeVolta-par,in-prox-pos-aux + 35, 4) //Mensagem de erro no sistema tmp-retorno-serv.cd-pacote = substr(segmentoLinhaDeVolta-req-par,in-prox-pos-aux + 14147, 8) .//DataCódigo do registro (Ex: 25/05/2021, este campo fica 25052021)pacote do procedimento ou insumo assign in-prox-pos-aux = tmpin-prox-servicos-req.cd-variacaopos-aux + 56. = 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 end. = substr(segmento-req-par,in-prox-pos + 193,6) //Tipo da combinação não permitida |
Após deve ser feito a chamada para o AC1006D passando os paramento conforme definição a seguir.
Bloco de código | ||
---|---|---|
| ||
/*01*/ def input param /*tmplg-servicosmens-req.dstela-servicopar as log = Apenas versão >= 12.1.33 no-undo. /*02*/ def input param lg-simulacao-par //Descrição do insumo genérico realizado, utilizado para controlar a quantidadeas utilizadalog 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 no-undo. /*03*/ def input param r-maquclin-par as recid = substr(LinhaDeVolta-par,in-prox-pos-aux , 1) no-undo. /*04*/Status def doinput registro param in-tipo-proces-par tmp-retorno-serv.in-servico as char =format substr(LinhaDeVolta-par,in-prox-pos-aux + 1, 1) //I - Insumos, P - Procedimentos "x(01)" no-undo. /*05*/ def input param segmento-req-par tmp-retorno-serv.tp-servico as char format = 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 "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 tmp-retorno-serv.qt-ser-per as char =format substr(LinhaDeVolta-par,in-prox-pos-aux + 13,8) //Quantidade do serviço (Ex: Qtd: 12,5, este campo fica 12500) "x(8000)" no-undo. /* Segmento com retorno dos dados do documento (sem o serviço) */ /*08*/ def output param cd-erro-sistema-par tmp-retorno-serv.vl-part-cob as = substr(LinhaDeVolta-par,in-prox-pos-aux + 21,14) //Valor da participação no prestador (Ex: 100,15, este campo fica com 10015) char no-undo. /*09*/ def input param tmplg-trata-retornocomb-serv.cdnao-erro-sistema = substr(LinhaDeVolta-par,in-prox-pos-aux + 35, 4) //Mensagem de erro no sistema perm-wac-par as int tmp-retorno-serv.cd-pacote no-undo. /*10*/ def output =param substr(LinhaDeVolta-par,in-prox-pos-aux + 47, 8).//Código do pacote do procedimento ou insumo ds-erro-sistema-ptu-par as char init "" assign in-prox-pos-aux = in-prox-pos-aux + 56. no-undo. /*11*/ def output param ds-erro-comb-nao-perm-par as char no-undo. /*12*/ def input param table for tmp-servicos-req. /* Solicitação de serviços, substitui parte do segmento */ /*13*/ def output param table for tmp-docusos. /* Retorno temp igual a docusos para acesso em caso de simulação */ /*14*/ def output param table for tmp-procusos. /* Retorno temp igual a procusos para acesso em caso de simulação end. */ /*15*/ 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 */ |
Import HTML Content
Visão Geral
Conteúdo das Ferramentas