ClinSOFT Augusto José Edson Guedes Guilherme Oikawa Paulo Roberto.
Transcript of ClinSOFT Augusto José Edson Guedes Guilherme Oikawa Paulo Roberto.
ClinSOFT
Augusto JoséEdson GuedesGuilherme OikawaPaulo Roberto
Roteiro
• Descrição• Projeto de Caso de Uso• Projeto dos Subsistemas• Projeto das Cápsulas• Referências
Descrição
O ClinSoft tem como principais metas:
• Gerenciar a marcação de consultas dentro de uma clínica médica;
• Facilitar o atendimento de um paciente.
Casos de usoProjeto de Caso de Uso• Caso de Uso escolhido:
[RF_04] Procurar Consulta• Projeto:
– Visão do caso de uso;– Diagrama de Classes;– Diagrama de Seqüência.
Casos de usoVisão do Caso de Uso• Descrição: Funcionalidade que
permite o acesso a uma lista de consultas cadastradas no sistema, de acordo com parâmetros (filtros) informados pelo ator.
• Fluxo Principal:1.O ator acessa a tela de busca de
consultas;2.O ator informa dados para refinar a
busca (filtros da busca);3.O ator clica em procurar;4.O sistema procura as consultas que
atendem aos parâmetros informados;
Casos de usoProjeto de Caso de Uso5.O sistema exibe uma lista com
dados gerais das consultas encontradas, incluindo links para detalhamento de cada consulta e também edição ou cancelamento.
• Fluxo Secundário:- No passo 5, o sistema informa que não existem consultas marcadas que atendem aos parâmetros especificados na pesquisa.
Diagrama de Classes
ProcuraConsulta<<Protocol>>
dadosConsulta (void)
procurarConsulta (void)
(from Protocolos)
TelaProcurarConsulta
procurarConsulta()
+ / procuraConsulta
<<Capsule>>
(from GUI)
+ / procuraConsulta
<<Port>>
+ / procuraConsulta
<<Port>>
Fachada
procurarConsulta()visualizarHorario()cadastrarPaciente()marcarConsulta()
+ / procuraConsulta
<<Capsule>> + / procuraConsulta
<<Port>>
+ / procuraConsulta
<<Port>>
ControladorProcurarConsulta
procurarConsulta()
(from Consultas)
1
1
CadastroConsultas
procurar()inserir()getConsultas()existe()
(from Consultas)
1
1
IRepositorioConsultas
procurar()inserir()
getConsultas()existe()
(from Consultas)
11
RepositorioConsultasOracle
procurar()inserir()getConsultas()existe()
(from Consultas)
Paciente
ID : IntegerCPF : Stringnome : Stringnascimento : Date
(from Pacientes)
Consulta
ID : Integerqueixa : Stringobservacoes : Stringprognostico : String
(from Consultas)
0..*
1
1
1
Horario
dataHoraInicio : DateTimedataHoraFim : DateTime
(from Consultas)
1
1
1
1
1
1
1 1
1
0..*
1
1
1
1
Diagrama de Seqüência
/ usuarioR1 : Usuario
/ telaProcurarConsultaR1 : TelaProcurarConsulta
/ fachadaR1 : Fachada
/ controladorProcurarConsultaR1... : ControladorProcurarConsulta...
/ cadastroConsultasR1... : CadastroConsultas... / iRepositorioConsultasR1
: IRepositorioConsultas
/ repositorioConsultasOracleR1... : RepositorioConsultasOracle...
procurarConsulta(dadosConsulta)procurarConsulta(dadosConsulta)
consulta = procurarConsulta(dadosConsulta)consulta = procurarConsulta(dadosConsulta)
procurarConsulta(dadosConsulta)procurarConsulta(dadosConsulta)
procurar(dadosConsulta)procurar(dadosConsulta)procurar(dadosConsulta)procurar(dadosConsulta)procurar(dadosConsulta)procurar(dadosConsulta)
(consulta != null) VisualizarConsulta(consulta)(consulta != null) VisualizarConsulta(consulta)
Projeto dos Subsistemas• 2 Subsistemas:
– Comunicação com os planos de saúde: verificar se já existe uma consulta marcada para o paciente na rede de hospitais e clínicas credenciadas para o dia informado na tentativa de marcação da consulta. Caso não exista uma consulta para o paciente informado no mesmo horário da consulta que se deseja marcar, a marcação é, então, confirmada.
Projeto dos Subsistemas
− Comunicação com hospitais e clínicas conveniados: validar os dados do paciente junto ao plano de saúde no momento da marcação de uma consulta. Dados de identificação do paciente e do plano de saúde do mesmo são enviados ao subsistema, que verifica a autenticidade das informações e a validade do plano de saúde do paciente.
SubsistemasSubsistema 1 – Planos de Saúde• Diagrama de Classes• Diagrama de Seqüência
SubsistemasDiagrama de Classes
ISubsistemaComunicacaoPlanosSaude
validarUsuarioPlanoSaude()
FachadaComunicacaoPlanosSaude
validarUsuarioPlanoSaude()
ControladorValidarUsuarioPlanoSaude
validarUsuarioPlanoSaude()isValido()
1
1
CadastroUsuariosPlanoSaude
procurar()
1
1
IRepositorioUsuariosPlanoSaude
procurar()
1
1
RepositorioUsuariosPlanoSaudeOracle
procurar()
UsuarioPlanoSaude
ID : IntegerCPF : Stringnome : Stringnascimento : Date
0..*
1
DadosPlanoSaudeUsuario
CNPJ : Stringsituacao : String
1
1
1
1
1
1
1
1
1
0..*
1
1
SubsistemasDiagrama de Seqüência
/ qualquerClienteR1 : QualquerCliente
/ fachadaComunicacaoPlanosSaudeR1... : FachadaComunicacaoPlanosSaude...
/ controladorValidarUsuarioPlanoSaudeR1... : ControladorValidarUsuarioPlanoSaude...
/ cadastroUsuariosPlanoSaudeR1... : CadastroUsuariosPlanoSaude... / iRepositorioUsuariosPlanoSaudeR1...
: IRepositorioUsuariosPlanoSaude...
/ repositorioUsuariosPlanoSaudeOracleR1... : RepositorioUsuariosPlanoSaudeOracle...
validarUsuarioPlanoSaude(dadosPaciente, dadosPlano)validarUsuarioPlanoSaude(dadosPaciente, dadosPlano)
validarUsuarioPlanoSaude(dadosPaciente, dadosPlano)validarUsuarioPlanoSaude(dadosPaciente, dadosPlano)
usuarioPlano = procurar(dadosPaciente)usuarioPlano = procurar(dadosPaciente)
procurar(dadosPaciente)procurar(dadosPaciente)
procurar(dadosPaciente)procurar(dadosPaciente)
dadosValidos = isValido(usuarioPlano, dadosPlano)dadosValidos = isValido(usuarioPlano, dadosPlano)
dadosValidosdadosValidos
SubsistemasSubsistema 2 – Hospitais• Diagrama de Classes• Diagrama de Seqüência
SubsistemasDiagrama de Classes
ISubsistemaComunicacoHospitais
validarConsulta()
IRepositorioConsultas
procurar()inserir()getConsultas()existe()
(from Consultas)RepositorioConsultasOracle
procurar()inserir()getConsultas()existe()
(from Consultas)
Horario
dataHoraInicio : DateTimedataHoraFim : DateTime
(from Consultas)
Consulta
ID : Integerqueixa : Stringobservacoes : Stringprognostico : String
(from Consultas)
0..*
1
0..*
1
1
1
1
1
Paciente
ID : IntegerCPF : Stringnome : Stringnascimento : Date
(from Pacientes)
1
1
1
1
FachadaComuncacaoHospitais
validarConsulta()
ControladorValidarConsultaHospital
validarConsulta()
CadastroConsultas
procurar()inserir()getConsultas()existe()
(from Consultas)
1
1
1
1
Subsistemas Diagrama de Seqüência
/ repositorioConsultasOracleR1 : RepositorioConsultasOracle
/ iRepositorioConsultasR1......
/ cadastroConsultasR1 : CadastroConsultas
/ controladorValidarConsultaHospitalR1... : ControladorValidarConsultaHospital...
/ fachadaComuncacaoHospitaisR1... : FachadaComuncacaoHospitais...
/ qualquerClienteR1 : QualquerCliente
validarConsulta(consulta)validarConsulta(consulta)
validarConsulta(consulta)validarConsulta(consulta)
existeConsulta = existe(consulta)existeConsulta = existe(consulta)existe(consulta)existe(consulta) existe(consulta)existe(consulta)
isValida = !existeConsultaisValida = !existeConsulta
Projeto das Cápsulas
• O caso de uso escolhido para o projeto de cápsulas foi o Marcar Consulta
• Marcar consulta envolve 2 subsistemas acessados concorrentemente: o de planos de saúde e o de hospitais
• Recebem como resposta booleanos de confirmação
CápsulasTelaMarcarConsulta
+ / portaFachada : ProtocoloTelaMarcarConsulta~
+ / portaFachada : ProtocoloTelaMarcarConsulta~
# / timer : Timing# / timer : Timing
CápsulasTelaMarcarConsulta
Aguardando EsperandoDados
Initial
solicitaMarcacao
finaliza
Initial
solicitaMarcacao
finaliza
CápsulasFachada
+ / portaControladorMarcarConsulta : ProtocoloFachada~
+ / portaFachada : ProtocoloTelaMarcarConsulta
+ / portaControladorMarcarConsulta : ProtocoloFachada~
+ / portaFachada : ProtocoloTelaMarcarConsulta
CápsulasFachada
AguardandoSolicitacao EsperandoDados
Initial
solicitaMarcacao
recebeConfirmacao
Initial
solicitaMarcacao
recebeConfirmacao
CápsulasControladorMarcarConsulta
+ / portaComunicacaoPlanos : ProtocoloControladorMarcarConsulta~
+ / portaComunicacaoHospitais : ProtocoloControladorMarcarConsulta~
+ / portaFachada : ProtocoloControladorMarcarConsulta
+ / portaComunicacaoPlanos : ProtocoloControladorMarcarConsulta~
+ / portaComunicacaoHospitais : ProtocoloControladorMarcarConsulta~
+ / portaFachada : ProtocoloControladorMarcarConsulta
CápsulasControladorMarcarConsulta
Aguardando
ComunicandoSubsistemas
EsperandoHospitais
EsperandoPlanos
Initial
recebeuDadosHospitaisrecebeuDadosPlanos
recebeuDadosPlanosrecebeuDadosHospitais
recebeuSolicitacao
Initial
recebeuDadosHospitaisrecebeuDadosPlanos
recebeuDadosPlanosrecebeuDadosHospitais
recebeuSolicitacao
CápsulasComunicacaoHospitais
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoHospitais
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoHospitais
CápsulasComunicacaoHospitais
EsperandoComunicacao
EsperandoHospitalBEsperandoHospitalA
ComunicandoHospitais
Initial
recebeuSolicitacao
recebeuDadosHospitalB
recebeuDadosHospitalA
recebeuDadosHospitalA
recebeuDadosHospitalB
Initial
recebeuSolicitacao
recebeuDadosHospitalB
recebeuDadosHospitalA
recebeuDadosHospitalA
recebeuDadosHospitalB
CápsulasComunicacaoPlanos
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoPlanos
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoPlanos
CápsulasComunicacaoPlanos
EsperandoSolicitacao
EsperandoPlano
Initial
recebeuSolicitacao
Initial
recebeuSolicitacaorecebeDadosrecebeDados
CápsulasDiagrama de estruturas
/ capsulaFachadaR1 : CapsulaFachada
/ capsulaComunicacaoHospitaisR1 : CapsulaComunicacaoHospitais
/ capsulaTelaMarcarConsultaR1 : CapsulaTelaMarcarConsulta
/ capsulaControladorMarcarConsultaR1 : CapsulaControladorMarcarConsulta
/ capuslaComunicacaoPlanosR1 : CapsulaComunicacaoPlanos
+ / portaControladorMarcarConsulta : ProtocoloFachada~
+ / portaFachada : ProtocoloTelaMarcarConsulta
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoHospitais
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoPlanos
+ / portaFachada : ProtocoloTelaMarcarConsulta~
+ / portaComunicacaoPlanos : ProtocoloControladorMarcarConsulta~
+ / portaComunicacaoHospitais : ProtocoloControladorMarcarConsulta~
+ / portaFachada : ProtocoloControladorMarcarConsulta
/ capsulaFachadaR1 : CapsulaFachada
+ / portaControladorMarcarConsulta : ProtocoloFachada~
/ capsulaComunicacaoHospitaisR1 : CapsulaComunicacaoHospitais
/ capsulaTelaMarcarConsultaR1 : CapsulaTelaMarcarConsulta
/ capsulaControladorMarcarConsultaR1 : CapsulaControladorMarcarConsulta
/ capuslaComunicacaoPlanosR1 : CapsulaComunicacaoPlanos
+ / portaFachada : ProtocoloTelaMarcarConsulta
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoHospitais
+ / portaControladorMarcarConsulta : ProtocoloComunicacaoPlanos
+ / portaFachada : ProtocoloTelaMarcarConsulta~
+ / portaComunicacaoPlanos : ProtocoloControladorMarcarConsulta~
+ / portaComunicacaoHospitais : ProtocoloControladorMarcarConsulta~
+ / portaFachada : ProtocoloControladorMarcarConsulta
Referências
•Página do Projeto:http://clinsoft.googlepages.com
•Texto sobre Análise e Projeto de Sistemas:http://www.inf.ufsc.br/~raul/livro/
•Aulas do curso de Análise e Projeto de Sistemas:http://www.cin.ufpe.br/~if718