At VIP Medical Group, we are building a new internal module for our Medwork platform—a system that allows our staff to register patients, assign them to doctors (providers), and track their clinical status throughout their care journey.
In this challenge, you’ll simulate part of this module by creating a full-stack application that allows managing patients, providers, and clinical statuses with a parent-child hierarchy.
We are not evaluating specific tools or patterns. We simply want to understand how you think, how you code, and how you approach real-world problems. Be yourself.
A functional full stack application with the ability to:
- Create patients and providers
- Assign a provider to a patient
- Change the patient’s clinical status (with hierarchy)
- Display the status change history of a patient
You must implement these 4 tables exactly as described below:
Field | Type |
---|---|
id | UUID |
full_name | string |
string | |
phone | string |
provider_id | UUID (FK) |
status_id | UUID (FK) |
created_at | datetime |
Field | Type |
---|---|
id | UUID |
full_name | string |
specialty | string |
created_at | datetime |
Field | Type |
---|---|
id | UUID |
name | string |
parent_id | UUID (nullable, FK to statuses) |
order | integer |
This table allows parent-child status relationships.
Field | Type |
---|---|
id | UUID |
patient_id | UUID (FK) |
status_id | UUID (FK) |
changed_at | datetime |
These statuses must be preloaded in the database:
-
Scheduled
-
Checked-In
In Consultation
Cancelled
-
No-Show
-
You can use a seed script or migrations to insert them.
-
Language: TypeScript
-
Framework: NestJS or Express
-
Database: PostgreSQL, MySQL, or MongoDB
-
If you prefer, you may separate logic into small services (e.g.,
patients-service
,statuses-service
)- Use HTTP, events, or gRPC for inter-service communication
- If using multiple services, you must include an API Gateway
- Framework: React (Vite)
- Styling: TailwindCSS
- State management: Redux Toolkit or Zustand
- Data fetching: Tanstack Query
You should include the following screens:
- Patient creation form
- Provider creation form
- Patient list (showing status and assigned provider)
- Patient status update control (e.g., dropdown)
- Patient status history (as timeline or list)
Optional screen: Provider list view.
-
You will receive a Git repository link for the base project.
-
Fork the repository, complete your work in a new branch, and submit a pull request to share your solution.
-
Include a
README.md
with:- Clear instructions to run the project locally
- A short explanation of your architecture or design decisions
- A seed script to preload providers and statuses
You should spend no more than 8 hours on this task.
Don’t worry if you can’t finish everything. What matters most is how far you get and how you approach the problem.