Repository navigation
Assignment 4
Request for Changes in Requirement Document (1)
Request for Changes in Requirement Document (2)
Request for Changes in Requirement Document (3)
Request for Changes in Requirement Document (4)
Request for Changes in Requirement Document (5)
Updated Requirement Document (RD)

The system diagram displays the deployment of a new and altered feature, highlighted in red, as requested by clients. The operational, communication, and knowledge components are denoted by blue, purple, and green boxes, respectively. The security team holds access control over ERFM, and we provide ongoing support to ensure the system operates seamlessly. ERFM enables multimedia access and includes a queue option for both emergency and non-emergency situations, with a real-time messaging gateway providing patients with information on wait times and hospital ratings. Patients utilizing the service may input the number of individuals in the queue. The enhanced features of the system will display wait times for emergency and non-emergency access.
In Assignment 1, it was written that one of the ways software self adaptation could be applied to this program is by adjusting the estimated wait time based on the queue and how many people are in it. This implies that the program self adapts according to the number of people in queue. This was implemented in our program by making the estimated wait time depend on the number of people. Each person in the queue adds a randomly generated number in a range (e.g. 10-30 minutes), and likewise, decreases accordingly when the queue reduces. The Math library in Python was used to generate the random numbers. The implementation can be seen in action by launching the website and clicking on the plus and minus buttons on a hospital pop-up.
Maintain the development pipeline that supports Continuous Integration and Continuous Delivery (CI/CD)
For Continuous Integration and Continuous Delivery, we have decided to use Github Actions. On Github, after choosing the repository, we chose Actions, and we created a new workflow. Because we are developing a python project using Django, we opted to use the Django workflow, and started configuring it. This workflow builds and tests a Django project, and every time we update our code and push the updated code to Github, it will automatically run tests that are implemented in the tests.py file.
To implement this, we have created 2 test cases for our application in the tests.py file. The first test case tests the title of the page, and the second test case tests whether the map exists on our website. Both the testcases passes successfully. Below, you can see the content of the tests.py file:

This tool helps automate our testcases. Every time our project is updated, and push the changed code to Github, these tests will automatically run and test the changed code.
Github Actions is better than other tools as it is easy to use even for those who have no experience with Continuous Integration and Continuous Deployment. It is also free to use, and there are many workflows to choose from for different kinds of projects.
We have fully completed the development of our application after 20% changes requested by the clients. These changes include:
- Moving the location of the "🏠" (home) button to the bottom-right of the screen and applying a modern styling to it.
- Having the hospital information pop-up at the bottom-middle of the screen be close-able.
- Improving the algorithm used for calculating wait times and updating queue lengths.
- Making additional stylistic changes to the pop-up and general layout of the web page.
Please follow the steps outlined in the README.md file attached in the root of this repository to get the fully functional application running locally on your machine.