diff --git a/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformDataLookupFacade.cs b/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformDataLookupFacade.cs index 27f688bf3c..428bdc4803 100644 --- a/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformDataLookupFacade.cs +++ b/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformDataLookupFacade.cs @@ -60,14 +60,21 @@ public async Task> GetCachedExcludedSMUValues() return excludedSMUData!; } + public bool ValidateOutcode(string postcode) { - string outcode = ValidationHelper.ParseOutcode(postcode) - ?? throw new TransformationException("Postcode format invalid"); + //if a postcode is a dummy postcode then we want to allow the rules to know that we have a dummy postcode + if (postcode.StartsWith("ZZ")) + { + return false; + } - var result = _outcodeClient.GetSingle(outcode).Result; + string parsedOutCode = ValidationHelper.ParseOutcode(postcode) + ?? throw new TransformationException("Postcode format invalid"); + var result = _outcodeClient.GetSingle(parsedOutCode).Result; return result != null; + } /// diff --git a/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformReasonForRemoval.cs b/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformReasonForRemoval.cs index ee014c9232..034c67a28d 100644 --- a/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformReasonForRemoval.cs +++ b/application/CohortManager/src/Functions/CohortDistributionServices/TransformDataService/TransformReasonForRemoval.cs @@ -2,9 +2,8 @@ namespace NHS.CohortManager.CohortDistributionService; using Model; using Common; -using Data.Database; using System.Text.Json; -using Apache.Arrow.Types; + public class TransformReasonForRemoval : ITransformReasonForRemoval { diff --git a/application/CohortManager/src/Functions/ScreeningValidationService/LookupValidation/DataLookupFacadeBreastScreening.cs b/application/CohortManager/src/Functions/ScreeningValidationService/LookupValidation/DataLookupFacadeBreastScreening.cs index a765e9a5e9..d4b57c74df 100644 --- a/application/CohortManager/src/Functions/ScreeningValidationService/LookupValidation/DataLookupFacadeBreastScreening.cs +++ b/application/CohortManager/src/Functions/ScreeningValidationService/LookupValidation/DataLookupFacadeBreastScreening.cs @@ -53,7 +53,7 @@ public bool ValidateOutcode(string postcode) { var outcode = ValidationHelper.ParseOutcode(postcode); _logger.LogInformation("Validating Outcode: {Outcode}", outcode); - var result = _outcodeClient.GetSingle(outcode).Result; + var result = _outcodeClient.GetSingle(outcode!).Result; return result != null; } diff --git a/application/CohortManager/src/Functions/Shared/Common/ValidationHelper.cs b/application/CohortManager/src/Functions/Shared/Common/ValidationHelper.cs index 76cbdfe34a..2f726395df 100644 --- a/application/CohortManager/src/Functions/Shared/Common/ValidationHelper.cs +++ b/application/CohortManager/src/Functions/Shared/Common/ValidationHelper.cs @@ -1,7 +1,10 @@ namespace Common; using System.Globalization; +using System.Linq.Expressions; using System.Text.RegularExpressions; +using Hl7.Fhir.Validation; +using Model; public static class ValidationHelper { @@ -109,21 +112,16 @@ public static bool ValidatePostcode(string postcode) /// public static string? ParseOutcode(string postcode) { - if (postcode == "ZZZSECUR") - { - return postcode; - } - string pattern = @"^([A-Za-z][A-Za-z]?[0-9][A-Za-z0-9]?) ?[0-9][A-Za-z]{2}$"; Match match = Regex.Match(postcode, pattern, RegexOptions.IgnoreCase, TimeSpan.FromSeconds(2)); + if (!match.Success) { return null; } string outcode = match.Groups[1].Value; - return outcode; }