RESTful API für ein Telemedizin-Terminsystem, entwickelt mit Laravel.
- Verwaltung von Ärzten und deren Fachgebieten
- Terminbuchung und -stornierung
- Verfügbare Zeitfwenster abrufen
- Echtzeit-Verfügbarkeitsprüfung
- E-Mail-Benachrichtigungen für Terminbestätigungen (Faked, nur Log Einträge)
- Suchfunktion für Ärzte und Fachgebiete
- Repository klonen git clone https://github.com/klas/telemedizin.git
- Abhängigkeiten installieren:
docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php84-composer:latest composer install --ignore-platform-reqs - Wenn einige Classes fehlen:
docker run --rm --interactive --tty --volume $PWD:/app composer dump-autoload - .env-Datei kopieren:
cp .env.example .env - Den Container starten:
vendor/bin/sail up -d - Migrationen und Seeder ausführen:
vendor/bin/sail artisan migrate:fresh --seed
Die API ist nun unter http://localhost verfügbar.
GET /api/v1/time-slots?doctor_id={id}&datum={datum}- Verfügbare Zeitfenster für einen Arzt abrufenGET /api/v1/time-slots/check-availability/{id}- Echtzeit-Verfügbarkeit eines Zeitfensters prüfen.
GET /api/v1/appointments- Alle Termine abrufenGET /api/v1/appointments/{id}- Einen bestimmten Termin abrufenPOST /api/v1/appointments- Einen neuen Termin erstellenPUT /api/v1/appointments/{id}/cancel- Einen Termin stornieren
GET /api/v1/doctors- Alle Ärzte abrufenGET /api/v1/doctors/{id}- Einen bestimmten Arzt abrufenGET /api/v1/doctors?search={suchbegriff}- Ärzte nach Name oder Fachgebiet suchen
GET /api/v1/specializations- Alle Fachgebiete abrufen
curl -X GET "http://localhost/api/v1/time-slots?doctor_id=1&datum=2025-03-20"curl -X POST http://localhost/api/v1/appointments \
-H "Content-Type: application/json" \
-d '{
"doctor_id": 1,
"patient_name": "Max Mustermann",
"patient_email": "max@example.com",
"date_time": "2025-03-20 14:30:00"
}'curl -X GET "http://localhost/api/v1/doctors?search=Kardiologie"Unit-Tests können mit folgendem Befehl ausgeführt werden:
vendor/bin/sail artisan test- Doctor:
id,name,specialization_id - Specialization:
id,name - Appointment:
id,doctor_id,patient_name,patient_email,date_time,status - TimeSlot:
id,doctor_id,start_time,end_time,is_available
Dieses Projekt ist unter der MIT-Lizenz lizenziert.