UFBA – IM – DCC
MATD04 – Estrutura de Dados
Trabalho – setembro/2016
Professor: Walter Rocha Palma
Definir e implementar estrutura de dados e operações, usando linguagem C, para controlar as operações de um hospital, conforme especificações a seguir:
Um determinado hospital possui uma estrutura física composta dos seguintes elementos:
- 300 quartos com um leito cada, acomodados do quarto ao nono andar, com um posto de enfermagem em cada andar e 50 quartos por andar
- 5 enfermarias com 20 leitos cada, acomodadas no terceiro andar, com um posto de enfermagem
- 1 unidade de tratamento semi-intensivo acomodada no décimo andar, com 50 leitos e 1 posto de enfermagem e controle
- 1 unidade de tratamento intensivo acomodada no décimo andar, com 50 leitos e 1 posto de enfermagem e controle
- 50 consultórios médicos, para atendimento ambulatorial, com uma recepção, localizados no segundo andar
- 10 unidades de exame de imagem com uma recepção, localizada no primeiro andar
- 1 laboratório de exames clínicos com uma recepção, localizada no primeiro andar
- 1 Farmácia central localizada no andar térreo
- 10 farmácias satélites localizadas do primeiro ao décimo andar
- Uma unidade de pronto atendimento localizada no andar térreo com uma recepção, 20 consultórios e uma enfermaria com 30 leitos de observação e um posto de enfermagem
A estrutura dos quartos tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do quarto | CHAR | 3 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Paciente | PONTEIRO | |
Médico | PONTEIRO |
A estrutura das enfermarias tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da enfermaria | CHAR | 1 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Leitos | PONTEIRO |
A estrutura dos leitos das enfermarias tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do leito | CHAR | 2 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Paciente | PONTEIRO | |
Médico | PONTEIRO |
A estrutura da unidade de tratamento semi-intensivo tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da unidade | CHAR | 1 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Leitos | PONTEIRO |
A estrutura dos leitos da unidade de tratamento semi-intensivo tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do leito | CHAR | 2 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Paciente | PONTEIRO | |
Médico | PONTEIRO |
A estrutura da unidade de tratamento intensivo tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da unidade | CHAR | 1 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Leitos | PONTEIRO |
A estrutura dos leitos da unidade de tratamento intensivo tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do leito | CHAR | 2 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Paciente | PONTEIRO | |
Médico | PONTEIRO |
A estrutura dos consultórios tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do consultório | CHAR | 2 |
Situação agenda do mês 1 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda 1 | PONTEIRO | |
Situação agenda do mês 2 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda do mês 2 | PONTEIRO | |
Situação agenda do mês 3 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda do mês 3 | PONTEIRO |
A estrutura da agenda dos consultórios tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Dia do mês | CHAR | 2 |
Hora do dia | CHAR | 4 |
Situação da hora | CHAR | 1 ( 1- livre, 2-ocupado) |
Médico | PONTEIRO | |
Paciente | PONTEIRO |
A estrutura das unidades de exames de imagem tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da unidade | CHAR | 2 |
Situação agenda do mês 1 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda 1 | PONTEIRO | |
Situação agenda do mês 2 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda do mês 2 | PONTEIRO | |
Situação agenda do mês 3 | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda do mês 3 | PONTEIRO |
A estrutura da agenda das unidades de imagem tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Dia do mês | CHAR | 2 |
Hora do dia | CHAR | 4 |
Situação da hora | CHAR | 1 ( 1- livre, 2-ocupado) |
Médico | PONTEIRO | |
Paciente | PONTEIRO |
A estrutura dos exames de imagem tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código do exame | CHAR | 4 |
Médico | PONTEIRO | |
Paciente | PONTEIRO | |
Resultado | CHAR | 500 |
A estrutura do laboratório de exames clínicos tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da unidade | CHAR | 1 |
Exame tipo 1 | PONTEIRO | |
Exame tipo 2 | PONTEIRO | |
Exame tipo 3 | PONTEIRO | |
Exame tipo 4 | PONTEIRO | |
Exame tipo 5 | PONTEIRO | |
Exame tipo 6 | PONTEIRO |
A estrutura dos exames tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código do exame | CHAR | 4 |
Médico | PONTEIRO | |
Paciente | PONTEIRO | |
Resultado | CHAR | 500 |
A estrutura da farmácia central e das farmácias satélites tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número da farmácia | CHAR | 2 |
Local – andar da farmácia | CHAR | 2 |
Medicamentos | PONTEIRO |
A estrutura dos medicamentos os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código do medicamento | CHAR | 10 |
QTD – quantidade em estoque | INTEIRO | |
Valor unitário | FLOAT | |
Nome – nome do medicamento | CHAR | 30 |
Tipo | CHAR | 1 ( 1- marca, 2-similar,3-genérico |
Lote | CHAR | 4 |
Validade | CHAR | 8 |
A estrutura da unidade de pronto atendimento tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código da unidade | CHAR | 1 |
Consultório | PONTEIRO | |
Leitos | PONTEIRO |
A estrutura dos consultórios da unidade de pronto atendimento tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do consultório | CHAR | 2 |
Situação agenda do dia | CHAR | 1 ( 1- livre, 2-ocupado) |
Agenda do dia | PONTEIRO |
A estrutura da agenda dos consultórios de pronto atendimento tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Dia do mês | CHAR | 2 |
Hora do dia | CHAR | 4 |
Situação da hora | CHAR | 1 ( 1- livre, 2-ocupado) |
Médico | PONTEIRO | |
Paciente | PONTEIRO |
A estrutura dos leitos da unidade de pronto atendimento tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – número do leito | CHAR | 2 |
Situação | CHAR | 1 ( 1- livre, 2-ocupado) |
Paciente | PONTEIRO | |
Médico | PONTEIRO |
A estrutura dos médicos tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – CREMEB do médico | CHAR | 8 |
Nome | CHAR | 40 |
Especialidade | CHAR | 20 |
Remuneração por consulta | FLOAT | |
Remuneração por cirurgia | FLOAT | |
Paciente | PONTEIRO |
A estrutura dos pacientes tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código do paciente | CHAR | 10 |
Nome | CHAR | 40 |
Médico | PONTEIRO | |
Enfermidade | CHAR | 50 |
Tipo atendimento | CHAR | 1 (1-Pronto A., 2-Ambulatorial, 3-internamento) |
Tipo de acomodação | CHAR | 1 (1- Leito Pronto A, 2-Enfermaria, 3-Apartamento, 4-Semi-intensiva, 5-Intensiva |
Conta | PONTEIRO | |
Código do Plano | CHAR | 8 |
Prontuário | PONTEIRO |
A estrutura das contas dos pacientes tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código do paciente | CHAR | 10 |
Procedimento | PONTEIRO | |
Consulta | PONTEIRO | |
Medicamento | PONTEIRO | |
Diárias | PONTEIRO |
As estruturas de procedimento, consulta, medicamento e diárias tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código do item | CHAR | 10 |
Nome | CHAR | 40 |
Valor | FLOAT |
A estrutura de Prontuário dos pacientes tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código do paciente | CHAR | 10 |
Procedimento | PONTEIRO | |
Consulta | PONTEIRO | |
Medicamento | PONTEIRO | |
Exames | PONTEIRO | |
Doenças | PONTEIRO |
A estrutura de Doenças tem os seguintes campos:
Campo | Tipo | Tamanho |
---|---|---|
Código – código da doença | CHAR | 10 |
Gravidade | CHAR | 1 – Alta, 2 – Média, 3 - Baixa |
Procedimento indicado | PONTEIRO | |
Medicamento indicado | PONTEIRO | |
Exame de imagem indicado | PONTEIRO | |
Exame de laboratório indicado | PONTEIRO |
Caso o aluno considere necessário ele pode criar outras estruturas complementares, devendo documentá-las, a exemplos das aqui apresentadas.
As Estruturas destinadas a dados que tenham quantidades de itens pré-determinadas devem ser armazenadas em Listas Lineares com alocação sequencial e estática, com o índice do primeiro elemento armazenado em uma variável de nome PRIMEIRO e uma variável de nome FIM com o índice do último elemento alocado. As demais em Listas Lineares com alocação não sequencial e dinâmica ( encadeada ). O tipo de lista utilizada, simple, circular, dupalmente encadeada, pilha, fila ou árvore, fica a critério do aluno.
Cada equipe deve acrescentar uma estrutura de árvore binária para cada lista com alocação estática, visando guardar os índices ( endereços ) das células, mantendo-as ordenadas por ordem do código ( chave da lista ). Deve ser criadas operações para gerar índice de cada lista e para imprimir o conteúdo das listas em ordem crescente de código, usando a estrutura de que guarda os índices ( árvores binárias ).
As tarefas elencadas neste trabalho, referentes às estruturas e suas operações, devem ser executadas pelas equipes, conforme a seguinte divisão:
1) Criar cada uma das estruturas
2) Fazer cada uma das estruturas vazia
3) Teste se está vazia, para cada uma das estruturas
4) Teste se está cheia, para cada uma das estruturas
5) Inserir item em cada uma das estruturas
6) Retirar item em cada uma das estruturas
7) Listar todos os elementos de cada uma das estruturas
8) Obter o conteúdo de um de terminado item de cada uma das estruturas
O programa principal deve providenciar a inicialização das estruturas e interagir com o usuário, apresentando um menu das operações que ele deseja fazer. Deve ter uma opção no menu para encerrar as operações.
O programa principal deve ser comum a todos os grupos.
43) Paciente [NEW]
9) Internar um paciente em um quarto
10) Lançar diária de um paciente de um quarto
11) Dar alta de um paciente de um quarto
12) Internar um paciente em uma enfermaria
13) Lançar diária de um paciente de uma enfermaria
14) Dar alta de um paciente de uma enfermaria
44) Médico [NEW]
15) Internar um paciente em uma unidade de tratamento semi intensivo
16) Lançar diária de paciente em uma unidade de tratamento semi intensivo
17) Dar alta de um paciente em uma unidade de tratamento semi intensivo
21) Agendar uma consulta para um paciente em um consultório para um médico
22) Registrar o resultado da consulta de uma paciente
18) Internar um paciente em uma unidade de tratamento intensivo
19) Lançar diária de paciente em uma unidade de tratamento intensivo
20) Dar alta de um paciente em uma unidade de tratamento intensivo
23) Agendar um exame para um paciente em uma unidade de exame de imagem
24) Registrar o resultado de um exame de imagem de um paciente
25) Registrar a entrada de material para exames de laboratório de um paciente
26) Registrar o resultado dos exames de laboratório de um paciente
27) Registrar entrada de medicamento na Farmácia Central
28) Registrar transferência de medicamento da farmácia central para farmácia Satélite
29) Confirmar recepção de medicamento na Farmácia Satélite
30) Lançar medicamento para uma paciente
31) Recepcionar paciente no Pronto Atendimento
32) Agendar paciente do pronto atendimento para um consultório
33) Encaminhar paciente do pronto atendimento para um consultório
34) Registrar consulta de um paciente no consultório do Pronto Atendimento e seu resultado
35) Internar um paciente em leito da unidade do Pronto Atendimento
36) Lançar diária para um paciente em leito da unidade do Pronto Atendimento
37) Dar alta a um paciente em leito da unidade do Pronto Atendimento
38) Fechar a conta de um paciente
39) Emitir despesas de uma paciente
40) Emitir fatura de um paciente
41) Enviar faturas de pacientes para um determinado convênio
42) Emitir relatório de faturamento mensal
Arquivo "x.h": ...
Arquivo "x.h": ...