Nie zrobisz tego w jednym zapytaniu, ponieważ struktura danych jakie chcesz otrzymać nie jest płaska, przykładowo efektem wizyty może być przepisanie więcej niż jednego leku, ponadto możliwe że w trakcie jednej wizyty zostanie przeprowadzone więcej niż jeden rodzaj badania. Czasem i lekarz może zachorować, więc należy uwzględnić to w strukturze danych. Proponuję następująca strukturę tabel:
osoba
osoba_id PK
nazwisko
PESEL
...
pacjent
osoba_id PK
ubezbieczenie_nr
...
lekarz
osoba_id PK
licencja_nr
...
specjalnosc
specjalnosc_id PK
nazwa
...
lekarz_specjalnosc
osoba_id PK
specjalnosc_id PK
...
wizyta
wizyta_id PK
lekarz_id
pacjent_id
data
cel
opis_objawy
miejsce_wizyty
choroba_id
...
badanie
badanie_id PK
...
wizyta_badanie
wizyta_id PK
badanie_id PK
choroba
choroba_id PK
klasyfikacja_kod_nfz
...
lek
lek_id PK
nazwa
...
wizyta_lek
wizyta_id PK
lek_id PK
Przykładowe zapytanie o wizyty:
SELECT
wizyta.wizyta_id, wizyta.data, wizyta.miejsce, wizyta.choroba_id, choroba.nazwa, lek_oso.nazwisko, lekarz.licencja_nr, pac_oso.nazwisko,
FROM
wizyta, lekarz, pacjent, choroba, osoba AS lek_oso, osoba AS lek_pac
WHERE
wizyta.lekarz_id=lekarz.osoba_id AND wizyta.osoba_id=pacjent.osoba_id AND wizyta.choroba_id=choroba.choroba_id AND
wizyta.lekarz_id=lek_oso.osoba_id AND wizyta.pacjent_id=pac_oso.osoba_id
W trakcie wizyty przeprowadzono badania, podaj parametr
SELECT
badanie.nazwa
FROM
wizyta_badanie, badanie
WHERE
wizyta_badanie=:WIZYTA_ID AND wizyta_badanie.badanie=badanie.badanie_id
ORDER BY
badanie.nazwa
W trakcie wizyty przepisano leki, podaj parametr
SELECT
lek.nazwa
FROM
wizyta_lek, lek
WHERE
wizyta_lek=:WIZYTA_ID AND wizyta_lek.lek_id=lek.lek_id
ORDER BY
lek.nazwa