|
1 | 1 | import os |
2 | | -from datetime import datetime, timezone |
3 | 2 |
|
4 | 3 | environment = os.environ.get("ENVIRONMENT", "internal-dev") |
5 | 4 | REGION = "eu-west-2" |
|
12 | 11 | POST_VALIDATION_ERROR = "Validation errors: contained[?(@.resourceType=='Patient')].name[0].given is a mandatory field" |
13 | 12 | DUPLICATE = "The provided identifier:" |
14 | 13 | ACK_PREFIX = "ack/" |
| 14 | +TEMP_ACK_PREFIX = "TempAck/" |
15 | 15 | HEADER_RESPONSE_CODE_COLUMN = "HEADER_RESPONSE_CODE" |
16 | 16 | FILE_NAME_VAL_ERROR = "Infrastructure Level Response Value - Processing Error" |
17 | 17 | CONFIG_BUCKET = "imms-internal-dev-supplier-config" |
18 | 18 | PERMISSIONS_CONFIG_FILE_KEY = "permissions_config.json" |
| 19 | +RAVS_URI = "https://www.ravs.england.nhs.uk/" |
| 20 | +batch_fifo_queue_name = f"imms-{environment}-batch-file-created-queue.fifo" |
| 21 | +ack_metadata_queue_name = f"imms-{environment}-ack-metadata-queue.fifo" |
| 22 | +audit_table_name = f"immunisation-batch-{environment}-audit-table" |
19 | 23 |
|
20 | 24 |
|
21 | | -def create_row(unique_id, fore_name, dose_amount, action_flag, header): |
22 | | - """Helper function to create a single row with the specified UNIQUE_ID and ACTION_FLAG.""" |
23 | | - |
24 | | - return { |
25 | | - header: "9732928395", |
26 | | - "PERSON_FORENAME": fore_name, |
27 | | - "PERSON_SURNAME": "James", |
28 | | - "PERSON_DOB": "20080217", |
29 | | - "PERSON_GENDER_CODE": "0", |
30 | | - "PERSON_POSTCODE": "WD25 0DZ", |
31 | | - "DATE_AND_TIME": datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S"), |
32 | | - "SITE_CODE": "RVVKC", |
33 | | - "SITE_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code", |
34 | | - "UNIQUE_ID": unique_id, |
35 | | - "UNIQUE_ID_URI": "https://www.ravs.england.nhs.uk/", |
36 | | - "ACTION_FLAG": action_flag, |
37 | | - "PERFORMING_PROFESSIONAL_FORENAME": "PHYLIS", |
38 | | - "PERFORMING_PROFESSIONAL_SURNAME": "James", |
39 | | - "RECORDED_DATE": datetime.now(timezone.utc).strftime("%Y%m%d"), |
40 | | - "PRIMARY_SOURCE": "TRUE", |
41 | | - "VACCINATION_PROCEDURE_CODE": "956951000000104", |
42 | | - "VACCINATION_PROCEDURE_TERM": "RSV vaccination in pregnancy (procedure)", |
43 | | - "DOSE_SEQUENCE": "1", |
44 | | - "VACCINE_PRODUCT_CODE": "42223111000001107", |
45 | | - "VACCINE_PRODUCT_TERM": "Quadrivalent influenza vaccine (Sanofi Pasteur)", |
46 | | - "VACCINE_MANUFACTURER": "Sanofi Pasteur", |
47 | | - "BATCH_NUMBER": "BN92478105653", |
48 | | - "EXPIRY_DATE": "20240915", |
49 | | - "SITE_OF_VACCINATION_CODE": "368209003", |
50 | | - "SITE_OF_VACCINATION_TERM": "Right arm", |
51 | | - "ROUTE_OF_VACCINATION_CODE": "1210999013", |
52 | | - "ROUTE_OF_VACCINATION_TERM": "Intradermal use", |
53 | | - "DOSE_AMOUNT": dose_amount, |
54 | | - "DOSE_UNIT_CODE": "2622896019", |
55 | | - "DOSE_UNIT_TERM": "Inhalation - unit of product usage", |
56 | | - "INDICATION_CODE": "1037351000000105", |
57 | | - "LOCATION_CODE": "RJC02", |
58 | | - "LOCATION_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code", |
59 | | - } |
60 | | - |
61 | | - |
62 | | -def create_permissions_json(value): |
63 | | - return { |
64 | | - "all_permissions": { |
65 | | - "DPSFULL": ["RSV_FULL", "COVID19_FULL", "FLU_FULL", "MMR_FULL"], |
66 | | - "DPSREDUCED": ["COVID19_FULL", "FLU_FULL", "MMR_FULL"], |
67 | | - "EMIS": [value, "RSV_FULL"], |
68 | | - "PINNACLE": ["COVID19_UPDATE", "RSV_FULL"], |
69 | | - "SONAR": "", |
70 | | - "TPP": [""], |
71 | | - "AGEM-NIVS": [""], |
72 | | - "NIMS": [""], |
73 | | - "EVA": [""], |
74 | | - "RAVS": [""], |
75 | | - "MEDICAL_DIRECTOR": [""], |
76 | | - "WELSH_DA_1": [""], |
77 | | - "WELSH_DA_2": [""], |
78 | | - "NORTHERN_IRELAND_DA": [""], |
79 | | - "SCOTLAND_DA": [""], |
80 | | - "COVID19_VACCINE_RESOLUTION_SERVICEDESK": [""], |
81 | | - }, |
82 | | - "definitions:": { |
83 | | - "FULL": "Full permissions to create, update and delete a batch record", |
84 | | - "CREATE": "Permission to create a batch record", |
85 | | - "UPDATE": "Permission to update a batch record", |
86 | | - "DELETE": "Permission to delete a batch record", |
87 | | - }, |
88 | | - } |
| 25 | +class EventName: |
| 26 | + CREATE = "INSERT" |
| 27 | + UPDATE = "MODIFY" |
| 28 | + DELETE_LOGICAL = "MODIFY" |
| 29 | + DELETE_PHYSICAL = "REMOVE" |
| 30 | + |
| 31 | + |
| 32 | +class Operation: |
| 33 | + CREATE = "CREATE" |
| 34 | + UPDATE = "UPDATE" |
| 35 | + DELETE_LOGICAL = "DELETE" |
| 36 | + DELETE_PHYSICAL = "REMOVE" |
| 37 | + |
| 38 | + |
| 39 | +class ActionFlag: |
| 40 | + CREATE = "NEW" |
| 41 | + UPDATE = "UPDATE" |
| 42 | + DELETE_LOGICAL = "DELETE" |
| 43 | + NONE = "NONE" |
| 44 | + |
| 45 | + |
| 46 | +class InfResult: |
| 47 | + SUCCESS = "Success" |
| 48 | + PARTIAL_SUCCESS = "Partial Success" |
| 49 | + FATAL_ERROR = "Fatal Error" |
| 50 | + |
| 51 | + |
| 52 | +class BusRowResult: |
| 53 | + SUCCESS = "OK" |
| 54 | + FATAL_ERROR = "Fatal Error" |
| 55 | + IMMS_NOT_FOUND = "Immunization resource does not exist" |
| 56 | + NONE = "NONE" |
| 57 | + |
| 58 | + |
| 59 | +class OperationOutcome: |
| 60 | + IMMS_NOT_FOUND = "Immunization resource does not exist" |
| 61 | + TEST = "TEST" |
| 62 | + |
| 63 | + |
| 64 | +class OpMsgs: |
| 65 | + VALIDATION_ERROR = "Validation errors" |
| 66 | + MISSING_MANDATORY_FIELD = "is a mandatory field" |
| 67 | + DOSE_QUANTITY_NOT_NUMBER = "doseQuantity.value must be a number" |
| 68 | + IMM_NOT_EXIST = "Immunization resource does not exist" |
| 69 | + IDENTIFIER_PROVIDED = "The provided identifier:" |
| 70 | + INVALID_DATE_FORMAT = "is not in the correct format" |
| 71 | + |
| 72 | + |
| 73 | +class DestinationType: |
| 74 | + INF = ACK_PREFIX |
| 75 | + BUS = FORWARDEDFILE_PREFIX |
| 76 | + |
| 77 | + |
| 78 | +class ActionSequence: |
| 79 | + def __init__(self, desc: str, actions: list[ActionFlag], outcome: ActionFlag = None): |
| 80 | + self.actions = actions |
| 81 | + self.description = desc |
| 82 | + self.outcome = outcome if outcome else actions[-1] |
| 83 | + |
| 84 | + |
| 85 | +class PermPair: |
| 86 | + def __init__(self, ods_code: str, permissions: str): |
| 87 | + self.ods_code = ods_code |
| 88 | + self.permissions = permissions |
| 89 | + |
| 90 | + |
| 91 | +class TestSet: |
| 92 | + CREATE_OK = ActionSequence("Create. OK", [ActionFlag.CREATE]) |
| 93 | + UPDATE_OK = ActionSequence("Update. OK", [ActionFlag.CREATE, ActionFlag.UPDATE]) |
| 94 | + DELETE_OK = ActionSequence("Delete. OK", [ActionFlag.CREATE, ActionFlag.UPDATE, ActionFlag.DELETE_LOGICAL]) |
| 95 | + REINSTATE_OK = ActionSequence("Reinstate. OK", [ActionFlag.CREATE, ActionFlag.DELETE_LOGICAL, ActionFlag.UPDATE]) |
| 96 | + DELETE_FAIL = ActionSequence("Delete without Create. Fail", [ActionFlag.DELETE_LOGICAL]) |
| 97 | + UPDATE_FAIL = ActionSequence("Update without Create. Fail", [ActionFlag.UPDATE], outcome=ActionFlag.NONE) |
0 commit comments