-
프로젝트 클론을 받아주세요.
❯ git clone https://github.com/tasddc1226/doctor-for-you.git
-
클론된 프로젝트로 이동합니다.
❯ cd doctor-for-you
-
venv를 이용한 가상환경을 생성 & 활성화 합니다.
❯ python3 -m venv venv ❯ source 프로젝트경로/doctor-for-you/venv/bin/activate
-
아래의 명령어로 pip upgrade 설치 후 가상환경에 의존성 설치를 진행합니다.
❯ pip install --upgrade pip ❯ pip install -r requirements.txt
-
Database(sqlite3) migration을 진행합니다.
❯ python manage.py makemigrations ❯ python manage.py migrate
-
데이터를 추가하기 위해 아래의 명령으로 슈퍼유저 생성을 진행합니다.
❯ python manage.py createsuperuser
-
서버를 동작시키고
localhost:8000/admin
경로로 진입 후 생성한 슈퍼유저로 로그인합니다.❯ python manage.py runserver
-
의사, 환자 및 의사의 평일 혹은 주말에 대한 데이터를 임의로 추가합니다.
-
의사의 진료과 같은 경우 아래와 같이 콤마(,)로 연결하여 데이터를 추가할 수 있습니다.
-
의사의 비급여진료과목은 없을 수 있습니다.
-
의사의 평일 영업시간에 대한 데이터를 추가합니다.
-
의사의 주말 영업시간에 대한 데이터를 추가합니다.
-
GET
/api/v1/search/?dept=일반의
-
Server Response
// status: 200 [ { "name": "손웅래" }, { "name": "선재원" } ]
-
GET
/api/v1/search/?hospital=메라키
-
Server Response
// status: 200 [ { "name": "손웅래" }, { "name": "선재원" } ]
-
GET
/api/v1/search/?hospital=메라키&doctor=손웅래
-
Server Response
// status: 200 [ { "name": "손웅래" } ]
-
GET
/api/v1/search/?dept=한의학과&doctor=선재원
-
Server Response
// status: 200 [ { "name": "선재원" } ]
-
GET
/api/v1/search/?doctor=손웅래&non_paid=다이어트
-
Server Response
// status: 200 []
-
POST
/api/v1/search/
-
Request Body
{ "year": 2022, "month": 7, "day": 21, "hour": 15, "min" : 30 }
-
Server Response
// status: 200 [ { "name": "손웅래" }, { "name": "선재원" } ]
-
Request Body
{ "year": 2022, "month": 7, "day": 23, "hour": 9, "min" : 30 }
-
Server Response
// status: 200 [ { "name": "선재원" } ]
-
POST
/api/v1/cares/
-
Request Body
{ "patient_id" : 1, "doctor_id" : 1, "year": 2022, "month": 7, "day": 22, "hour": 16, "min": 10 }
-
Server Response
// status: 201 { "id": 20, "doctor_name": "손웅래", "patient_name": "김환자", "book_time": "2022-07-22T16:10:00", "created_at": "2022-07-21T17:27:29.642660", "expire_time": "2022-07-21T17:47:29.632890", "is_booked": false, "patient": 1, "doctor": 1 }
-
예약 날짜가 현 시점보다 이전일 경우
-
Request Body
{ "patient_id" : 1, "doctor_id" : 1, "year": 2022, "month": 7, "day": 20, "hour": 16, "min": 10 }
-
Server Response
// status: 400 { "message": "진료 예약이 불가능합니다. 다른 시간을 선택해주세요." }
-
희망 진료 시각에 의사가 진료(영업)를 하지 않는 경우
-
Request Body
{ "patient_id" : 1, "doctor_id" : 1, "year": 2022, "month": 7, "day": 21, "hour": 21, "min": 10 }
-
Server Response
// status: 400 { "message": "진료 예약이 불가능합니다. 다른 시간을 선택해주세요." }
-
GET
/api/v1/cares/?id=1
-
Server Response
// status: 200 [ { "id": 16, "patient_name": "박환자", "book_time": "2022-07-21T13:45:00", "expire_time": "2022-07-21T13:25:39.545884" }, { "id": 20, "patient_name": "김환자", "book_time": "2022-07-22T16:10:00", "expire_time": "2022-07-21T17:47:29.632890" } ]
-
PATCH
/api/v1/cares/20
-
Server Response
// status: 200 { "id": 20, "doctor_name": "손웅래", "patient_name": "김환자", "book_time": "2022-07-22T16:10:00", "created_at": "2022-07-21T17:27:29.642660", "expire_time": "2022-07-21T17:47:29.632890", "is_booked": true, "patient": 1, "doctor": 1 }
-
존재하지 않는 요청인 경우
-
Server Response
// status: 404 { "message": "해당 진료 요청이 존재하지 않습니다." }
-
이미 요청이 수락이 된 경우
-
Server Response
// status: 400 { "message": "이미 수락된 예약입니다." }
-
expire_time이 만료된 경우
-
Server Response
// status: 400 { "message": "예약 요청이 만료되었습니다." }