# Patient Profile Management (LP-1000)
## General Requirements
<p>
In this assignment, you are to create a simple Patient Profile Management application. You can make use of Bootstrap if you want quick ready-made templates. You are free to make any UI/UX decision.
</p>
<ul>
<li>The application should have a login/signup page.</li>
<li>Show list of patients once logged in.</li>
<li>The main patient page should only be accessible once authenticated.</li>
<li>Allow user to add new patient.</li>
<li>Allow user to edit existing patient detail.</li>
<li>Allow user to delete a patient.</li>
<li>Allow user to mark a patient as Special Attention.</li>
<li>Special Attention patients should always be listed at the top in alphabetical order.</li>
</ul>
## Application Requirements
<ol>
<li>Create a suitable schema with the database of your choice.</li>
<li>Be RESTful.</li>
<li>Have proper access control.</li>
<li>Write Unit tests.</li>
<li>Do your best to implement and follow best practices, conventions, and standards under all aspects.</li>
</ol>
## API Requirements
<ol>
<li>Create POST /signup endpoint for user signup. The endpoint should take email and password as payload.</li>
<li>Create POST /signin endpoint for user signin. The endpoint should take the same payload as /signup.
</li>
<li>Create a token-based authentication mechanism.</li>
<li>Create GET /patient endpoint to fetch all patients.
</li>
<li>Create POST /patient endpoint to add a new patient.
</li>
<li>Create PUT /patient/{patient_id} to update a patient.
</li>
<li>Create DELETE /patient/{patient_id} to delete a patient.
</li>
<li>All endpoints need to be accessible only to authenticated users.
</li>
<li>You will have to create a user and patient table for storing details.
</li>
<li>The mandatory fields for a patient are Full Name, Email, Contact, DOB and Profile picture. You can choose all extra fields. (e.g., address, notes, gender…)</li>
<li>Resize the patient image/photograph to a desirable size for a patient and upload the photographs to any free cloud storage service of your choice.
</li>
</ol>
## Your submission must include
<ol>
<li>Application should be properly documented. Make sure to add all the information necesary to run the project.
<ul>
<li>Short Description of project.</li>
<li>Frontend application screenshots.</li>
<li>Techstack used in application</li>
<li>Setup process.</li>
</ul>
</li>
<li>Unit tests and test coverage report</li>
<li>API Documentation (add to readMe.md)</li>
<li>Postman Collection (add the public link to readMe.md)</li>
</ol>
<hr />
## Good to have
<ol>
<li>Capability to add allergies.</li>
<li>Time-bound token authentication. The access token must expire after a few minutes, regenerated using a refresh token.</li>
<li>Database connection abstraction to support more than one database connections.</li>
</ol>
<hr />
### References
For reference you can use following these images. But use your own judgement for the UI/UX and showcase your creativity. Our expectation is a proper UI/UX for Login, Registration, List and Form.
#### Login / Registeration Page

#### Patient List

#### Patient Detail

###### tags: `FullStack` `Challenge1`