Pessoal,
Estou gostando do andar da Thread, vou começar respondendo algumas questões levantadas. Antes de mais nada eu gostaria de compartilhar todo esse aprendizado com vocês, pois irá também servir para minha pesquisa que envolve o meu TCC, que aborda o DDD e defende essa abordagem que o Evans lançou em seu livro, realmente saber se o que ele narra em seu livro pode de alguma forma contribuir para o Desenvolvimento de Software, seja ele complexo, escopo bem definido e que terá uma longa vida pela frente. Diante disso pensei em um sistema de Gestão Integrada de Clínicas, pois é algo que há uma complexidade em volta e também a maneira que um Clínica funciona é diferente de qualquer outra.
1 - A questão do agendamento, é exatamente um dos módulos mais prioritários no momento, não pode ser pelo Exchange, porque não atende as necessidades levantadas e outro ponto é, o Cliente não quer, ele quem está me dizendo a maneira que o seu paciente solicita um agendamento em sua clínica.
2 - O sistema vai ficar complexo, sim. depois tem o encaminhamento ao Médico, temos também a questão de encaixe, fechamento da consulta, quanto se faturou naquela consulta, qual o custo, como pode haver uma comunicação com os Planos de Saúde (Tabela com valores, formulários de preenchimento entre outros, ai ja entra um sistema integrado com outro) entre outras regras que serão levantadas de acordo com a prioridade do cliente e ai nota-se o tamanho que irá ficar complexo.
3 - Eu não entendi a questão da sala, eu tratei a Agenda Médica como uma entidade, porque pelo Dia e Hora eu saberei qual o Paciente será atendido naquele momento, ou até mesmo quantos pacientes em um dia eu irei atender e quais os médicos disponíveis naquele dia.
4 - O Contrato com IEntidade é somente o ID { get; }, sei que no conceito de DDD o Evans atribui bem isso que o ID não pode ser considerado um atributo de identificação, porém isso só foi feito para mapeamento e identificação das Entidades, veja que em pessoa eu coloquei o RG, no médico terá o CRM, no paciente terá um ID, que para o sistema eu posso entregar ao paciente um número do seu registro, vai que ele seja menor e mais fácil de memorizar, assim como é nas carterinhas de plano de saúde, geralmente a primeira opção que pergunta é "Qual sua matricula?" e é assim que a Clínica trabalha.
5 - Notei que há um erro na agenda, eu não sei por exemplo se o médico está disponivel naquele momento ou não, como posso realizar esse Serviço de Agendamento? Por exemplo para mim eu só estou enxergando a Agenda Médica como um cadastro do Paciente, Data e Hora e Médico. Mas e o médico pode ser naquela hora e dia, ele está na Clínica? Lembrando que o médico é um prestador de serviço e não um funcionário, ele pode trabalhar em outras clínicas, há um horário disponível de X horas por semana no dia que ele escolher ser mais relevante.
6 - Alguma ajuda?
* Vamos aproveitar essa thread para revisar os conceitos de DDD e também irei sempre disponibilizar parte do modelo para ser discutido aqui com vocês.
Atenciosamente
Thiago Holder M. Silva