Doctors API
The Doctors API is used to create, view, update, and delete doctor records.
Backend folder:
app/doctor/
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /doctor/ | Create doctor |
| GET | /doctor/ | Get all doctors |
| GET | /doctor/{id} | Get doctor by ID |
| PUT | /doctor/{id} | Update doctor |
| DELETE | /doctor/{id} | Delete doctor |
| GET | /doctor/reg_number/{reg_number} | Get doctor by registration number |
Create Doctor
POST /doctor/
Creates a new doctor record.
This request also creates the linked user account for the doctor.
Request Body
{
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"alt_phone_number": "+9779811111111",
"bio": "Senior cardiologist with experience in heart disease treatment.",
"license_number": "NMC-12345",
"gender": "Male",
"dob": "1985-05-26",
"experience": 10,
"consultation_fee": 1500,
"addresses": [
{
"address_type": "home",
"street": "Baneshwor",
"city": "Kathmandu",
"state": "Bagmati",
"postal_code": "44600",
"country": "Nepal"
}
],
"user": {
"username": "dr.anil",
"phone_number": "+9779800000000",
"type": "doctor",
"password": "StrongPassword123@"
}
}
Note: password must contain at least one symbol from the set:
[Field Notes
| Field | Type | Description |
|---|---|---|
first_name | string | Doctor first name |
middle_name | string | Doctor middle name |
last_name | string | Doctor last name |
alt_phone_number | string | Alternative phone number |
bio | string | Short professional bio |
license_number | string | Medical license number |
gender | string | Doctor gender |
dob | date | Date of birth |
experience | number | Years of experience |
consultation_fee | number | Doctor consultation fee |
addresses | array of objects | Doctor address list |
addresses[].address_type | string | Type of address, such as home or office |
addresses[].street | string | Street name or area |
addresses[].city | string | City |
addresses[].state | string | State or province |
addresses[].postal_code | string | Postal code |
addresses[].country | string | Country |
user | object | Linked user account details |
user.username | string | Username for login |
user.email | string | User email address |
user.phone_number | string | User phone number |
user.type | string | User type, for example doctor |
user.password | string | Account password |
Response Example
{
"id": "7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91",
"reg_number": "DOC-001",
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"alt_phone_number": "+9779811111111",
"bio": "Senior cardiologist with experience in heart disease treatment.",
"license_number": "NMC-12345",
"gender": "Male",
"dob": "1985-05-26",
"experience": 10,
"consultation_fee": 1500,
"addresses": [
{
"address_type": "home",
"street": "Baneshwor",
"city": "Kathmandu",
"state": "Bagmati",
"postal_code": "44600",
"country": "Nepal"
}
],
"user": {
"id": "9a1e1f0d-b7d6-4ef0-91d1-4e17f19dd222",
"username": "dr.anil",
"phone_number": "+9779800000000",
"type": "doctor"
}
}
Get All Doctors
GET /doctor/
Returns all doctor records.
Response Example
[
{
"id": "7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91",
"reg_number": "DOC-001",
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"gender": "Male",
"license_number": "NMC-12345",
"experience": 10,
"consultation_fee": 1500
}
]
Get Doctor By ID
GET /doctor/{id}
Returns a single doctor by UUID.
Path Parameter
| Parameter | Type | Description |
|---|---|---|
id | UUID | Doctor ID |
Example Request
GET /doctor/7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91
Response Example
{
"id": "7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91",
"reg_number": "DOC-001",
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"gender": "Male",
"dob": "1985-05-26",
"license_number": "NMC-12345",
"experience": 10,
"consultation_fee": 1500
}
Update Doctor
PUT /doctor/{id}
Updates an existing doctor record by UUID.
Path Parameter
| Parameter | Type | Description |
|---|---|---|
id | UUID | Doctor ID |
Example Request
PUT /doctor/7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91
Request Body
{
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"alt_phone_number": "+9779811111111",
"bio": "Senior cardiologist with 12 years of experience.",
"license_number": "NMC-12345",
"gender": "Male",
"dob": "1985-05-26",
"experience": 12,
"consultation_fee": 1800,
"addresses": [
{
"address_type": "home",
"street": "Baneshwor",
"city": "Kathmandu",
"state": "Bagmati",
"postal_code": "44600",
"country": "Nepal"
}
],
"user": {
"username": "dr.anil",
"phone_number": "+9779800000000",
"type": "doctor",
"password": "StrongPassword123@"
}
}
Response Example
{
"id": "7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91",
"reg_number": "DOC-001",
"message": "Doctor updated successfully"
}
Delete Doctor
DELETE /doctor/{id}
Deletes a doctor record by UUID.
Path Parameter
| Parameter | Type | Description |
|---|---|---|
id | UUID | Doctor ID |
Example Request
DELETE /doctor/7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91
Response Example
{
"message": "Doctor deleted successfully"
}
Get Doctor By Registration Number
GET /doctor/reg_number/{reg_number}
Returns a doctor using their registration number.
Path Parameter
| Parameter | Type | Description |
|---|---|---|
reg_number | string | Doctor registration number |
Example Request
GET /doctor/reg_number/DOC-001
Response Example
{
"id": "7b3b7f9e-9d4e-4b21-8a2c-3cb0d2f07d91",
"reg_number": "DOC-001",
"first_name": "Anil",
"middle_name": "Kumar",
"last_name": "Sharma",
"gender": "Male",
"license_number": "NMC-12345",
"experience": 10,
"consultation_fee": 1500
}
Possible Responses
| Status Code | Meaning |
|---|---|
| 200 | Request successful |
| 201 | Doctor created successfully |
| 400 | Invalid request data |
| 401 | Not authenticated |
| 403 | Permission denied |
| 404 | Doctor not found |
| 422 | Validation error |