RED-6009 - Document Tree Structure
* fixed rules to include vertebrate study flags
This commit is contained in:
parent
0443e21858
commit
f0144799c5
@ -66,7 +66,7 @@ rule "0: Recommend CTL/BL laboratory that start with BL or CTL"
|
||||
end
|
||||
// --------------------------------------- CBI Rules -------------------------------------------------------------------
|
||||
|
||||
rule "1: Redact CBI Authors"
|
||||
rule "1: Redact CBI Authors (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$entity: RedactionEntity(type == "CBI_author", entityType == EntityType.ENTITY)
|
||||
@ -74,20 +74,31 @@ rule "1: Redact CBI Authors"
|
||||
$entity.setRedaction(true);
|
||||
$entity.addMatchedRule(1);
|
||||
$entity.setRedactionReason("Author found");
|
||||
$entity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
end
|
||||
|
||||
rule "2: Redact CBI Authors (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$entity: RedactionEntity(type == "CBI_author", entityType == EntityType.ENTITY)
|
||||
then
|
||||
$entity.setRedaction(true);
|
||||
$entity.addMatchedRule(2);
|
||||
$entity.setRedactionReason("Author found");
|
||||
$entity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
end
|
||||
|
||||
rule "2: Don't redact CBI Address (Non vertebrate study)"
|
||||
rule "3: Don't redact CBI Address (Non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$entity: RedactionEntity(type == "CBI_address", entityType == EntityType.ENTITY)
|
||||
then
|
||||
$entity.setRedaction(false);
|
||||
$entity.addMatchedRule(2);
|
||||
$entity.addMatchedRule(3);
|
||||
$entity.setRedactionReason("Address found for non vertebrate study");
|
||||
end
|
||||
|
||||
rule "3: Redact CBI Address (Vertebrate study)"
|
||||
rule "4: Redact CBI Address (Vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$entity: RedactionEntity(type == "CBI_address", entityType == EntityType.ENTITY)
|
||||
@ -107,8 +118,9 @@ rule "5: Add FALSE_POSITIVE Entity for genitive CBI_author"
|
||||
insert(falsePositive);
|
||||
end
|
||||
|
||||
rule "6: Redact all Cell's with Header Author(s) as CBI_author"
|
||||
rule "6: Redact all Cell's with Header Author(s) as CBI_author (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$table: Table(hasHeader("Author(s)"))
|
||||
then
|
||||
$table.streamTableCellsWithHeader("Author(s)")
|
||||
@ -118,14 +130,32 @@ rule "6: Redact all Cell's with Header Author(s) as CBI_author"
|
||||
redactionEntity.addMatchedRule(6);
|
||||
redactionEntity.addEngine(Engine.RULE);
|
||||
redactionEntity.setRedactionReason("Author(s) found");
|
||||
redactionEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
insert(redactionEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "7: Redact all Cell's with Header Author(s) as CBI_author (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$table: Table(hasHeader("Author(s)"))
|
||||
then
|
||||
$table.streamTableCellsWithHeader("Author(s)")
|
||||
.map(tableCell -> entityCreationService.bySemanticNode(tableCell, "CBI_author", EntityType.ENTITY))
|
||||
.forEach(redactionEntity -> {
|
||||
redactionEntity.setRedaction(true);
|
||||
redactionEntity.addMatchedRule(7);
|
||||
redactionEntity.addEngine(Engine.RULE);
|
||||
redactionEntity.setRedactionReason("Author(s) found");
|
||||
redactionEntity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
insert(redactionEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "8: Redact all Cell's with Header Author(s) as CBI_author"
|
||||
rule "8: Redact all Cell's with Header Author as CBI_author"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$table: Table(hasHeader("Author"))
|
||||
then
|
||||
$table.streamTableCellsWithHeader("Author")
|
||||
@ -135,6 +165,24 @@ rule "8: Redact all Cell's with Header Author(s) as CBI_author"
|
||||
redactionEntity.addMatchedRule(8);
|
||||
redactionEntity.addEngine(Engine.RULE);
|
||||
redactionEntity.setRedactionReason("Author found");
|
||||
redactionEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
insert(redactionEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "9: Redact all Cell's with Header Author as CBI_author"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$table: Table(hasHeader("Author"))
|
||||
then
|
||||
$table.streamTableCellsWithHeader("Author")
|
||||
.map(tableCell -> entityCreationService.bySemanticNode(tableCell, "CBI_author", EntityType.ENTITY))
|
||||
.forEach(redactionEntity -> {
|
||||
redactionEntity.setRedaction(true);
|
||||
redactionEntity.addMatchedRule(9);
|
||||
redactionEntity.addEngine(Engine.RULE);
|
||||
redactionEntity.setRedactionReason("Author found");
|
||||
redactionEntity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
insert(redactionEntity);
|
||||
});
|
||||
@ -142,22 +190,24 @@ rule "8: Redact all Cell's with Header Author(s) as CBI_author"
|
||||
|
||||
rule "10: Recommend all CBI_author entities in Table with Vertebrate Study Y/N Header"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
salience -1
|
||||
when
|
||||
$table: Table(hasHeader("Author(s)") && hasHeader("Vertebrate Study Y/N"))
|
||||
then
|
||||
$table.getEntitiesOfType("CBI_author").forEach(entity -> dictionary.addMultipleAuthorsAsRecommendation(entity));
|
||||
end
|
||||
|
||||
rule "14: Add CBI_author with \"et al.\" Regex"
|
||||
rule "14: Add CBI_author with \"et al.\" Regex (non vertebrate study)"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
$section: Section(containsString("et al."))
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("et al."))
|
||||
then
|
||||
entityCreationService.byRegex("\\b([A-ZÄÖÜ][^\\s\\.,]+( [A-ZÄÖÜ]{1,2}\\.?)?( ?[A-ZÄÖÜ]\\.?)?) et al\\.?", "CBI_author", EntityType.ENTITY, $section)
|
||||
entityCreationService.byRegex("\\b([A-ZÄÖÜ][^\\s\\.,]+( [A-ZÄÖÜ]{1,2}\\.?)?( ?[A-ZÄÖÜ]\\.?)?) et al\\.?", "CBI_author", EntityType.ENTITY, $section)
|
||||
.forEach(entity -> {
|
||||
entity.setRedaction(true);
|
||||
entity.setRedactionReason("Author found by \"et al\" regex");
|
||||
entity.setLegalBasis("Reg (EC) No 1107/2009 Art. 63 (2g)");
|
||||
entity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
entity.addMatchedRule(14);
|
||||
entity.addEngine(Engine.RULE);
|
||||
insert(entity);
|
||||
@ -165,6 +215,24 @@ rule "14: Add CBI_author with \"et al.\" Regex"
|
||||
});
|
||||
end
|
||||
|
||||
rule "15: Add CBI_author with \"et al.\" Regex (vertebrate study)"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("et al."))
|
||||
then
|
||||
entityCreationService.byRegex("\\b([A-ZÄÖÜ][^\\s\\.,]+( [A-ZÄÖÜ]{1,2}\\.?)?( ?[A-ZÄÖÜ]\\.?)?) et al\\.?", "CBI_author", EntityType.ENTITY, $section)
|
||||
.forEach(entity -> {
|
||||
entity.setRedaction(true);
|
||||
entity.setRedactionReason("Author found by \"et al\" regex");
|
||||
entity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
entity.addMatchedRule(15);
|
||||
entity.addEngine(Engine.RULE);
|
||||
insert(entity);
|
||||
dictionary.addLocalDictionaryEntry("CBI_author", entity.getValue(), false);
|
||||
});
|
||||
end
|
||||
|
||||
rule "16: Add recommendation for Addresses in Test Organism sections"
|
||||
when
|
||||
$section: Section(excludesTables, containsString("Species") && containsString("Source") && !containsString("Species:") && !containsString("Source:"))
|
||||
@ -221,8 +289,9 @@ rule "18.1: Do not redact Names and Addresses if published information found in
|
||||
|
||||
// --------------------------------------- PII rules -------------------------------------------------------------------
|
||||
|
||||
rule "19: Redact all PII"
|
||||
rule "19: Redact all PII (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$pii: RedactionEntity(type == "PII", redaction == false)
|
||||
then
|
||||
$pii.setRedaction(true);
|
||||
@ -231,8 +300,20 @@ rule "19: Redact all PII"
|
||||
$pii.addMatchedRule(19);
|
||||
end
|
||||
|
||||
rule "20: Redact all PII (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$pii: RedactionEntity(type == "PII", redaction == false)
|
||||
then
|
||||
$pii.setRedaction(true);
|
||||
$pii.setRedactionReason("Personal Information found");
|
||||
$pii.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
$pii.addMatchedRule(20);
|
||||
end
|
||||
|
||||
rule "21: Redact Emails by RegEx (Non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("@"))
|
||||
then
|
||||
entityCreationService.byRegex("\\b([A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z\\-]{1,23}[A-Za-z])\\b", "PII", EntityType.ENTITY, 1, $section)
|
||||
@ -245,9 +326,25 @@ rule "21: Redact Emails by RegEx (Non vertebrate study)"
|
||||
});
|
||||
end
|
||||
|
||||
|
||||
rule "25: Redact Phone and Fax by RegEx"
|
||||
rule "22: Redact Emails by RegEx (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("@"))
|
||||
then
|
||||
entityCreationService.byRegex("\\b([A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z\\-]{1,23}[A-Za-z])\\b", "PII", EntityType.ENTITY, 1, $section)
|
||||
.forEach(emailEntity -> {
|
||||
emailEntity.setRedaction(true);
|
||||
emailEntity.setRedactionReason("Found by Email Regex");
|
||||
emailEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
emailEntity.addMatchedRule(22);
|
||||
insert(emailEntity);
|
||||
});
|
||||
end
|
||||
|
||||
|
||||
rule "25: Redact Phone and Fax by RegEx (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("Contact") ||
|
||||
containsString("Telephone") ||
|
||||
containsString("Phone") ||
|
||||
@ -264,13 +361,14 @@ rule "25: Redact Phone and Fax by RegEx"
|
||||
contactEntity.setRedaction(true);
|
||||
contactEntity.setRedactionReason("Found by Email Regex");
|
||||
contactEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
contactEntity.addMatchedRule(26);
|
||||
contactEntity.addMatchedRule(25);
|
||||
insert(contactEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "25: Redact Phone and Fax by RegEx"
|
||||
rule "26: Redact Phone and Fax by RegEx (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(containsString("Contact") ||
|
||||
containsString("Telephone") ||
|
||||
containsString("Phone") ||
|
||||
@ -286,15 +384,16 @@ rule "25: Redact Phone and Fax by RegEx"
|
||||
.forEach(contactEntity -> {
|
||||
contactEntity.setRedaction(true);
|
||||
contactEntity.setRedactionReason("Found by Email Regex");
|
||||
contactEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
contactEntity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
contactEntity.addMatchedRule(26);
|
||||
insert(contactEntity);
|
||||
});
|
||||
end
|
||||
|
||||
|
||||
rule "27: Redact AUTHOR(S)"
|
||||
rule "27: Redact AUTHOR(S) (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(excludesTables, containsString("AUTHOR(S):"), containsString("COMPLETION DATE:"), !containsString("STUDY COMPLETION DATE:"))
|
||||
then
|
||||
entityCreationService.betweenStrings("AUTHOR(S):", "COMPLETION DATE:", "PII", EntityType.ENTITY, $section)
|
||||
@ -302,14 +401,30 @@ rule "27: Redact AUTHOR(S)"
|
||||
authorEntity.setRedaction(true);
|
||||
authorEntity.addMatchedRule(27);
|
||||
authorEntity.setRedactionReason("AUTHOR(S) was found");
|
||||
authorEntity.setLegalBasis("Reg (EC) No 1107/2009 Art. 63 (2e)");
|
||||
authorEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
insert(authorEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "28: Redact AUTHOR(S) (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(excludesTables, containsString("AUTHOR(S):"), containsString("COMPLETION DATE:"), !containsString("STUDY COMPLETION DATE:"))
|
||||
then
|
||||
entityCreationService.betweenStrings("AUTHOR(S):", "COMPLETION DATE:", "PII", EntityType.ENTITY, $section)
|
||||
.forEach(authorEntity -> {
|
||||
authorEntity.setRedaction(true);
|
||||
authorEntity.addMatchedRule(28);
|
||||
authorEntity.setRedactionReason("AUTHOR(S) was found");
|
||||
authorEntity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
insert(authorEntity);
|
||||
});
|
||||
end
|
||||
|
||||
|
||||
rule "29: Redact AUTHOR(S)"
|
||||
rule "29: Redact AUTHOR(S) (non vertebrate study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(excludesTables, containsString("AUTHOR(S):"), containsString("STUDY COMPLETION DATE:"))
|
||||
then
|
||||
entityCreationService.betweenStrings("AUTHOR(S):", "STUDY COMPLETION DATE:", "PII", EntityType.ENTITY, $section)
|
||||
@ -317,12 +432,28 @@ rule "29: Redact AUTHOR(S)"
|
||||
authorEntity.setRedaction(true);
|
||||
authorEntity.addMatchedRule(29);
|
||||
authorEntity.setRedactionReason("AUTHOR(S) was found");
|
||||
authorEntity.setLegalBasis("Reg (EC) No 1107/2009 Art. 63 (2e)");
|
||||
authorEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
insert(authorEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "30: Redact AUTHOR(S) (vertebrate study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$section: Section(excludesTables, containsString("AUTHOR(S):"), containsString("STUDY COMPLETION DATE:"))
|
||||
then
|
||||
entityCreationService.betweenStrings("AUTHOR(S):", "STUDY COMPLETION DATE:", "PII", EntityType.ENTITY, $section)
|
||||
.forEach(authorEntity -> {
|
||||
authorEntity.setRedaction(true);
|
||||
authorEntity.addMatchedRule(30);
|
||||
authorEntity.setRedactionReason("AUTHOR(S) was found");
|
||||
authorEntity.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
insert(authorEntity);
|
||||
});
|
||||
end
|
||||
|
||||
rule "31: Redact PERFORMING LABORATORY (Non vertebrate study)"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value == "Yes")
|
||||
$section: Section(excludesTables, containsString("PERFORMING LABORATORY:"))
|
||||
@ -338,6 +469,7 @@ rule "31: Redact PERFORMING LABORATORY (Non vertebrate study)"
|
||||
end
|
||||
|
||||
rule "32: Redact PERFORMING LABORATORY (Vertebrate study)"
|
||||
agenda-group "LOCAL_DICTIONARY_ADDS"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value == "Yes")
|
||||
$section: Section(excludesTables, containsString("PERFORMING LABORATORY:"))
|
||||
@ -368,7 +500,7 @@ rule "33: Purity Hint"
|
||||
|
||||
rule "34: Redact signatures (not Vertebrate Study)"
|
||||
when
|
||||
not FileAttribute(label == "Vertebrate Study", value == "Yes")
|
||||
not FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$signature: Image(imageType == ImageType.SIGNATURE)
|
||||
then
|
||||
$signature.setRedaction(true);
|
||||
@ -379,18 +511,19 @@ rule "34: Redact signatures (not Vertebrate Study)"
|
||||
|
||||
rule "35: Redact signatures (Vertebrate Study)"
|
||||
when
|
||||
FileAttribute(label == "Vertebrate Study", value == "Yes")
|
||||
FileAttribute(label == "Vertebrate Study", value.toLowerCase() == "yes")
|
||||
$signature: Image(imageType == ImageType.SIGNATURE)
|
||||
then
|
||||
$signature.setRedaction(true);
|
||||
$signature.setMatchedRule(35);
|
||||
$signature.setRedactionReason("Signature Found");
|
||||
$signature.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002");
|
||||
$signature.setLegalBasis("Article 39(e)(2) of Regulation (EC) No 178/2002");
|
||||
end
|
||||
|
||||
|
||||
rule "36: Redact logos"
|
||||
when
|
||||
not FileAttribute(label == "Vertbrate Study", value.toLowerCase() == "yes")
|
||||
$logo: Image(imageType == ImageType.LOGO)
|
||||
then
|
||||
$logo.setRedaction(true);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user