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();
    }
  }