Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,84 @@ c. Optionally validate using the NHS Digital Ontology Service (configured via en
The configuration is aimed at supporting different use cases. For example the lambda version with no ontology support is aimed at performing basic FHIR validation checks. This may just be FHIR core and schema validation but can also test against UKCore profiles.


## Variables

FHIR packages: [manifest.json](https://github.com/NHSDigital/IOPS-FHIR-Validation-Service/blob/main/src/main/resources/manifest.json)
HAPI Update: [pom.xml](https://github.com/NHSDigital/IOPS-FHIR-Validation-Service/blob/main/pom.xml)

# Custom Checks
Cusom error messages can be found within [/src/main/kotlin/uk/nhs/england/fhirvalidator/provider/ValidateR4Provider.kt](https://github.com/NHSDigital/IOPS-FHIR-Validation-Service/blob/update/6.8.3/src/main/kotlin/uk/nhs/england/fhirvalidator/provider/ValidateR4Provider.kt)
# Validator Update Guide

## Prerequisites

Installation of the following on a local machine

- [Maven](https://maven.apache.org/)
- Installation (Debian): [How to Install Apache Maven on Debian 11](https://www.itzgeek.com/how-tos/linux/debian/how-to-install-apache-maven-on-debian-11.html)

- [Docker](https://www.docker.com/)
- Installation (Debian): [Install Docker Engine](https://docs.docker.com/engine/install/)
*Note:*If the os is a fork from Debian, e.g. LMDE, replace $(. /etc/os-release && echo “$VERSION_CODENAME”) with $(echo <Debian- version-codename>)
Where <Debian-version-codename> e.g. bookworm (lowercase) for Debian.

- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
- [AWS Toolkit (optional)](https://aws.amazon.com/search/?searchQuery=toolkit)

- HAPI-FHIR
- The latest release of hapi-fhir can be found at [github.com/hapifhir/hapi-fhir](https://github.com/hapifhir/hapi-fhir)
- The changelog can be found at [hapifhir.io/hapi-fhir/docs/introduction/changelog](https://hapifhir.io/hapi-fhir/docs/introduction/changelog.html)

## Update AWS Server

- Go to https://github.com/NHSDigital/IOPS-FHIR-Validation-Service repo
- Create a new branch named update/<hapi-fhir version-number>
- edit pom.xml
- Set the <fhir.version> to the relevant hapi-fhir version
- Set the <version> to the same hapi-fhir version.

- Within the validator folder run the following:
- $ mvn clean install
- $ docker build -t fhir-validator-r4 .
- $ docker tag fhir-validator-r4:latest 365027538941.dkr.ecr.eu-west-2.amazonaws.com/fhir-validator-r4:<hapi-fhir version-number>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any risk with having these listed in a public repo?

Copy link
Copy Markdown

@declankieran declankieran Oct 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree here, publishing this isn't something that needs to be explained. Account ID's aren't considered sensitive

https://www.lastweekinaws.com/blog/are-aws-account-ids-sensitive-information/

But publishing the docker image is to do with deployment, which can be done in the background if necessary, and in that case I'd put the account ID etc in secrets

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From what KM showed us, building the docker image was done on his own machine using IntelliJ. We could create an action to do this here, which then allows us to keep the account ID in secrets and allows anyone to run the update. I dont see an issue with going the github action route, rather than documenting how to update manually?

I'll get on with that.

- $ docker tag fhir-validator-r4:latest 365027538941.dkr.ecr.eu-west-2.amazonaws.com/fhir-validator-r4:latest

- Login in to https://d-9c67018f89.awsapps.com/start/#/ (hscic acct)
- Click ‘Command line or programmatic access’ within NHS Digital IOPS FHIR dev
- Sign into AWS using either:
- Copy option 1 if using bash / windows / powershell
- Copy Option 2 into credentials.txt if you have aws toolkit installed

- run
- $ aws get-login-password –region eu-west-2 | docker login –username AWS –password stdin 365027538941.dkr.ecr.eu-west-2.amazonaws.com
- $ docker push 365027538941.dkr.ecr.eu-west-2.amazonaws.com/fhir-validator-r4:[hapi-fhir version-number]

- In AWS go to ‘Management console’
- Search for ECR
- Ensure the server is set to ‘eu-west-2’
- On the LHS choose repositories
- Within Private repositories choose ‘fhir-validator-r4’
- Ensure the latest image is the recently uploaded version.

- Search for ECS
- Go to ‘Task definitions’ (on LHS)
- Choose ‘iops-fhir-validation-service’
- Choose latest revision
- Choose ‘Create new revision’
- Go to ‘Container-1’ section
- Update the version number within the Image URI
- Click ‘Create’

- Go to Clusters (on LHS)
- Choose ‘iops-fhir-r4’
- Choose ‘svc-fhir-validator’
- Click ‘Update service’
- Change ‘Revision’ to the latest version
- Click ‘Update’
This will start the checks. Logs can be found within CloudWatch. ECS is set up for 1 task only so the previous task will shut down automatically.

## Create PR with new update
Once the validator update has been checked to ensure no issues with the build create a GitHub PR and get it approved. Once approved create a new release and detail the changes made.

# Run Validator instance on local machine
$ mvn spring-boot:run