public static void main(String[] args) {
    // Passo 1: Popular a ficha
    FichaProcedimentoMasterThrift thriftFichaProcedimento = getFicha();

    // Passo 2: Popular o DadoTransporte usando os dados da ficha e do software que está enviando.
    DadoTransporteThrift dadoTransporteThrift = getDadoTransporte(thriftFichaProcedimento);

    // Passo 3: Serializar a ficha utilizando o TBinaryProtocol da biblioteca thrift.
    byte[] fichaSerializada = SerializadorThrift.serializar(thriftFichaProcedimento);

    // Passo 4: Adicionar a ficha serializada e seu tipo no DadoTransporte.
    dadoTransporteThrift.setTipoDadoSerializado(TIPO_DADO_SERIALIZADO_FICHA_PROCEDIMENTO);
    dadoTransporteThrift.setDadoSerializado(fichaSerializada);

    // Não esquecer de informar a versão da ficha a ser exportada (não é a versão do e-SUS AB)
    VersaoThrift versaoThrift = new VersaoThrift(2, 0, 0);
    dadoTransporteThrift.setVersao(versaoThrift);

    try {
      // Passo 5: Criar um arquivo zip para conter as fichas
      File zipFile = new File(System.getProperty("user.home") + "/exemploConversaoThrift.zip");
      ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFile));

      // Passo 6: Dar um nome para o arquivo (nesse caso usamos o UUID da ficha) sempre
      // acrescentando a extensão ".esus" ao final
      String entryName = dadoTransporteThrift.getUuidDadoSerializado() + EXTENSAO_EXPORT;

      // Passo 7: Adicionar uma nova entrada (novo arquivo) dentro do zip com o nome definido
      outputStream.putNextEntry(new ZipEntry(entryName));

      // Passo 8: serializar o DadoTransporte utilizando o TBinaryProtocol da biblioteca thrift
      byte[] dadoTransporteSerializado = SerializadorThrift.serializar(dadoTransporteThrift);

      // Passo 9: escrever o dadoTransporteSerializado no arquivo zip
      outputStream.write(dadoTransporteSerializado);

      // Para adicionar mais fichas no mesmo zip, repetir os passos 6, 7, 8 e 9 com as demais fichas

      // Passo 10: Finalizar o arquivo zip
      outputStream.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
      case UUID_DADO_SERIALIZADO:
        if (value == null) {
          unsetUuidDadoSerializado();
        } else {
          setUuidDadoSerializado((String) value);
        }
        break;

      case TIPO_DADO_SERIALIZADO:
        if (value == null) {
          unsetTipoDadoSerializado();
        } else {
          setTipoDadoSerializado((Long) value);
        }
        break;

      case CNES_DADO_SERIALIZADO:
        if (value == null) {
          unsetCnesDadoSerializado();
        } else {
          setCnesDadoSerializado((String) value);
        }
        break;

      case COD_IBGE:
        if (value == null) {
          unsetCodIbge();
        } else {
          setCodIbge((String) value);
        }
        break;

      case INE_DADO_SERIALIZADO:
        if (value == null) {
          unsetIneDadoSerializado();
        } else {
          setIneDadoSerializado((String) value);
        }
        break;

      case NUM_LOTE:
        if (value == null) {
          unsetNumLote();
        } else {
          setNumLote((Long) value);
        }
        break;

      case DADO_SERIALIZADO:
        if (value == null) {
          unsetDadoSerializado();
        } else {
          setDadoSerializado((ByteBuffer) value);
        }
        break;

      case REMETENTE:
        if (value == null) {
          unsetRemetente();
        } else {
          setRemetente((DadoInstalacaoThrift) value);
        }
        break;

      case ORIGINADORA:
        if (value == null) {
          unsetOriginadora();
        } else {
          setOriginadora((DadoInstalacaoThrift) value);
        }
        break;

      case VERSAO:
        if (value == null) {
          unsetVersao();
        } else {
          setVersao(
              (br.gov.saude.esus.transport.common.api.configuracaodestino.VersaoThrift) value);
        }
        break;
    }
  }
 /** Dado serializado a partir de um Thrift */
 public byte[] getDadoSerializado() {
   setDadoSerializado(org.apache.thrift.TBaseHelper.rightSize(dadoSerializado));
   return dadoSerializado == null ? null : dadoSerializado.array();
 }