oozcitak/xmlbuilder2

Get undefined error acessing tag after convert xml to object

joweste opened this issue · 1 comments

Describe the bug
I am getting the value of tag "ans:detalhesGuia" but I get an undefined error.
An important point is that "ans:detalhesGuia" is optional and sometimes doesn´'t exist into xml.

To Reproduce

let xmlStr;
const { convert } = require("xmlbuilder2");
const fs = require("fs");
xmlStr = fs.readFileSync("./dem_brad_demonstrativo.xml", {
  encoding: "utf8",
  flag: "r",
});
const obj = convert(xmlStr, { format: "object" });
const teste = obj["ans:mensagemTISS"]["ans:operadoraParaPrestador"][
  "ans:demonstrativosRetorno"
]["ans:demonstrativoAnaliseConta"]["ans:dadosConta"]["ans:dadosProtocolo"][
  "ans:relacaoGuias"
]["ans:detalhesGuia"];
console.log(teste);

I get the next error:
TypeError: Cannot read properties of undefined (reading 'ans:demonstrativosRetorno')

Here is the xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ans:mensagemTISS xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas">
  <ans:cabecalho>
    <ans:identificacaoTransacao>
      <ans:tipoTransacao>DEMONSTRATIVO_ANALISE_CONTA</ans:tipoTransacao>
      <ans:sequencialTransacao>0</ans:sequencialTransacao>
      <ans:dataRegistroTransacao>2021-10-22</ans:dataRegistroTransacao>
      <ans:horaRegistroTransacao>09:07:38</ans:horaRegistroTransacao>
    </ans:identificacaoTransacao>
    <ans:origem>
      <ans:registroANS>005711</ans:registroANS>
    </ans:origem>
    <ans:destino>
      <ans:identificacaoPrestador>
        <ans:codigoPrestadorNaOperadora>00000000967173</ans:codigoPrestadorNaOperadora>
      </ans:identificacaoPrestador>
    </ans:destino>
    <ans:Padrao>3.05.00</ans:Padrao>
  </ans:cabecalho>
  <ans:operadoraParaPrestador>
    <ans:demonstrativosRetorno>
      <ans:demonstrativoAnaliseConta>
        <ans:cabecalhoDemonstrativo>
          <ans:registroANS>005711</ans:registroANS>
          <ans:numeroDemonstrativo>242407685</ans:numeroDemonstrativo>
          <ans:nomeOperadora>Bradesco Saude S.A</ans:nomeOperadora>
          <ans:numeroCNPJ>92693118000160</ans:numeroCNPJ>
          <ans:dataEmissao>2021-10-22</ans:dataEmissao>
        </ans:cabecalhoDemonstrativo>
        <ans:dadosPrestador>
          <ans:dadosContratado>
            <ans:codigoPrestadorNaOperadora>967173</ans:codigoPrestadorNaOperadora>
            <ans:nomeContratado>CLINICA ORTOPEDICA BANGU LTDA</ans:nomeContratado>
          </ans:dadosContratado>
          <ans:CNES>3347028</ans:CNES>
        </ans:dadosPrestador>
        <ans:dadosConta>
          <ans:dadosProtocolo>
            <ans:numeroLotePrestador>581255</ans:numeroLotePrestador>
            <ans:numeroProtocolo>340081870219</ans:numeroProtocolo>
            <ans:dataProtocolo>2021-07-28</ans:dataProtocolo>
            <ans:situacaoProtocolo>6</ans:situacaoProtocolo>
            <ans:relacaoGuias> 
              <ans:numeroGuiaPrestador>986624600</ans:numeroGuiaPrestador>
              <ans:numeroGuiaOperadora>24000000000715379112</ans:numeroGuiaOperadora>
              <ans:nomeBeneficiario>RODRIGO DE PAULA RODRIGUES</ans:nomeBeneficiario>
              <ans:numeroCarteira>773232334243005</ans:numeroCarteira>
              <ans:dataInicioFat>0001-01-01</ans:dataInicioFat>
              <ans:horaInicioFat>01:01:01</ans:horaInicioFat>
              <ans:dataFimFat>0001-01-01</ans:dataFimFat>
              <ans:horaFimFat>01:01:01</ans:horaFimFat>
              <ans:situacaoGuia>6</ans:situacaoGuia>
              <ans:detalhesGuia>
                <ans:sequencialItem>1</ans:sequencialItem>
                <ans:dataRealizacao>2021-07-13</ans:dataRealizacao>
                <ans:procedimento>
                  <ans:codigoTabela>22</ans:codigoTabela>
                  <ans:codigoProcedimento>40802035</ans:codigoProcedimento>
                  <ans:descricaoProcedimento>RX - COLUNA DORSAL - 2 INCIDENCIAS</ans:descricaoProcedimento>
                </ans:procedimento>
                <ans:grauParticipacao>12</ans:grauParticipacao>
                <ans:valorInformado>58.29</ans:valorInformado>
                <ans:qtdExecutada>1.0</ans:qtdExecutada>
                <ans:valorProcessado>49.36</ans:valorProcessado>
                <ans:valorLiberado>49.36</ans:valorLiberado>
                <ans:relacaoGlosa>
                  <ans:valorGlosa>8.93</ans:valorGlosa>
                  <ans:tipoGlosa>1705</ans:tipoGlosa>
                </ans:relacaoGlosa>
              </ans:detalhesGuia>
              <ans:valorInformadoGuia>127.51</ans:valorInformadoGuia>
              <ans:valorProcessadoGuia>118.58</ans:valorProcessadoGuia>
              <ans:valorLiberadoGuia>118.58</ans:valorLiberadoGuia>
              <ans:valorGlosaGuia>8.93</ans:valorGlosaGuia>
            </ans:relacaoGuias>
            <ans:relacaoGuias>
              <ans:numeroGuiaPrestador>986663698</ans:numeroGuiaPrestador>
              <ans:numeroGuiaOperadora>24000000000715379113</ans:numeroGuiaOperadora>
              <ans:nomeBeneficiario>IONE AGUIAR DE OLIVEIRA</ans:nomeBeneficiario>
              <ans:numeroCarteira>952480015660013</ans:numeroCarteira>
              <ans:dataInicioFat>0001-01-01</ans:dataInicioFat>
              <ans:horaInicioFat>01:01:01</ans:horaInicioFat>
              <ans:dataFimFat>0001-01-01</ans:dataFimFat>
              <ans:horaFimFat>01:01:01</ans:horaFimFat>
              <ans:situacaoGuia>6</ans:situacaoGuia>
              <ans:valorInformadoGuia>88.12</ans:valorInformadoGuia>
              <ans:valorProcessadoGuia>88.12</ans:valorProcessadoGuia>
              <ans:valorLiberadoGuia>88.12</ans:valorLiberadoGuia>
              <ans:valorGlosaGuia>0.0</ans:valorGlosaGuia>
            </ans:relacaoGuias>
......
.....

Expected behavior
I´d like to get the values of "ans:detalhesGuia" that exist.

Version:

  • node.js: [16.9.1]
  • xmlbuilder2 [3.0.2]

Additional context
Add any other context about the problem here.

My mistake