Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
73 changes: 71 additions & 2 deletions SAMtemplates/tables/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,6 @@ Resources:
- TerminalStatus
- LastModified
- Status
# TODO: Remove this when we deprecate post dated prescriptions.
- PostDatedLastModifiedSetAt
ProjectionType: INCLUDE
ProvisionedThroughput: !If
- EnableDynamoDBAutoScalingCondition
Expand Down Expand Up @@ -222,6 +220,27 @@ Resources:
- ReadCapacityUnits: 1
WriteCapacityUnits: !Ref MinWritePrescriptionStatusUpdatesCapacity
- !Ref "AWS::NoValue"
- IndexName: PharmacyODSCodePrescriptionIDIndexIncPostDated
KeySchema:
- AttributeName: PharmacyODSCode
KeyType: HASH
- AttributeName: PrescriptionID
KeyType: RANGE
Comment thread
tstephen-nhs marked this conversation as resolved.
Projection:
NonKeyAttributes:
- PatientNHSNumber
- LineItemID
- TerminalStatus
- LastModified
- Status
# TODO: Remove this when we deprecate post dated prescriptions.
- PostDatedLastModifiedSetAt
ProjectionType: INCLUDE
ProvisionedThroughput: !If
- EnableDynamoDBAutoScalingCondition
- ReadCapacityUnits: 1
WriteCapacityUnits: !Ref MinWritePrescriptionStatusUpdatesCapacity
- !Ref "AWS::NoValue"
Tags:
- Key: "EPS-Tablename"
Value: "PrescriptionStatusUpdates"
Expand Down Expand Up @@ -337,6 +356,56 @@ Resources:
PredefinedMetricSpecification:
PredefinedMetricType: DynamoDBReadCapacityUtilization

PharmacyIndexIncPostDatedScalingWriteTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Condition: EnableDynamoDBAutoScalingCondition
Properties:
MinCapacity: !Ref MinWritePrescriptionStatusUpdatesCapacity
MaxCapacity: !Ref MaxWritePrescriptionStatusUpdatesCapacity
ResourceId: !Sub table/${PrescriptionStatusUpdatesTable}/index/PharmacyODSCodePrescriptionIDIndexIncPostDated
RoleARN: !GetAtt DynamoDbScalingRole.Arn
ScalableDimension: "dynamodb:index:WriteCapacityUnits"
ServiceNamespace: dynamodb

PharmacyIndexIncPostDatedScalingWritePolicy:
Type: AWS::ApplicationAutoScaling::ScalingPolicy
Condition: EnableDynamoDBAutoScalingCondition
Properties:
PolicyName: PharmacyIndexIncPostDatedWriteScalingPolicy
PolicyType: TargetTrackingScaling
ScalingTargetId: !Ref PharmacyIndexIncPostDatedScalingWriteTarget
TargetTrackingScalingPolicyConfiguration:
TargetValue: 50
ScaleInCooldown: 600
ScaleOutCooldown: 0
PredefinedMetricSpecification:
PredefinedMetricType: DynamoDBWriteCapacityUtilization

PharmacyIndexIncPostDatedScalingReadTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Condition: EnableDynamoDBAutoScalingCondition
Properties:
MaxCapacity: 100
MinCapacity: 1
ResourceId: !Sub table/${PrescriptionStatusUpdatesTable}/index/PharmacyODSCodePrescriptionIDIndexIncPostDated
RoleARN: !GetAtt DynamoDbScalingRole.Arn
ScalableDimension: "dynamodb:index:ReadCapacityUnits"
ServiceNamespace: dynamodb

PharmacyIndexIncPostDatedScalingReadPolicy:
Type: AWS::ApplicationAutoScaling::ScalingPolicy
Condition: EnableDynamoDBAutoScalingCondition
Properties:
PolicyName: PharmacyIndexIncPostDatedReadScalingPolicy
PolicyType: TargetTrackingScaling
ScalingTargetId: !Ref PharmacyIndexIncPostDatedScalingReadTarget
TargetTrackingScalingPolicyConfiguration:
TargetValue: 70
ScaleInCooldown: 600
ScaleOutCooldown: 10
PredefinedMetricSpecification:
PredefinedMetricType: DynamoDBReadCapacityUtilization

NHSNumberIndexScalingWriteTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Condition: EnableDynamoDBAutoScalingCondition
Expand Down
3 changes: 2 additions & 1 deletion packages/gsul/src/dynamoDBclient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
export function createQueryCommandInput(odsCode: string, prescriptionID: string): QueryCommandInput {
return {
TableName: tableName,
IndexName: "PharmacyODSCodePrescriptionIDIndex",
// TODO: revert to PharmacyODSCodePrescriptionIDIndex once post-dated no longer required

Check warning on line 53 in packages/gsul/src/dynamoDBclient.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Complete the task associated to this "TODO" comment.

See more on https://sonarcloud.io/project/issues?id=NHSDigital_eps-prescription-status-update-api&issues=AZ0lhzA4IWx8h88zU_aM&open=AZ0lhzA4IWx8h88zU_aM&pullRequest=2910
IndexName: "PharmacyODSCodePrescriptionIDIndexIncPostDated",
KeyConditionExpression: "PrescriptionID = :inputPrescriptionID AND PharmacyODSCode = :inputPharmacyODSCode",
ExpressionAttributeValues: {
":inputPharmacyODSCode": odsCode.toUpperCase(),
Expand Down
2 changes: 1 addition & 1 deletion packages/gsul/tests/testRunDynamoDBQueries.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ describe("testing dynamoDBClient", () => {

const expected = {
TableName: undefined,
IndexName: "PharmacyODSCodePrescriptionIDIndex",
IndexName: "PharmacyODSCodePrescriptionIDIndexIncPostDated",
KeyConditionExpression: "PrescriptionID = :inputPrescriptionID AND PharmacyODSCode = :inputPharmacyODSCode",
ExpressionAttributeValues: {
":inputPharmacyODSCode": "ODSCODE",
Expand Down
Loading