RED-7040: Syngenta rule 29 does not work
This commit is contained in:
parent
e395620e29
commit
9fcf02df73
@ -183,6 +183,14 @@ public class EntityCreationService {
|
|||||||
return betweenTextRanges(startTextRanges, stopTextRanges, type, entityType, node);
|
return betweenTextRanges(startTextRanges, stopTextRanges, type, entityType, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Stream<TextEntity> shortestBetweenAnyStringIgnoreCase(List<String> starts, List<String> stops, String type, EntityType entityType, SemanticNode node, int limit) {
|
||||||
|
|
||||||
|
List<TextRange> startTextRanges = RedactionSearchUtility.findTextRangesByListIgnoreCase(starts, node.getTextBlock());
|
||||||
|
List<TextRange> stopTextRanges = RedactionSearchUtility.findTextRangesByListIgnoreCase(stops, node.getTextBlock());
|
||||||
|
|
||||||
|
return betweenTextRanges(startTextRanges, stopTextRanges, type, entityType, node, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Stream<TextEntity> betweenRegexes(String regexStart, String regexStop, String type, EntityType entityType, SemanticNode node) {
|
public Stream<TextEntity> betweenRegexes(String regexStart, String regexStop, String type, EntityType entityType, SemanticNode node) {
|
||||||
|
|
||||||
@ -203,14 +211,20 @@ public class EntityCreationService {
|
|||||||
return betweenTextRanges(startBoundaries, stopBoundaries, type, entityType, node);
|
return betweenTextRanges(startBoundaries, stopBoundaries, type, entityType, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Stream<TextEntity> betweenTextRanges(List<TextRange> startBoundaries, List<TextRange> stopBoundaries, String type, EntityType entityType, SemanticNode node) {
|
public Stream<TextEntity> betweenTextRanges(List<TextRange> startBoundaries, List<TextRange> stopBoundaries, String type, EntityType entityType, SemanticNode node) {
|
||||||
|
|
||||||
|
return betweenTextRanges(startBoundaries, stopBoundaries, type, entityType, node,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Stream<TextEntity> betweenTextRanges(List<TextRange> startBoundaries, List<TextRange> stopBoundaries, String type, EntityType entityType, SemanticNode node, int limit) {
|
||||||
|
|
||||||
if (startBoundaries.isEmpty() || stopBoundaries.isEmpty()) {
|
if (startBoundaries.isEmpty() || stopBoundaries.isEmpty()) {
|
||||||
return Stream.empty();
|
return Stream.empty();
|
||||||
}
|
}
|
||||||
List<TextRange> entityBoundaries = findNonOverlappingBoundariesBetweenBoundariesWithMinimalDistances(startBoundaries, stopBoundaries);
|
List<TextRange> entityBoundaries = findNonOverlappingBoundariesBetweenBoundariesWithMinimalDistances(startBoundaries, stopBoundaries);
|
||||||
return entityBoundaries.stream()
|
return entityBoundaries.stream()
|
||||||
|
.filter(range -> (limit == 0 || range.length() <= limit))
|
||||||
.map(textRange -> textRange.trim(node.getTextBlock()))
|
.map(textRange -> textRange.trim(node.getTextBlock()))
|
||||||
.filter(textRange -> isValidEntityTextRange(node.getTextBlock(), textRange))
|
.filter(textRange -> isValidEntityTextRange(node.getTextBlock(), textRange))
|
||||||
.map(textRange -> byTextRange(textRange, type, entityType, node))
|
.map(textRange -> byTextRange(textRange, type, entityType, node))
|
||||||
|
|||||||
@ -974,6 +974,15 @@ rule "PII.9.3: Redact between \"AUTHOR(S)\" and \"STUDY COMPLETION DATE\" (verte
|
|||||||
.forEach(authorEntity -> authorEntity.apply("PII.9.3", "AUTHOR(S) was found", "Article 39(e)(2) of Regulation (EC) No 178/2002"));
|
.forEach(authorEntity -> authorEntity.apply("PII.9.3", "AUTHOR(S) was found", "Article 39(e)(2) of Regulation (EC) No 178/2002"));
|
||||||
end
|
end
|
||||||
|
|
||||||
|
rule "PII.9.4: Redact between \"AUTHOR(S)\" and \"STUDY COMPLETION DATE\" (vertebrate study)"
|
||||||
|
when
|
||||||
|
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||||
|
$document: Document(containsStringIgnoreCase("AUTHOR(S)"), containsStringIgnoreCase("STUDY COMPLETION DATE"))
|
||||||
|
then
|
||||||
|
entityCreationService.shortestBetweenAnyStringIgnoreCase(List.of("AUTHOR(S):","AUTHOR(S)"), List.of("STUDY COMPLETION DATE:","STUDY COMPLETION DATE"), "PII", EntityType.ENTITY, $document)
|
||||||
|
.forEach(authorEntity -> authorEntity.apply("PII.9.4", "AUTHOR(S) was found", "Article 39(e)(2) of Regulation (EC) No 178/2002"));
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
// Rule unit: PII.10
|
// Rule unit: PII.10
|
||||||
rule "PII.10.0: Redact study director abbreviation"
|
rule "PII.10.0: Redact study director abbreviation"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user