Skip to content

Conversation

@eddalmond1
Copy link
Collaborator

@eddalmond1 eddalmond1 commented Dec 30, 2025

Description

https://nhsd-jira.digital.nhs.uk/browse/ELI-579

COVID-19 Too Close to Previous dose calculation (add days template function). Specifically, adding the ability to have an 'in config' function call to an ADD_DAYS function, which allows the return of relative dates. This functionality leverages the existing token parsing functionality, and extends it to allow function calls beyond date formatting.

Context

Allows us to derive values to return to the user.

I took inspiration from MCP type approaches for LLMs, in that we can set up a 'registry' of tools which we can then make available using the plain text 'function calls'. I've tried to make the approach extendable, so that additional functions for specific purposes can be added by simply creating a class which inherits the base class.

See https://nhsd-confluence.digital.nhs.uk/spaces/Vacc/pages/1254943977/Configuration+driven+derivations for a more in-depth explanation of the changes and how they fit into the existing flow.

Type of changes

  • Refactoring (non-breaking change)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would change existing functionality)
  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I am familiar with the contributing guidelines
  • I have followed the code style of the project
  • I have added tests to cover my changes
  • I have updated the documentation accordingly
  • This PR is a result of pair or mob programming

Sensitive Information Declaration

To ensure the utmost confidentiality and protect your and others privacy, we kindly ask you to NOT including PII (Personal Identifiable Information) / PID (Personal Identifiable Data) or any other sensitive data in this PR (Pull Request) and the codebase changes. We will remove any PR that do contain any sensitive information. We really appreciate your cooperation in this matter.

  • I confirm that neither PII/PID nor sensitive data are included in this PR and the codebase changes.

@eddalmond1 eddalmond1 force-pushed the feature/eja-eli-579-adding-derivation-for-previous-dose-calculations branch 2 times, most recently from 1e2c894 to 122b6dc Compare January 2, 2026 12:08
@@ -0,0 +1,28 @@
from eligibility_signposting_api.services.processors.derived_values.add_days_handler import AddDaysHandler
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

this initialises the set of derived value handlers in the registry on lambda startup

@@ -0,0 +1,180 @@
from datetime import UTC, datetime, timedelta
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

this is the specific implementation of the 'add days' function

@@ -0,0 +1,67 @@
from abc import ABC, abstractmethod
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

this is the base class 'template' for all derivation classes

@@ -0,0 +1,164 @@
from typing import ClassVar
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

this is the 'registry' that allows token text to map to a specific handler and provides the 'calculate' method for that handler to the calling code

Attributes
----------
attribute_level : str
Example: "PERSON" or "TARGET"
Copy link
Collaborator Author

@eddalmond1 eddalmond1 Jan 13, 2026

Choose a reason for hiding this comment

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

changes to token parser to parse function information

from typing import Any, Never

from wireup import service

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

added in ability to call the calculate method for a given function after parsing all the arguments etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant