Tu pregunta no me queda nada clara. Por ejemplo, habla de que los pacientes y las enfermeras están vinculados a "Prioridad" y los médicos están vinculados a "Tiempo" y "Prioridad", y escribe como si fueran otras tablas, pero no las describe.
A continuación se muestra cómo resolvería su problema, en función de la comprensión confusa que tengo de su problema.
No sé qué significa A&E. Supongo que es una clínica, un hospital u otro centro.
aes
id unsigned int(P)
street_address varchar(75)
city_id unsigned int(F cities.id)
postcode varchar(10) // Whatever the size of your postal code.
telenumber varchar(10) // Whatever the size of your telenumber.
Obviamente, su "estado" podría ser diferente. Aquí en los Estados Unidos, todos nuestros estados tienen un código único de 2 caracteres.
cities
id unsigned int(P)
name varchar(50)
state_id char(2)(F states.id)
No describió lo que necesita saber sobre los médicos, así que asumo que es lo mismo que necesita saber sobre las enfermeras.
doctors
id unsigned int(P)
forename varchar(50)
surname varchar(50)
Cosas como:gripe, bronquitis, sinusitis, etc.
illnesses
id unsigned int(P)
description varchar(75)
nurses
id unsigned int(P)
forename varchar(50)
surname varchar(50)
Puse el historial del paciente en su propia tabla para que podamos asociar varias enfermedades con cada paciente, así como una fecha en la que el paciente tuvo cada enfermedad.
patient_history
id unsigned int(P)
patient_id unsigned int(F patients.id)
illness_id unsigned int(F illnesses.id)
qwhen date
patients
id unsigned int(P)
forename varchar(50)
surname varchar(50)
gender enum('f','m')
dob date
street_address varchar(75)
city_id unsigned int(F cities.id)
postcode varchar(10) // Whatever the size of your postal code.
telenumber varchar(10) // Whatever the size of your telenumber.
Nuevamente, sus "estados" pueden tener una identificación o nombre de tamaño diferente.
states
id char(2)(P)
name varchar(50)
Cosas como:mareos, fatiga, congestión nasal, dificultad para respirar, etc.
symptoms
id unsigned int(P)
description varchar(50)
Esta tabla contiene información sobre cada vez que un paciente visita un servicio de urgencias. Cualquier registro que no tenga un end_time representaría a un paciente que se encuentra actualmente en un servicio de urgencias esperando ser atendido por un médico/enfermero. Puede determinar cuánto tiempo ha estado esperando un paciente comparando la hora actual con beg_time. Y, por supuesto, la prioridad sería ingresada/actualizada por el empleado de admisión, la enfermera, el médico, etc.
visits
id unsigned int(P)
patient_id unsigned int(F patients.id)
nurse_id unsigned int(F nurses.id)
ae_id unsigned int(F aes.id)
priority unsigned tinyint // 1 = Critical, 2 = Urgent, 3 = whatever...
beg_time datetime
end_time datetime
Múltiples médicos pueden ver a un paciente...
visits_doctors
id unsigned int(P)
visit_id unsigned int(F visits.id)
doctor_id unsigned int(F doctors.id)
Y varias enfermeras pueden atender a un paciente...
visits_nurses
id unsigned int(P)
visit_id unsigned int(F visits.id)
nurse_id unsigned int(F nurses.id)
Un paciente suele tener múltiples síntomas cuando viene de visita...
visits_symptoms
id unsigned int(P)
visit_id unsigned int(F visits.id)
symptom_id unsigned int(F symptoms.id)