Skip to content

Commit 4db2d89

Browse files
committed
VED-719: Fix validation errors.
1 parent a92c0c7 commit 4db2d89

File tree

2 files changed

+83
-2
lines changed

2 files changed

+83
-2
lines changed

azure/azure-prod-proxy-release-pipeline.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ extends:
4343
prod_producer_approval: true
4444
apigee_deployments:
4545
- environment: ref
46-
stage_name: Deploy Ref Proxy (TEST TO BE REMOVED)
46+
depends_on: []
4747
jinja_templates:
4848
DOMAIN_ENDPOINT: https://${{ parameters.sub_environment }}.example.com
4949
- environment: prod
50-
stage_name: Deploy Prod Proxy
50+
depends_on:
51+
- ref
5152
jinja_templates:
5253
DOMAIN_ENDPOINT: https://${{ parameters.sub_environment }}.imms.prod.vds.platform.nhs.uk
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from csv import DictWriter
2+
from io import TextIOWrapper
3+
4+
import boto3
5+
from smart_open import open
6+
7+
8+
s3 = boto3.client("s3")
9+
10+
11+
def upload_test(bucket: str, key: str):
12+
# with open(f"s3://{bucket}/{key}", "wb", transport_params={"client": s3}) as output_file:
13+
with open(key, "wb") as output_file:
14+
output_file.write(b"----------------------------641963206721457550558305\r\n")
15+
output_file.write(b'Content-Disposition: form-data; name="File"; filename="HPV_Vaccinations_v5_TESTING_20250716T15453800.csv"\r\n')
16+
output_file.write(b"Content-Type: text/csv\r\n")
17+
output_file.write(b"\r\n")
18+
dict_writer = DictWriter(
19+
TextIOWrapper(output_file, encoding="utf-8", newline="", write_through=True),
20+
fieldnames=["NHS_NUMBER", "PERSON_FORENAME", "PERSON_SURNAME", "PERSON_DOB", "PERSON_GENDER_CODE", "PERSON_POSTCODE", "DATE_AND_TIME", "SITE_CODE", "SITE_CODE_TYPE_URI", "UNIQUE_ID", "UNIQUE_ID_URI", "ACTION_FLAG", "PERFORMING_PROFESSIONAL_FORENAME", "PERFORMING_PROFESSIONAL_SURNAME", "RECORDED_DATE", "PRIMARY_SOURCE", "VACCINATION_PROCEDURE_CODE", "VACCINATION_PROCEDURE_TERM", "DOSE_SEQUENCE", "VACCINE_PRODUCT_CODE", "VACCINE_PRODUCT_TERM", "VACCINE_MANUFACTURER", "BATCH_NUMBER", "EXPIRY_DATE", "SITE_OF_VACCINATION_CODE", "SITE_OF_VACCINATION_TERM", "ROUTE_OF_VACCINATION_CODE", "ROUTE_OF_VACCINATION_TERM", "DOSE_AMOUNT", "DOSE_UNIT_CODE", "DOSE_UNIT_TERM", "INDICATION_CODE", "LOCATION_CODE", "LOCATION_CODE_TYPE_URI"],
21+
delimiter="|",
22+
)
23+
dict_writer.writeheader()
24+
dict_writer.writerow({
25+
"NHS_NUMBER": "9626382228",
26+
"PERSON_FORENAME": "Ashleigh",
27+
"PERSON_SURNAME": "Wells",
28+
"PERSON_DOB": "19970423",
29+
"PERSON_GENDER_CODE": "1",
30+
"PERSON_POSTCODE": "L6G 1AF",
31+
"DATE_AND_TIME": "20250710T140606",
32+
"SITE_CODE": "RJ1",
33+
"SITE_CODE_TYPE_URI": "https://fhir.nhs.uk/Id/ods-organization-code",
34+
"UNIQUE_ID": "c8cd1dbc-e7e4-4c3c-ae24-7303e43e2e0f",
35+
"UNIQUE_ID_URI": "https://www.ravs.england.nhs.uk/",
36+
"ACTION_FLAG": "NEW",
37+
"PERFORMING_PROFESSIONAL_FORENAME": "Rita",
38+
"PERFORMING_PROFESSIONAL_SURNAME": "Harding",
39+
"RECORDED_DATE": "2025-07-16T15:45:38+00:00",
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 (split virion, inactivated) suspension for injection 0.5ml pre-filled syringes (Sanofi Pasteur)",
46+
"VACCINE_MANUFACTURER": "Sanofi Pasteur",
47+
"BATCH_NUMBER": "BN92478105653",
48+
"EXPIRY_DATE": "20250721",
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": "0.3",
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+
output_file.write(b"\r\n")
61+
output_file.write(b"----------------------------641963206721457550558305--\r\n")
62+
63+
64+
def upload_large_multipart_file(bucket: str, key: str) -> None:
65+
with open(f"s3://{bucket}/{key}", "wb", transport_params={"client": s3}) as f:
66+
# with open(key, "wb") as f:
67+
f.write(b"----------------------------641963206721457550558305\r\n")
68+
f.write(b'Content-Disposition: form-data; name="File"; filename="HPV_Vaccinations_v5_INVALID_20250721T15453800.csv"\r\n')
69+
f.write(b"Content-Type: text/csv\r\n")
70+
f.write(b"\r\n")
71+
f.write(b"NHS_NUMBER|PERSON_FORENAME|PERSON_SURNAME|PERSON_DOB|PERSON_GENDER_CODE|PERSON_POSTCODE|DATE_AND_TIME|SITE_CODE|SITE_CODE_TYPE_URI|UNIQUE_ID|UNIQUE_ID_URI|ACTION_FLAG|PERFORMING_PROFESSIONAL_FORENAME|PERFORMING_PROFESSIONAL_SURNAME|RECORDED_DATE|PRIMARY_SOURCE|VACCINATION_PROCEDURE_CODE|VACCINATION_PROCEDURE_TERM|DOSE_SEQUENCE|VACCINE_PRODUCT_CODE|VACCINE_PRODUCT_TERM|VACCINE_MANUFACTURER|BATCH_NUMBER|EXPIRY_DATE|SITE_OF_VACCINATION_CODE|SITE_OF_VACCINATION_TERM|ROUTE_OF_VACCINATION_CODE|ROUTE_OF_VACCINATION_TERM|DOSE_AMOUNT|DOSE_UNIT_CODE|DOSE_UNIT_TERM|INDICATION_CODE|LOCATION_CODE|LOCATION_CODE_TYPE_URI\n")
72+
for i in range(1000000):
73+
f.write(b'"9626382228"|"Ashleigh"|"Wells"|"19970423"|"1"|"L6G 1AF"|"20250710T140606"|"RJ1"|"https://fhir.nhs.uk/Id/ods-organization-code"|"c8cd1dbc-e7e4-4c3c-ae24-7303e43e2e0f"|"https://www.ravs.england.nhs.uk/"|"INVALID"|"Rita"|"Harding"|"2025-07-16T15:45:38+00:00"|"TRUE"|"956951000000104"|"RSV vaccination in pregnancy (procedure)"|"1"|"42223111000001107"|"Quadrivalent influenza vaccine (split virion, inactivated) suspension for injection 0.5ml pre-filled syringes (Sanofi Pasteur)"|"Sanofi Pasteur"|"BN92478105653"|"20250721"|"368209003"|"Right arm"|"1210999013"|"Intradermal use"|"0.3"|"2622896019"|"Inhalation - unit of product usage"|"1037351000000105"|"RJC02"|"https://fhir.nhs.uk/Id/ods-organization-code"\n')
74+
f.write(b"\r\n")
75+
f.write(b"----------------------------641963206721457550558305--\r\n")
76+
77+
78+
if __name__ == '__main__':
79+
upload_large_multipart_file("imms-dev-mesh", "jarvis-test-file.dat")
80+
# upload_test("test_files", "test_file_1.csv")

0 commit comments

Comments
 (0)