Está en la página 1de 4

EJERCICIO DE REFUERZO XQUERY - Gestión de un hospital

1) Mostrar la lista de los medicamentos recetados y el precio de los mismos recetados a los
pacientes que necesitan tratamiento de Traumatología.

for $med in
doc("HospitalDB/medicos.xml")//medico[especialidad="Traumatologia"]

let $nombres_recetados :=
doc("HospitalDB/medicamentos.xml")//receta[@codigoPaciente =
$med//historial_clinico/@codigoPaciente]/nombre

let $precios_recetados :=
doc("HospitalDB/medicamentos.xml")//receta[@codigoPaciente =
$med//historial_clinico/@codigoPaciente]/precio

return ($nombres_recetados,$precios_recetados)/text()

2) Mostrar el nombre de los pacientes que tienen una prioridad alta y la fecha en la que
ingresaron al hospital.

for $i in doc("HospitalDB/pacientes.xml")//paciente

let $historialClinico :=
doc("HospitalDB/medicos.xml")//historial_clinico[@codigoPaciente =
$i/@codigoPaciente]

where $historialClinico/@prioridad = "Alta"

order by $i/fecha_ingreso

return concat($i/nombre," ",$i/fecha_ingreso)

Otra solución

for $i in doc("HospitalDB/medicos.xml")//historial_clinico

let $nombre_paciente :=
doc("HospitalDB/pacientes.xml")//paciente[@codigoPaciente =
$i/@codigoPaciente]/nombre

let $fecha_paciente :=
doc("HospitalDB/pacientes.xml")//paciente[@codigoPaciente =
$i/@codigoPaciente]/fecha_ingreso

where $i/@prioridad="Alta"

order by $nombre_paciente

return concat($nombre_paciente," ",$fecha_paciente)


3) Mostrar los nombres de los pacientes que necesitan una operación junto con la
especialidad por la que se va operar.

for $paciente in doc("HospitalDB/pacientes.xml")//paciente

let $historialClinico :=
doc("HospitalDB/medicos.xml")//historial_clinico[@codigoPaciente =
$paciente/@codigoPaciente]

let $especialidad := $historialClinico/../../../especialidad

where $historialClinico/@operacion = "Si"

return concat($paciente/nombre," ", $paciente/apellidos," | Especialidad:


",$especialidad)

4) Mostrar el precio medio de los medicamentos que se han recetado en la especialidad de


Traumatología.

for $i in doc("HospitalDB/medicos.xml")//medico

where $i/especialidad = "Traumatologia"

let $medicamentos :=
doc("HospitalDB/medicamentos.xml")//receta[@codigoPaciente =
$i//historial_clinico/@codigoPaciente]/precio

let $media :=avg($medicamentos)

return $media

5) Mostrar el nombre y apellidos de todos los medicos que tienen paciente con prioridad
media.

for $i in doc("HospitalDB/medicos.xml")//historial_clinico

where $i/@prioridad = "Media"

let $nombre := $i/../../../nombre

let $especialidad := $i/../../../especialidad

return concat($nombre," ",$i/../../../apellidos," ",$especialidad)


Otra solución

for $medico in doc("HospitalDB/medicos.xml")//medico

where $medico/pacientes/paciente/historial_clinico/@prioridad = "Media"

return concat($medico/nombre," ",$medico/apellidos," |


",$medico/especialidad)

6) Mostrar el nombre y apellido del médico de cardiología, junto con el nombre de los
pacientes y el precio total de la medicación que se utiliza en la especialidad de Cardiología. Se
mostrarán en orden ascendente.
for $medico in
doc("HospitalDB/medicos.xml")//medico[especialidad="Cardiologia"]

let $nombre_pacientes :=
doc("HospitalDB/pacientes.xml")//paciente[@codigoPaciente =
$medico//historial_clinico/@codigoPaciente]/nombre

let $precio_medicamentos :=
doc("HospitalDB/medicamentos.xml")//receta[@codigoPaciente =
$medico//historial_clinico/@codigoPaciente]/precio

return (concat($medico/nombre," ",$medico/apellidos," ","


",sum($precio_medicamentos)),"Nombre pacientes: ",$nombre_pacientes/text())

7) Mostrar la información de los médicos (nombre, apellido y especialidad) de cada


especialidad junto con la media de medicamentos que han recetado a sus pacientes.

for $medico in doc("HospitalDB/medicos.xml")//medico

let $medicamentos := $medico//historial_clinico/@cantidad_medicamento

return concat("Nombre y Apellidos: ",$medico/nombre," ",$medico/apellidos,"


| Especialidad: ",$medico/especialidad," | Media medicamentos recetados:
",avg($medicamentos))
8) Mostrar las especialidades en las que se va realizar una operación junto con el nombre y el
código del paciente que va ser intervenido.

for $i in doc("HospitalDB/medicos.xml")//historial_clinico

where $i/@operacion="Si"

let $especialidad := $i/../../../especialidad

let $pacientes := doc("HospitalDB/pacientes.xml")//paciente[@codigoPaciente


= $i/@codigoPaciente]/nombre

return concat($pacientes," Codigo: ",$i/@codigoPaciente," ",$especialidad)

9) Mostrar la edad media de todos los pacientes del hospital y la media de precios de todos
los medicamentos que se utilizan en el hospital.

let $edades := doc("HospitalDB/pacientes.xml")//paciente/edad

let $precios := doc("HospitalDB/medicamentos.xml")//receta/precio

return concat("Media de edad pacientes: ",avg($edades)," Media precio


medicamentos: ",avg($precios))

10) Mostrar el nombre de los medicamentos que se fabrican en Italia, su precio y el nombre
del paciente que lo recibe junto con el medico y la especialidad del que lo ha recetado.

for $medicamento in doc("HospitalDB/medicamentos.xml")//receta

where $medicamento/fabricado_en = "Italy"

let $pacientes := doc("HospitalDB/pacientes.xml")//paciente[@codigoPaciente =


$medicamento/@codigoPaciente]/nombre

let $medicos :=
doc("HospitealDB/medicos.xml")//historial_clinico[@codigoPaciente =
$medicamento/@codigoPaciente]/../../../nombre

let $especialidades :=
doc("HospitalDB/medicos.xml")//historial_clinico[@codigoPaciente =
$medicamento/@codigoPaciente]/../../../especialidad

return concat($medicamento/nombre," ",$medicamento/precio," ",$pacientes,"


",$medicos," ",$especialidades)

También podría gustarte