Dúvida - Design de relatórios

Olá,

Estou iniciando a criação de alguns relatórios um pouco mais complexos em um sistema existente, mas tenho dúvidas sobre a melhor forma de faze-los. Será que posso contar com algumas idéias de vocês?

Para começar, vou dar um exemplo simplificado do que preciso:

[code]Tabela PACIENTES:

  • ID
  • NOME
  • (outros atributos)

Tabela CONSULTAS:

  • ID
  • ID_PACIENTE (fk para PACIENTES.ID)
  • DATA
  • VALOR
  • DIAGNÓSTICO
  • (outros atributos)

Tabela CONSUMO_MEDICAMENTOS:

  • ID
  • ID_PACIENTE (fk para PACIENTES.ID)
  • NOME_MEDICAMENTO
  • VALOR
  • (outros atributos)[/code]

Dado essa estrutura do BD, serão gerados alguns relatórios que envolvem múltiplas tabelas e cálculos. Por exemplo:

  • Custo de consultas, medicamentos e total por paciente.
  • Estatística de pacientes por tipo de doença (diagnóstico) - quantidade de pacientes, gasto médio.
  • Gasto geral de todos os pacientes por intervalo de datas.
  • etc etc etc.

O que eu tenho dúvidas é principalmente o seguinte: que partes do trabalho é mais aconselhável colocar em consultas SQL, e que partes devem ser feitas via código (objetos de negócio)? Qual a melhor forma de modelar os objetos que farão esse trabalho? Por exemplo, uma classe por relatório, responsável por obter os dados e que é consumida pela camada de apresentação?

Qualquer auxílio será bem-vindo!

Ah, só acrescentando…

Eu vi que existem vários tópicos sobre Jasper Reports e outras ferramentas, então antes que eu leve uma bronca por duplicar tópicos :slight_smile: queria dizer que o meu objetivo é um pouco diferente:

No meu caso não é possível usar esse tipo de ferramenta/framework específicos para criação de relatórios, então gostaria de algumas idéias, conceitos ou conselhos mais gerais que possam me ajudar a desenvolver “manualmente” o que preciso.

Obrigado!

Por que você não pode usar uma ferramenta?

Qual o formato de saída do relatório? HTML? TXT? PDF?

Você pode usar o iText? (http://www-128.ibm.com/developerworks/opensource/library/os-javapdf/)

Tudo bem, vou fazer uma confissão :(.

É o seguinte… este projeto em que vou implementar os relatórios não é feito em Java, trata-se de uma aplicação em ASP.NET

Perguntei aqui porque o pessoal é bem mais aberto a discussões sobre conceitos, boas práticas, etc. do que o mundo Microsoft em geral. Por isso pedi ajuda sobre idéias mais gerais, que possam funcionar independentemente da linguagem…

A pergunta do tópico pode ser entendida como: “De que forma vocês implementariam esta funcionalidade contando apenas com os recursos da linguagem OO e da linguagem SQL?” :slight_smile: