-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathlog_references.py
More file actions
478 lines (451 loc) · 20 KB
/
log_references.py
File metadata and controls
478 lines (451 loc) · 20 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
from dataclasses import dataclass
from enum import Enum
@dataclass
class _Reference:
level: str
message: str
# WARNING: This makes all _Reference objects unequal unless they are the same instance.
# It's fine for our use case, but be cautious if you compare _Reference objects.
def __eq__(self, other):
return self is other
def __hash__(self):
return id(self)
class LogReference(Enum):
# Request Handler Logs
HANDLER000 = _Reference("INFO", "Starting execution of request handler")
HANDLER001 = _Reference("DEBUG", "Loaded config from environment variables")
HANDLER002 = _Reference("DEBUG", "Attempting to parse request headers")
HANDLER003 = _Reference("INFO", "Parsed metadata from request headers")
HANDLER003a = _Reference(
"WARN", "Missing nhsd-end-user-organisation-ods header for v2 permissions"
)
HANDLER003b = _Reference(
"WARN", "Missing x-proxygen-app-nrl-app-id header for v2 permissions"
)
HANDLER004 = _Reference("INFO", "Authorisation lookup enabled")
HANDLER004a = _Reference("INFO", "Authorisation lookup skipped for sync request")
HANDLER004b = _Reference("INFO", "Parsing embedded permissions file")
HANDLER004c = _Reference("INFO", "Parsed embedded permissions file")
HANDLER004d = _Reference("INFO", "Using v2 permissions model")
HANDLER004e = _Reference("ERROR", "Unable to validate PermissionsPolicy")
HANDLER005 = _Reference("WARN", "Rejecting request due to missing pointer types")
HANDLER006 = _Reference("DEBUG", "Attempting to parse request parameters")
HANDLER007 = _Reference("INFO", "Parsed request parameters")
HANDLER008 = _Reference("DEBUG", "Attempting to parse request body")
HANDLER009 = _Reference("INFO", "Parsed request body")
HANDLER010 = _Reference("DEBUG", "Attempting to parse request path parameters")
HANDLER011 = _Reference("INFO", "Parsed request path parameters")
HANDLER012 = _Reference("DEBUG", "Filtered request handler function arguments")
HANDLER013 = _Reference("INFO", "Calling lambda-specific request handler")
HANDLER014 = _Reference(
"WARN", "Rejecting request due to missing X-Request-Id header"
)
HANDLER015 = _Reference(
"WARN", "Rejecting request due to missing NHSD-Correlation-Id header"
)
HANDLER016 = _Reference("INFO", "Set response headers")
HANDLER017 = _Reference("WARN", "Correlation ID not found in request headers")
HANDLER018 = _Reference("INFO", "Checking for duplicate keys in request body")
HANDLER019 = _Reference("ERROR", "Duplicate keys found in the request body")
HANDLER999 = _Reference("INFO", "Request handler returned successfully")
# Error Logs
ERROR000 = _Reference(
"ERROR", "An unhandled exception occurred whilst processing the request"
)
ERROR001 = _Reference(
"WARN", "An OperationOutcomeError occurred whilst processing the request"
)
ERROR002 = _Reference(
"WARN", "An ParseError occurred whilst processing the request"
)
ERROR003 = _Reference(
"WARN", "An unhandled exception occurred whilst handling response headers"
)
# S3 / Embedded Permissions Lookup Logs
S3PERMISSIONS001 = _Reference("INFO", "Retrieving pointer types from S3 bucket")
S3PERMISSIONS002 = _Reference("INFO", "Retrieved list of pointer types from S3")
S3PERMISSIONS003 = _Reference("WARN", "No permissions file found in S3")
S3PERMISSIONS004 = _Reference(
"EXCEPTION", "An error occurred whilst retrieving pointer types from S3"
)
S3PERMISSIONS005 = _Reference(
"EXCEPTION",
"An error occurred whilst parsing embedded permissions files",
)
# V2 Embedded Permissions Lookup Logs
V2PERMISSIONS011 = _Reference(
"INFO", "Retrieving v2 pointer permissions from lambda layer"
)
V2PERMISSIONS012 = _Reference(
"INFO", "Retrieved v2 pointer permissions from lambda layer"
)
V2PERMISSIONS013 = _Reference(
"INFO", "No v2 permissions file found in lambda layer"
)
# Parse Logs
PARSE000 = _Reference("DEBUG", "Attempting to parse data against model")
PARSE001 = _Reference("INFO", "Parsed data against model")
PARSE001a = _Reference("DEBUG", "Parsed data against model with result")
PARSE002 = _Reference("WARN", "Failed to parse data against model")
# Validator Logs
VALIDATOR000 = _Reference("INFO", "Attempting to validate resource")
VALIDATOR001 = _Reference("DEBUG", "Starting validation step")
VALIDATOR001a = _Reference("INFO", "Skipping validation step")
VALIDATOR002 = _Reference(
"WARN", "An error was encountered whilst validating the resource"
)
VALIDATOR003 = _Reference("INFO", "Validation was stopped early due to errors")
VALIDATOR999 = _Reference("INFO", "Validation completed on resource")
# Repository logs
REPOSITORY001 = _Reference("INFO", "Initialised DynamoDB repository")
REPOSITORY002 = _Reference("INFO", "Creating item in DynamoDB")
REPOSITORY003 = _Reference("INFO", "Successfully created item in DynamoDB")
REPOSITORY004 = _Reference(
"WARN", "Failed to create item in DynamoDB due to existing item"
)
REPOSITORY005 = _Reference("EXCEPTION", "Failed to create item in DynamoDB")
REPOSITORY006 = _Reference("INFO", "Retrieving item from DynamoDB")
REPOSITORY007 = _Reference("EXCEPTION", "Failed to retrieve item from DynamoDB")
REPOSITORY008 = _Reference("ERROR", "Multiple items returned for partition key")
REPOSITORY009 = _Reference("DEBUG", "Received query response from DynamoDB")
REPOSITORY010 = _Reference(
"EXCEPTION", "Existing item in datastore failed validation"
)
REPOSITORY011 = _Reference("INFO", "Successfully retrieved item from DynamoDB")
REPOSITORY011a = _Reference(
"DEBUG", "Successfully retrieved item from DynamoDB with result"
)
REPOSITORY012 = _Reference("INFO", "No item found in DynamoDB")
REPOSITORY013 = _Reference("INFO", "Counting items in DynamoDB with criteria")
REPOSITORY014 = _Reference("DEBUG", "Constructed base query")
REPOSITORY015 = _Reference("DEBUG", "Adding key condition to query")
REPOSITORY016 = _Reference("DEBUG", "Adding filter expression to query")
REPOSITORY017 = _Reference("INFO", "Performing DynamoDB count query")
REPOSITORY018 = _Reference("INFO", "Count query returned successfully")
REPOSITORY018a = _Reference(
"DEBUG", "Count query returned successfully with result"
)
REPOSITORY019 = _Reference(
"EXCEPTION", "An error occurred whilst performing count query"
)
REPOSITORY020 = _Reference("INFO", "Searching items in DynamoDB with criteria")
REPOSITORY021 = _Reference("INFO", "Performing DynamoDB query")
REPOSITORY022 = _Reference("EXCEPTION", "An error occurred whilst performing query")
REPOSITORY023 = _Reference("DEBUG", "Saving new resource to DynamoDB")
REPOSITORY024 = _Reference("DEBUG", "Saving updated resource in DynamoDB")
REPOSITORY025 = _Reference("DEBUG", "Deleting resource from DynamoDB")
REPOSITORY026 = _Reference("EXCEPTION", "Failed to delete resource from DynamoDB")
REPOSITORY026a = _Reference(
"EXCEPTION", "Ignoring failure to delete resource from DynamoDB"
)
REPOSITORY026b = _Reference(
"EXCEPTION", "Failed to delete superseded resource from DynamoDB"
)
REPOSITORY027 = _Reference("INFO", "Successfully deleted item from DynamoDB")
REPOSITORY028 = _Reference("INFO", "Received page of search results")
REPOSITORY028a = _Reference("DEBUG", "Received page of search results with result")
REPOSITORY029a = _Reference("DEBUG", "Updated item with result")
# Model logs
DOCPOINTER001 = _Reference("DEBUG", "Extracting custodian suffix from custodian")
DOCPOINTER002 = _Reference("DEBUG", "Extracted custodian ID and custodian suffix")
DOCPOINTER003 = _Reference("DEBUG", "Extracting producer ID from the document ID")
DOCPOINTER004 = _Reference("DEBUG", "Extracted producer ID and document ID")
DOCPOINTER005 = _Reference(
"INFO", "Constructed DocumentPointer from DocumentReference resource"
)
DOCPOINTER006 = _Reference(
"EXCEPTION", "Unsupported system defined for document reference"
)
# Consumer - CountDocumentReference
CONCOUNT000 = _Reference(
"INFO", "Starting to process consumer countDocumentReference"
)
CONCOUNT001 = _Reference(
"INFO", "Invalid NHS number provided in the query parameters"
)
CONCOUNT999 = _Reference(
"INFO", "Successfully completed consumer countDocumentReference"
)
# Consumer - ReadDocumentReference
CONREAD000 = _Reference(
"INFO", "Starting to process consumer readDocumentReference"
)
CONREAD001 = _Reference("INFO", "Returning 404 DocumentReference not found")
CONREAD002 = _Reference(
"WARN", "Organisation does not have permissions to access resource"
)
CONREAD003 = _Reference(
"EXCEPTION", "The stored DocumentReference could not be parsed"
)
CONREAD999 = _Reference(
"INFO", "Successfully completed consumer readDocumentReference"
)
# Consumer - SearchDocumentReference
CONSEARCH000 = _Reference(
"INFO", "Starting to process consumer searchDocumentReference"
)
CONSEARCH001 = _Reference(
"INFO", "Invalid NHS number provided in the query parameters"
)
CONSEARCH002 = _Reference(
"INFO", "Invalid document type provided in the query parameters"
)
CONSEARCH002b = _Reference(
"INFO", "Invalid document category provided in the query parameters"
)
CONSEARCH003 = _Reference("DEBUG", "Performing search by NHS number")
CONSEARCH004 = _Reference(
"DEBUG", "Parsed DocumentReference and added to search results"
)
CONSEARCH005 = _Reference(
"EXCEPTION", "The DocumentReference resource could not be parsed"
)
CONSEARCH006 = _Reference("DEBUG", "Search with summary count parameter enabled")
CONSEARCH007 = _Reference(
"INFO", "Search with summary count parameter returned total results"
)
CONSEARCH999 = _Reference(
"INFO", "Successfully completed consumer searchDocumentReference"
)
# Consumer - SearchPostDocumentReference
CONPOSTSEARCH000 = _Reference(
"INFO", "Starting to process consumer searchPostDocumentReference"
)
CONPOSTSEARCH001 = _Reference(
"INFO", "Invalid NHS number provided in the request body"
)
CONPOSTSEARCH002 = _Reference(
"INFO", "Invalid document type provided in the request body"
)
CONPOSTSEARCH002b = _Reference(
"INFO", "Invalid document category provided in the request body"
)
CONPOSTSEARCH003 = _Reference("DEBUG", "Performing search by NHS number")
CONPOSTSEARCH004 = _Reference(
"DEBUG", "Parsed DocumentReference and added to search results"
)
CONPOSTSEARCH005 = _Reference(
"EXCEPTION", "The DocumentReference resource could not be parsed"
)
CONPOSTSEARCH006 = _Reference(
"DEBUG", "Search with summary count parameter enabled"
)
CONPOSTSEARCH007 = _Reference(
"INFO", "Search with summary count parameter returned total results"
)
CONPOSTSEARCH999 = _Reference(
"INFO", "Successfully completed consumer searchPostDocumentReference"
)
# Producer - CreateDocumentReference
PROCREATE000 = _Reference(
"INFO", "Starting to process producer createDocumentReference"
)
PROCREATE001 = _Reference("DEBUG", "Validating DocumentReference resource")
PROCREATE002 = _Reference("WARN", "DocumentReference resource failed validation")
PROCREATE003 = _Reference(
"WARN", "ODS code in headers does not match ODS code in resource ID"
)
PROCREATE004 = _Reference(
"WARN", "ODS code in headers does not match ODS code in resource custodian"
)
PROCREATE005 = _Reference(
"WARN", "Organisation is not allowed to create pointer type"
)
PROCREATE006 = _Reference("DEBUG", "Performing relatesTo validation on resource")
PROCREATE007a = _Reference(
"WARN", "RelatesTo validation failed - no target identifier value"
)
PROCREATE007b = _Reference(
"WARN", "RelatesTo validation failed - invalid producer for target identifier"
)
PROCREATE007c = _Reference(
"WARN", "RelatesTo validation failed - no pointer exists with target identifier"
)
PROCREATE007d = _Reference(
"WARN", "RelatesTo validation failed - relating pointer NHS number mismatch"
)
PROCREATE007e = _Reference(
"WARN", "RelatesTo validation failed - relating pointer document type mismatch"
)
PROCREATE008 = _Reference("INFO", "Selecting document as target to be superseded")
PROCREATE009 = _Reference("INFO", "Creating new document reference")
PROCREATE010 = _Reference("INFO", "Superseding document reference")
PROCREATE011 = _Reference(
"INFO", "Preserved .date field when creating new document reference"
)
PROCREATE012 = _Reference(
"WARN", "Existing pointers found for patient during create operation"
)
PROCREATE999 = _Reference(
"INFO", "Successfully completed producer createDocumentReference"
)
# Producer - UpsertDocumentReference
PROUPSERT000 = _Reference(
"INFO", "Starting to process producer upsertDocumentReference"
)
PROUPSERT001 = _Reference(
"DEBUG", "Validating DocumentReference resource for upsert"
)
PROUPSERT002 = _Reference(
"WARN", "DocumentReference resource failed validation for upsert"
)
PROUPSERT003 = _Reference(
"WARN", "ODS code in headers does not match ODS code in resource ID for upsert"
)
PROUPSERT004 = _Reference(
"WARN",
"ODS code in headers does not match ODS code in resource custodian for upsert",
)
PROUPSERT005 = _Reference(
"WARN", "Organisation is not allowed to upsert pointer type for upsert"
) #
PROUPSERT005a = _Reference(
"WARN",
"Organisation is not allowed to upsert pointer type with incorrect category code",
) #
PROUPSERT006 = _Reference(
"DEBUG", "Performing relatesTo validation on resource for upsert"
)
PROUPSERT006a = _Reference(
"DEBUG", "Skipping relatesTo validation on resource for sync upsert request"
)
PROUPSERT007a = _Reference(
"WARN", "RelatesTo validation failed - no target identifier value for upsert"
)
PROUPSERT007b = _Reference(
"WARN",
"RelatesTo validation failed - invalid producer for target identifier for upsert",
)
PROUPSERT007c = _Reference(
"WARN",
"RelatesTo validation failed - no pointer exists with target identifier for upsert",
)
PROUPSERT007d = _Reference(
"WARN",
"RelatesTo validation failed - relating pointer NHS number mismatch for upsert",
)
PROUPSERT007e = _Reference(
"WARN",
"RelatesTo validation failed - relating pointer document type mismatch for upsert",
)
PROUPSERT008 = _Reference("INFO", "Selecting document as target to be superseded")
PROUPSERT009 = _Reference("INFO", "Upserting new document reference")
PROUPSERT010 = _Reference("INFO", "Superseding document reference for upsert")
PROUPSERT011 = _Reference(
"INFO", "Preserved .date field when creating new document reference for upsert"
)
PROUPSERT012 = _Reference(
"WARN", "Existing pointers found for patient during upsert operation"
)
PROUPSERT999 = _Reference(
"INFO", "Successfully completed producer upsertDocumentReference"
)
# Producer - DeleteDocumentReference
PRODELETE000 = _Reference(
"INFO", "Starting to process producer deleteDocumentReference"
)
PRODELETE001 = _Reference(
"WARN",
"Organisation is not allowed to delete pointer as it is not the producer",
)
PRODELETE002 = _Reference("WARN", "Cannot delete pointer as it does not exist")
PRODELETE999 = _Reference(
"INFO", "Successfully completed producer deleteDocumentReference"
)
# Producer - ReadDocumentReference
PROREAD000 = _Reference(
"INFO", "Starting to process producer readDocumentReference"
)
PROREAD001 = _Reference(
"WARN",
"Unable to return DocumentReference as it belongs to another organisation",
)
PROREAD002 = _Reference("INFO", "Returning 404 DocumentReference not found")
PROREAD003 = _Reference(
"EXCEPTION", "The stored DocumentReference could not be parsed"
)
PROREAD999 = _Reference(
"INFO", "Successfully completed producer readDocumentReference"
)
# Producer - SearchDocumentReference
PROSEARCH000 = _Reference(
"INFO", "Starting to process producer searchDocumentReference"
)
PROSEARCH001 = _Reference(
"INFO", "Invalid NHS number provided in the query parameters"
)
PROSEARCH002 = _Reference(
"INFO", "Invalid document type provided in the query parameters"
)
PROSEARCH002b = _Reference(
"INFO", "Invalid document category provided in the query parameters"
)
PROSEARCH003 = _Reference("DEBUG", "Performing search by custodian")
PROSEARCH004 = _Reference(
"DEBUG", "Parsed DocumentReference and added to search results"
)
PROSEARCH005 = _Reference(
"EXCEPTION", "The DocumentReference resource could not be parsed"
)
PROSEARCH006 = _Reference("DEBUG", "Search with summary count parameter enabled")
PROSEARCH999 = _Reference(
"INFO", "Successfully completed producer searchDocumentReference"
)
# Producer - SearchPostDocumentReference
PROPOSTSEARCH000 = _Reference(
"INFO", "Starting to process producer searchPostDocumentReference"
)
PROPOSTSEARCH001 = _Reference(
"INFO", "Invalid NHS number provided in the request body"
)
PROPOSTSEARCH002 = _Reference(
"INFO", "Invalid document type provided in the request body"
)
PROPOSTSEARCH002b = _Reference(
"INFO", "Invalid document category provided in the request body"
)
PROPOSTSEARCH003 = _Reference("DEBUG", "Performing search by custodian")
PROPOSTSEARCH004 = _Reference(
"DEBUG", "Parsed DocumentReference and added to search results"
)
PROPOSTSEARCH005 = _Reference(
"EXCEPTION", "The DocumentReference resource could not be parsed"
)
PROPOSTSEARCH006 = _Reference(
"DEBUG", "Search with summary count parameter enabled"
)
PROPOSTSEARCH999 = _Reference(
"INFO", "Successfully completed producer searchDocumentReference"
)
# Producer - UpdateDocumentReference
PROUPDATE000 = _Reference(
"INFO", "Starting to process producer updateDocumentReference"
)
PROUPDATE001 = _Reference(
"WARN", "The ID in the path does not match the ID in the document body"
)
PROUPDATE002 = _Reference("DEBUG", "Validating DocumentReference resource")
PROUPDATE003 = _Reference("WARN", "DocumentReference resource failed validation")
PROUPDATE004 = _Reference(
"WARN", "ODS code in headers does not match ODS code in resource ID"
)
PROUPDATE005 = _Reference("WARN", "No existing DocumentReference to update")
PROUPDATE006 = _Reference(
"WARN", "Cannot update DocumentReference as immutable fields have changed"
)
PROUPDATE007 = _Reference(
"WARN",
"Update provided for DocumentReference with invalid preserved field, ignoring",
)
PROUPDATE999 = _Reference(
"INFO", "Successfully completed producer updateDocumentReference"
)
# Firehose Logs
FIREHOSE000 = _Reference("INFO", "Starting to process CloudWatch log records")
FIREHOSE001 = _Reference("INFO", "Parsed config from event")
# Status Logs
STATUS000 = _Reference("INFO", "Starting to process consumer status")
STATUS001 = _Reference("DEBUG", "Checking environment variables")
STATUS002 = _Reference("DEBUG", "Checking database connection")
STATUS003 = _Reference("EXCEPTION", "An error occurred during the status check")
STATUS999 = _Reference("INFO", "Successfully completed consumer status")