71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
from flask import Flask, jsonify, request
|
|
import requests
|
|
|
|
app = Flask(__name__)
|
|
|
|
# набор данных пациентов и их врачей
|
|
patients_data = [
|
|
{'id': 1, 'name': 'Patient A', 'email': 'patient.a@example.com', 'doctor_id': 1},
|
|
{'id': 2, 'name': 'Patient B', 'email': 'patient.b@example.com', 'doctor_id': 2},
|
|
{'id': 3, 'name': 'Patient C', 'email': 'patient.c@example.com', 'doctor_id': 1},
|
|
]
|
|
|
|
# URL сервиса докторов
|
|
doctor_service_url = "http://localhost:5000"
|
|
|
|
|
|
@app.route('/', methods=['GET'])
|
|
def get_index():
|
|
return "это второй сервис"
|
|
|
|
|
|
@app.route('/patients', methods=['GET'])
|
|
def get_patients():
|
|
return jsonify(patients_data)
|
|
|
|
|
|
@app.route('/patients/<int:id>', methods=['GET'])
|
|
def get_patient(id):
|
|
for patient in patients_data:
|
|
if patient['id'] == id:
|
|
return jsonify(patient)
|
|
return jsonify({'error': 'Пациент не найден'}), 404
|
|
|
|
|
|
@app.route('/patients', methods=['POST'])
|
|
def create_patient():
|
|
new_patient = request.json
|
|
# назначить уникальный id новому пациенту
|
|
new_patient['id'] = len(patients_data) + 1
|
|
patients_data.append(new_patient)
|
|
|
|
# отправляем запрос другому сервису
|
|
requests.post(f"{doctor_service_url}/doctors/1/patients", json=new_patient)
|
|
|
|
return jsonify(new_patient), 201
|
|
|
|
|
|
@app.route('/patients/<int:id>', methods=['PUT'])
|
|
def update_patient(id):
|
|
for patient in patients_data:
|
|
if patient['id'] == id:
|
|
patient.update(request.json)
|
|
# отправляем запрос другому сервису
|
|
requests.put(f"{doctor_service_url}/doctors/1/patients/{id}", json=request.json)
|
|
return jsonify(patient), 200
|
|
return jsonify({'error': 'Пациент не найден'}), 404
|
|
|
|
|
|
@app.route('/patients/<int:id>', methods=['DELETE'])
|
|
def delete_patient(id):
|
|
# отправляем запрос другому сервису
|
|
requests.delete(f"{doctor_service_url}/doctors/1/patients/{id}")
|
|
|
|
global patients_data
|
|
patients_data = [patient for patient in patients_data if patient['id'] != id]
|
|
return jsonify({'message': 'Пациент удален'}), 200
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=5001)
|