You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Start with an overview or a brief description of what the project is about and what it does. For example -
6
+
The Eligibility Signposting API and Eligibility Data Product are designed to be the single source of the truth for providing trustworthy assessments of an individual’s eligibility based upon clinically assured data sources, for one or more vaccinations. It will also provide details about whether the individual can book/get a vaccine and how they can get vaccinated where relevant.
7
7
8
-
Welcome to our repository template designed to streamline your project setup! This robust template provides a reliable starting point for your new projects, covering an essential tech stack and encouraging best practices in documenting.
8
+
Initially this will support inclusion of eligibility for Respiratory Syncytial Virus (RSV) vaccination for older adults within the NHS App (Vaccinations in the App).
9
9
10
-
This repository template aims to foster a user-friendly development environment by ensuring that every included file is concise and adequately self-documented. By adhering to this standard, we can promote increased clarity and maintainability throughout your project's lifecycle. Bundled within this template are resources that pave the way for seamless repository creation. Currently supported technologies are:
11
-
12
-
- Terraform
13
-
- Docker
14
-
15
-
Make use of this repository template to expedite your project setup and enhance your productivity right from the get-go. Enjoy the advantage of having a well-structured, self-documented project that reduces overhead and increases focus on what truly matters - coding!
10
+
The software will only be used for signposting an individual to an appropriate service. Ultimately the eligibility for a particular vaccination will be decided by a healthcare professional at the point of care prior to giving the vaccination.
16
11
17
12
## Table of Contents
18
13
19
-
-[Repository Template](#repository-template)
14
+
-[Vaccination Eligibility Data Product](#vaccination-eligibility-data-product)
20
15
-[Table of Contents](#table-of-contents)
21
16
-[Setup](#setup)
22
17
-[Prerequisites](#prerequisites)
@@ -32,20 +27,20 @@ Make use of this repository template to expedite your project setup and enhance
32
27
33
28
## Setup
34
29
35
-
By including preferably a one-liner or if necessary a set of clear CLI instructions we improve user experience. This should be a frictionless installation process that works on various operating systems (macOS, Linux, Windows WSL) and handles all the dependencies.
36
-
37
-
Clone the repository
30
+
First, ensure [Pprerequisites](#prerequisites) are met. Then clone the repository, and install dependencies.
The following software packages, or their equivalents, are expected to be installed and configured:
47
41
48
-
-[Docker](https://www.docker.com/) container runtime or a compatible tool, e.g. [Podman](https://podman.io/),
42
+
-[Python](http://python.org) version 3.13. (It may be easiest to use [pyenv](https://github.com/pyenv/pyenv) to manage Python versions.)
43
+
-[Docker](https://www.docker.com/) container runtime or a compatible tool, e.g. [colima](https://github.com/abiosoft/colima) or [Podman](https://podman.io/),
49
44
-[asdf](https://asdf-vm.com/) version manager,
50
45
-[GNU make](https://www.gnu.org/software/make/) 3.82 or later,
51
46
@@ -69,22 +64,46 @@ The following software packages, or their equivalents, are expected to be instal
69
64
70
65
### Configuration
71
66
72
-
Installation and configuration of the toolchain dependencies
|`LOG_LEVEL`|`WARNING`| Logging level. Must be one of `DEBUG`, `INFO`, `WARNING`, `ERROR` or `CRITICAL` as per [Logging Levels](https://docs.python.org/3/library/logging.html#logging-levels) |
77
76
78
77
## Usage
79
78
80
79
After a successful installation, provide an informative example of how this project can be used. Additional code snippets, screenshots and demos work well in this space. You may also link to the other documentation resources, e.g. the [User Guide](./docs/user-guide.md) to demonstrate more use cases and to show more features.
81
80
82
81
### Testing
83
82
83
+
Run all tests and linting:
84
+
85
+
```shell
86
+
make precommit
87
+
```
88
+
84
89
There are `make` tasks for you to configure to run your tests. Run `make test` to see how they work. You should be able to use the same entry points for local development as in your CI pipeline.
85
90
91
+
## Conflict with yanai
92
+
93
+
If you have previously built [yanai](https://nhsd-confluence.digital.nhs.uk/pages/viewpage.action?pageId=48826732), which is the platform we use to supply data to this project, that uses an old version of localstack that does not support our Python version. We have pinned the correct version here and yanai have their version pinned as well so it should work fine, but sometimes issues can arise - if so then removing the docker image can solve that, before then rebuilding.
94
+
95
+
```shell
96
+
docker rmi localstack/localstack
97
+
```
98
+
86
99
## Design
87
100
101
+
We'll be separating our [presentation](https://martinfowler.com/eaaDev/SeparatedPresentation.html) layer (where API logic lives, in [`views/`](src/eligibility_signposting_api/views)), [business services](https://martinfowler.com/eaaCatalog/serviceLayer.html) layer (where business logic lives, in [`services/`](src/eligibility_signposting_api/services)) and [repository](https://martinfowler.com/eaaCatalog/repository.html) layer (where database logic lives, [`repos/`](src/eligibility_signposting_api/repos)). We will be using [wireup](https://pypi.org/project/wireup/) for [dependency injection](https://pinboard.in/u:brunns/t:dependency-injection), so services get their dependencies given to them ("injection"), and wireup takes care of that. (We'll usually use the [`@service` annotation](https://maldoinc.github.io/wireup/latest/services/), but [factory functions](https://maldoinc.github.io/wireup/latest/factory_functions/) will be used where necessary, typically for creating resources from 3rd party libraries.) We'll be using [Pydantic](https://pypi.org/project/pydantic/) for both response models and database models.
102
+
103
+
[app.py](src/eligibility_signposting_api/app.py) is the best place to start exploring the code.
104
+
105
+
Local tests will use [localstack](https://www.localstack.cloud/), started & stopped using [pytest-docker](https://pypi.org/project/pytest-docker/). We'll make extensive use of [pytest fixtures](https://docs.pytest.org/en/6.2.x/fixture.html), [builders](https://pypi.org/project/factory-boy/) and [matchers](https://pypi.org/project/pyhamcrest/) to keep our tests clean.
106
+
88
107
### Diagrams
89
108
90
109
The [C4 model](https://c4model.com/) is a simple and intuitive way to create software architecture diagrams that are clear, consistent, scalable and most importantly collaborative. This should result in documenting all the system interfaces, external dependencies and integration points.
@@ -119,7 +138,7 @@ Describe or link templates on how to raise an issue, feature request or make a c
119
138
120
139
## Contacts
121
140
122
-
Provide a way to contact the owners of this project. It can be a team, an individual or information on the means of getting in touch via active communication channels, e.g. opening a GitHub discussion, raising an issue, etc.
141
+
Please contact the teamon [Slack](https://nhsdigitalcorporate.enterprise.slack.com/archives/C08ATG7TBDW)
0 commit comments