clinsoft augusto josé edson guedes guilherme oikawa paulo roberto

Post on 19-Apr-2015

114 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related