Skip to content

Commit 981257f

Browse files
tstephen-nhsdependabot[bot]anthony-nhs
authored
Fix: [AEA-6055] - debugging issues with post-dated updates (#2814)
## Summary - Routine Change ### Details - Debugging issues with post-dated updates --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: anthony-nhs <121869075+anthony-nhs@users.noreply.github.com> Co-authored-by: Anthony Brown <anthony.brown8@nhs.net>
1 parent 4fad985 commit 981257f

12 files changed

Lines changed: 138 additions & 5 deletions

File tree

.github/scripts/deploy_api.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ echo "Apigee environment: ${APIGEE_ENVIRONMENT}"
1010
echo "Proxygen private key name: ${PROXYGEN_PRIVATE_KEY_NAME}"
1111
echo "Proxygen KID: ${PROXYGEN_KID}"
1212
echo "Deploy Check Prescription Status Update: ${DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE}"
13+
echo "Expose Get Status Updates: ${EXPOSE_GET_STATUS_UPDATES}"
1314
echo "Dry run: ${DRY_RUN}"
1415
# shellcheck disable=SC2153
1516
echo "is_pull_request: ${IS_PULL_REQUEST}"
@@ -106,6 +107,14 @@ if [[ "${DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE}" == "false" ]]; then
106107
fi
107108
fi
108109

110+
# Remove get-status-updates if not needed
111+
if [[ "${EXPOSE_GET_STATUS_UPDATES}" == "false" ]]; then
112+
if [[ "${API_TYPE}" == "standard" ]]; then
113+
echo "Removing get-status-updates endpoint"
114+
jq 'del(.paths."/get-status-updates")' "$SPEC_PATH" > temp.json && mv temp.json "$SPEC_PATH"
115+
fi
116+
fi
117+
109118
# Find and replace the x-nhsd-apim.target.secret value
110119
jq --arg mtls_key "${MTLS_KEY}" '.["x-nhsd-apim"].target.security.secret = "\($mtls_key)"' "${SPEC_PATH}" > temp.json && mv temp.json "${SPEC_PATH}"
111120

.github/scripts/release_code.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ sam deploy \
6161
LogRetentionInDays="$LOG_RETENTION_DAYS" \
6262
Environment="$TARGET_ENVIRONMENT" \
6363
DeployCheckPrescriptionStatusUpdate="$DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE" \
64+
ExposeGetStatusUpdates="$EXPOSE_GET_STATUS_UPDATES" \
6465
EnableAlerts="$ENABLE_ALERTS" \
6566
StateMachineLogLevel="$STATE_MACHINE_LOG_LEVEL" \
6667
EnableNotificationsInternal="$ENABLE_NOTIFICATIONS_INTERNAL" \

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ jobs:
6969
DYNAMODB_AUTOSCALE: false
7070
DEPLOY_APIGEE_CPSU: true
7171
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
72+
EXPOSE_GET_STATUS_UPDATES: true
7273
ENABLE_ALERTS: true
7374
REQUIRE_APPLICATION_NAME: false
7475
RUN_REGRESSION_TEST: true
@@ -113,6 +114,7 @@ jobs:
113114
DYNAMODB_AUTOSCALE: false
114115
DEPLOY_APIGEE_CPSU: true
115116
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
117+
EXPOSE_GET_STATUS_UPDATES: false
116118
RUN_REGRESSION_TEST: false
117119
STATE_MACHINE_LOG_LEVEL: ALL
118120
LOG_LEVEL: DEBUG
@@ -151,6 +153,7 @@ jobs:
151153
DYNAMODB_AUTOSCALE: false
152154
DEPLOY_APIGEE_CPSU: true
153155
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
156+
EXPOSE_GET_STATUS_UPDATES: true
154157
ENABLE_ALERTS: true
155158
RUN_REGRESSION_TEST: true
156159
STATE_MACHINE_LOG_LEVEL: ALL

.github/workflows/pull_request.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ jobs:
106106
DYNAMODB_AUTOSCALE: false
107107
DEPLOY_APIGEE_CPSU: true
108108
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
109+
EXPOSE_GET_STATUS_UPDATES: true
109110
ENABLE_ALERTS: false
110111
REQUIRE_APPLICATION_NAME: false
111112
RUN_REGRESSION_TEST: true
@@ -150,6 +151,7 @@ jobs:
150151
DYNAMODB_AUTOSCALE: false
151152
DEPLOY_APIGEE_CPSU: true
152153
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
154+
EXPOSE_GET_STATUS_UPDATES: false
153155
RUN_REGRESSION_TEST: false
154156
STATE_MACHINE_LOG_LEVEL: ALL
155157
ENABLE_BACKUP: "False"

.github/workflows/release.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ jobs:
7272
DYNAMODB_AUTOSCALE: false
7373
DEPLOY_APIGEE_CPSU: true
7474
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
75+
EXPOSE_GET_STATUS_UPDATES: true
7576
ENABLE_ALERTS: true
7677
REQUIRE_APPLICATION_NAME: false
7778
RUN_REGRESSION_TEST: true
@@ -119,6 +120,7 @@ jobs:
119120
DYNAMODB_AUTOSCALE: false
120121
DEPLOY_APIGEE_CPSU: true
121122
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
123+
EXPOSE_GET_STATUS_UPDATES: false
122124
RUN_REGRESSION_TEST: false
123125
STATE_MACHINE_LOG_LEVEL: ALL
124126
ENABLE_BACKUP: "False"
@@ -169,6 +171,7 @@ jobs:
169171
DYNAMODB_AUTOSCALE: true
170172
DEPLOY_APIGEE_CPSU: true
171173
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
174+
EXPOSE_GET_STATUS_UPDATES: true
172175
ENABLE_ALERTS: true
173176
RUN_REGRESSION_TEST: false
174177
STATE_MACHINE_LOG_LEVEL: ERROR
@@ -220,6 +223,7 @@ jobs:
220223
DYNAMODB_AUTOSCALE: false
221224
DEPLOY_APIGEE_CPSU: true
222225
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
226+
EXPOSE_GET_STATUS_UPDATES: true
223227
ENABLE_ALERTS: true
224228
RUN_REGRESSION_TEST: true
225229
STATE_MACHINE_LOG_LEVEL: ALL
@@ -263,6 +267,7 @@ jobs:
263267
DYNAMODB_AUTOSCALE: false
264268
DEPLOY_APIGEE_CPSU: true
265269
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
270+
EXPOSE_GET_STATUS_UPDATES: true
266271
ENABLE_ALERTS: true
267272
RUN_REGRESSION_TEST: true
268273
STATE_MACHINE_LOG_LEVEL: ALL
@@ -309,6 +314,7 @@ jobs:
309314
DYNAMODB_AUTOSCALE: false
310315
DEPLOY_APIGEE_CPSU: true
311316
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
317+
EXPOSE_GET_STATUS_UPDATES: false
312318
RUN_REGRESSION_TEST: false
313319
STATE_MACHINE_LOG_LEVEL: ALL
314320
ENABLE_BACKUP: "False"
@@ -359,6 +365,7 @@ jobs:
359365
DYNAMODB_AUTOSCALE: true
360366
DEPLOY_APIGEE_CPSU: true
361367
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: false
368+
EXPOSE_GET_STATUS_UPDATES: false
362369
ENABLE_ALERTS: true
363370
RUN_REGRESSION_TEST: false
364371
STATE_MACHINE_LOG_LEVEL: ERROR

.github/workflows/run_regression_tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ jobs:
5959
run: |
6060
if [[ "$TARGET_ENVIRONMENT" != "prod" && "$TARGET_ENVIRONMENT" != "ref" ]]; then
6161
# this should be the tag of the tests you want to run
62-
REGRESSION_TEST_REPO_TAG=v3.6.2
62+
REGRESSION_TEST_REPO_TAG=v3.11.0
6363
6464
# this should be the tag of the regression test workflow you want to run
6565
# This will normally be the same as REGRESSION_TEST_REPO_TAG
66-
REGRESSION_TEST_WORKFLOW_TAG=v3.6.2
66+
REGRESSION_TEST_WORKFLOW_TAG=v3.11.0
6767
6868
curl https://raw.githubusercontent.com/NHSDigital/electronic-prescription-service-api-regression-tests/refs/tags/${REGRESSION_TEST_WORKFLOW_TAG}/scripts/run_regression_tests.py -o run_regression_tests.py
6969
poetry install

.github/workflows/run_release_code_and_api.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ on:
4949
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE:
5050
type: boolean
5151
default: false
52+
EXPOSE_GET_STATUS_UPDATES:
53+
type: boolean
54+
default: false
5255
ENABLE_ALERTS:
5356
type: boolean
5457
default: true
@@ -202,6 +205,7 @@ jobs:
202205
VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }}
203206
DYNAMODB_AUTOSCALE: ${{ inputs.DYNAMODB_AUTOSCALE }}
204207
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: ${{ inputs.DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE }}
208+
EXPOSE_GET_STATUS_UPDATES: ${{ inputs.EXPOSE_GET_STATUS_UPDATES }}
205209
ENABLE_ALERTS: ${{ inputs.ENABLE_ALERTS }}
206210
STATE_MACHINE_LOG_LEVEL: ${{ inputs.STATE_MACHINE_LOG_LEVEL }}
207211
ENABLE_BACKUP: ${{ inputs.ENABLE_BACKUP }}
@@ -255,6 +259,7 @@ jobs:
255259
PROXYGEN_KID: "eps-cli-key-1"
256260
DRY_RUN: false
257261
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: ${{ inputs.DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE }}
262+
EXPOSE_GET_STATUS_UPDATES: ${{ inputs.EXPOSE_GET_STATUS_UPDATES }}
258263
IS_PULL_REQUEST: ${{ inputs.IS_PULL_REQUEST }}
259264
MTLS_KEY: ${{ inputs.MTLS_KEY }}
260265
ENABLE_MUTUAL_TLS: ${{ inputs.ENABLE_MUTUAL_TLS }}
@@ -276,6 +281,7 @@ jobs:
276281
PROXYGEN_KID: eps-cli-key-cpsu-1
277282
DRY_RUN: false
278283
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: ${{ inputs.DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE }}
284+
EXPOSE_GET_STATUS_UPDATES: ${{ inputs.EXPOSE_GET_STATUS_UPDATES }}
279285
IS_PULL_REQUEST: ${{ inputs.IS_PULL_REQUEST }}
280286
MTLS_KEY: ${{ inputs.MTLS_KEY }}
281287
ENABLE_MUTUAL_TLS: ${{ inputs.ENABLE_MUTUAL_TLS }}

SAMtemplates/apis/main.yaml

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ Parameters:
5454
Type: String
5555
Default: none
5656

57+
GetStatusUpdatesFunctionName:
58+
Type: String
59+
Default: none
60+
61+
GetStatusUpdatesFunctionArn:
62+
Type: String
63+
Default: none
64+
5765
NHSNotifyUpdateCallbackFunctionName:
5866
Type: String
5967
Default: none
@@ -71,6 +79,10 @@ Parameters:
7179
DeployCheckPrescriptionStatusUpdate:
7280
Type: String
7381

82+
ExposeGetStatusUpdates:
83+
Type: String
84+
Default: false
85+
7486
ForwardCsocLogs:
7587
Type: String
7688
Default: false
@@ -81,6 +93,9 @@ Conditions:
8193
ShouldDeployCheckPrescriptionStatusUpdate: !Equals
8294
- true
8395
- !Ref DeployCheckPrescriptionStatusUpdate
96+
ShouldExposeGetStatusUpdates: !Equals
97+
- true
98+
- !Ref ExposeGetStatusUpdates
8499

85100
Resources:
86101
GenerateCertificate:
@@ -526,6 +541,58 @@ Resources:
526541
IntegrationHttpMethod: POST
527542
Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${CheckPrescriptionStatusUpdatesFunctionArn}/invocations
528543

544+
GetStatusUpdatesResource:
545+
Condition: ShouldExposeGetStatusUpdates
546+
Type: AWS::ApiGateway::Resource
547+
Properties:
548+
RestApiId: !Ref RestApiGateway
549+
ParentId: !GetAtt RestApiGateway.RootResourceId
550+
PathPart: get-status-updates
551+
552+
GetStatusUpdatesMethod:
553+
Condition: ShouldExposeGetStatusUpdates
554+
Type: AWS::ApiGateway::Method
555+
Properties:
556+
RestApiId: !Ref RestApiGateway
557+
ResourceId: !Ref GetStatusUpdatesResource
558+
HttpMethod: POST
559+
AuthorizationType: NONE
560+
Integration:
561+
Type: AWS
562+
Credentials: !GetAtt RestApiGatewayResources.Outputs.ApiGwRoleArn
563+
IntegrationHttpMethod: POST
564+
Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetStatusUpdatesFunctionArn}/invocations
565+
RequestTemplates:
566+
application/json: |-
567+
$input.json('$')
568+
IntegrationResponses:
569+
- StatusCode: 200
570+
ResponseTemplates:
571+
application/json: |-
572+
$input.body
573+
MethodResponses:
574+
- StatusCode: "200"
575+
576+
GetStatusUpdatesHandle:
577+
Condition: ShouldExposeGetStatusUpdates
578+
DependsOn: GetStatusUpdatesMethod
579+
Type: "AWS::CloudFormation::WaitConditionHandle"
580+
581+
GetStatusUpdatesWaitHandle:
582+
Type: "AWS::CloudFormation::WaitConditionHandle"
583+
584+
GetStatusUpdatesWaitCondition:
585+
Type: "AWS::CloudFormation::WaitCondition"
586+
Properties:
587+
Handle:
588+
!If [
589+
ShouldExposeGetStatusUpdates,
590+
!Ref GetStatusUpdatesHandle,
591+
!Ref GetStatusUpdatesWaitHandle,
592+
]
593+
Timeout: "1"
594+
Count: 0
595+
529596
# we can not use a conditional in depends on in ApiGateway::Deployment
530597
# so instead we use a wait condition that has the conditional in it and use that as a dependency
531598
# taken from https://garbe.io/blog/2017/07/17/cloudformation-hacks/
@@ -553,7 +620,7 @@ Resources:
553620
# if you add a new endpoint, then change the name of this resource
554621
# also need to change it in RestApiGatewayStage.Properties.DeploymentId
555622
# *********************************************************************
556-
RestApiGatewayDeploymentV2f:
623+
RestApiGatewayDeploymentV2h:
557624
Type: AWS::ApiGateway::Deployment
558625
DependsOn:
559626
# see note above if you add something in here when you add a new endpoint
@@ -563,6 +630,7 @@ Resources:
563630
- Format1UpdatePrescriptionStatusMethod
564631
- CheckPrescriptionStatusUpdatesWaitCondition
565632
- NotificationDeliveryStatusCallbackMethod
633+
- GetStatusUpdatesWaitCondition
566634
# see note above if you add something in here when you add a new endpoint
567635
Properties:
568636
RestApiId: !Ref RestApiGateway
@@ -571,7 +639,7 @@ Resources:
571639
Type: AWS::ApiGateway::Stage
572640
Properties:
573641
RestApiId: !Ref RestApiGateway
574-
DeploymentId: !Ref RestApiGatewayDeploymentV2f
642+
DeploymentId: !Ref RestApiGatewayDeploymentV2h
575643
StageName: prod
576644
TracingEnabled: true
577645
AccessLogSetting:
@@ -595,6 +663,10 @@ Resources:
595663
- Fn::ImportValue: !Sub ${StackName}:functions:${StatusFunctionName}:ExecuteLambdaPolicyArn
596664
- Fn::ImportValue: !Sub ${StackName}:functions:${CapabilityStatementFunctionName}:ExecuteLambdaPolicyArn
597665
- Fn::ImportValue: !Sub ${StackName}:functions:${NHSNotifyUpdateCallbackFunctionName}:ExecuteLambdaPolicyArn
666+
- !If
667+
- ShouldExposeGetStatusUpdates
668+
- Fn::ImportValue: !Sub ${StackName}:functions:${GetStatusUpdatesFunctionName}:ExecuteLambdaPolicyArn
669+
- !Ref AWS::NoValue
598670
- Fn::ImportValue: !Sub ${StackName}:state-machines:${Format1UpdatePrescriptionsStatusStateMachineName}:ExecuteStateMachinePolicy
599671
- !If
600672
- ShouldDeployCheckPrescriptionStatusUpdate

SAMtemplates/main_template.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,13 @@ Parameters:
7171
DeployCheckPrescriptionStatusUpdate:
7272
Type: String
7373

74+
ExposeGetStatusUpdates:
75+
Type: String
76+
Default: false
77+
AllowedValues:
78+
- true
79+
- false
80+
7481
Environment:
7582
Type: String
7683

@@ -223,11 +230,14 @@ Resources:
223230
CapabilityStatementFunctionArn: !GetAtt Functions.Outputs.CapabilityStatementFunctionArn
224231
CheckPrescriptionStatusUpdatesFunctionName: !GetAtt Functions.Outputs.CheckPrescriptionStatusUpdatesFunctionName
225232
CheckPrescriptionStatusUpdatesFunctionArn: !GetAtt Functions.Outputs.CheckPrescriptionStatusUpdatesFunctionArn
233+
GetStatusUpdatesFunctionName: !GetAtt Functions.Outputs.GetStatusUpdatesFunctionName
234+
GetStatusUpdatesFunctionArn: !GetAtt Functions.Outputs.GetStatusUpdatesFunctionArn
226235
NHSNotifyUpdateCallbackFunctionName: !GetAtt Functions.Outputs.NHSNotifyUpdateCallbackFunctionName
227236
NHSNotifyUpdateCallbackFunctionArn: !GetAtt Functions.Outputs.NHSNotifyUpdateCallbackFunctionArn
228237
LogRetentionInDays: !Ref LogRetentionInDays
229238
EnableSplunk: !Ref EnableSplunk
230239
DeployCheckPrescriptionStatusUpdate: !Ref DeployCheckPrescriptionStatusUpdate
240+
ExposeGetStatusUpdates: !Ref ExposeGetStatusUpdates
231241
ForwardCsocLogs: !Ref ForwardCsocLogs
232242

233243
Functions:

SAMtemplates/tables/main.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ Resources:
184184
- TerminalStatus
185185
- LastModified
186186
- Status
187+
# TODO: Remove this when we deprecate post dated prescriptions.
188+
- PostDatedLastModifiedSetAt
187189
ProjectionType: INCLUDE
188190
ProvisionedThroughput: !If
189191
- EnableDynamoDBAutoScalingCondition
@@ -201,7 +203,7 @@ Resources:
201203
- ReadCapacityUnits: 1
202204
WriteCapacityUnits: !Ref MinWritePrescriptionStatusUpdatesCapacity
203205
- !Ref "AWS::NoValue"
204-
# TODO: Remove this when we deprecate post modified prescriptions.
206+
# TODO: Remove this when we deprecate post dated prescriptions.
205207
- IndexName: PrescriptionIDPostDatedIndex
206208
KeySchema:
207209
- AttributeName: PrescriptionID

0 commit comments

Comments
 (0)