diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DictionaryClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DictionaryClient.java new file mode 100644 index 0000000..a50f0e3 --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DictionaryClient.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.redaction.report.v1.server.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.persistence.service.v1.api.resources.DictionaryResource; + +@FeignClient(name = "DictionaryResource", url = "${persistence-service.url}") +public interface DictionaryClient extends DictionaryResource { + +} diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/PlaceholderInput.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/PlaceholderInput.java index fd1cfa5..53462b7 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/PlaceholderInput.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/PlaceholderInput.java @@ -16,7 +16,4 @@ public class PlaceholderInput { private Map.Entry> redactionsPerJustificationEntry; - - - } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ReportRedactionEntry.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ReportRedactionEntry.java index 706c291..01a80b9 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ReportRedactionEntry.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ReportRedactionEntry.java @@ -16,4 +16,6 @@ public class ReportRedactionEntry { private String justificationReason; private String excerpt; private String value; + private String entityDisplayName; + } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java index 2ed886f..39e0a9f 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java @@ -18,6 +18,7 @@ import static com.iqser.red.service.redaction.report.v1.server.service.Placehold import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_TEXT_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PAGE_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PARAGRAPH_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_VALUE_PLACEHOLDER; import java.awt.image.BufferedImage; @@ -68,9 +69,8 @@ import lombok.extern.slf4j.Slf4j; public class ExcelReportGenerationService { @Timed("redactmanager_generateExcelReport") - public void generateExcelReport(List reportEntries, PlaceholderModel placeholderModel, - String reportTemplateName, SXSSFWorkbook workbook, String dossierName, - FileModel fileModel, ExcelModel excelModel, boolean isLastFile) { + public void generateExcelReport(List reportEntries, PlaceholderModel placeholderModel, String reportTemplateName, SXSSFWorkbook workbook, + String dossierName, FileModel fileModel, ExcelModel excelModel, boolean isLastFile) { long start = System.currentTimeMillis(); @@ -106,8 +106,7 @@ public class ExcelReportGenerationService { @SneakyThrows @Timed("redactmanager_excel-addRows") - private void addRows(SXSSFWorkbook workbook, Sheet sheet, Map copiedCells, - int numberOfRowsToShift, PlaceholderModel placeholderModel, String dossierName, + private void addRows(SXSSFWorkbook workbook, Sheet sheet, Map copiedCells, int numberOfRowsToShift, PlaceholderModel placeholderModel, String dossierName, String filename) { Set createdCopyRows = new HashSet<>(); @@ -133,8 +132,7 @@ public class ExcelReportGenerationService { } - private void replacePlaceholders(Cell cell, PlaceholderModel placeholderModel, String dossierName, - String filename) { + private void replacePlaceholders(Cell cell, PlaceholderModel placeholderModel, String dossierName, String filename) { for (String placeholder : placeholderModel.getPlaceholders()) { String placeholderValue = getPlaceholderValue(placeholder, dossierName, filename, placeholderModel); @@ -183,8 +181,7 @@ public class ExcelReportGenerationService { @Timed("redactmanager_excel-addRedactionEntryRows") - private void addRedactionEntryRows(Sheet sheet, List reportEntries, String filename, - ExcelModel excelModel, PlaceholderModel placeholderModel) { + private void addRedactionEntryRows(Sheet sheet, List reportEntries, String filename, ExcelModel excelModel, PlaceholderModel placeholderModel) { long start = System.currentTimeMillis(); AtomicInteger rowIndex = new AtomicInteger(excelModel.getRedactionPlaceholderRow()); @@ -196,8 +193,7 @@ public class ExcelReportGenerationService { excelModel.getWrittenRows().add(rowIndex.get()); for (Map.Entry> entry1 : placeholderCellPos.entrySet()) { Cell cell = sheet.getRow(rowIndex.get()).createCell(entry1.getKey()); - cell.setCellValue(entry1.getValue() - .apply(new PlaceholderInput(filename, entry, placeholderModel, null))); + cell.setCellValue(entry1.getValue().apply(new PlaceholderInput(filename, entry, placeholderModel, null))); } rowIndex.getAndIncrement(); }); @@ -210,7 +206,7 @@ public class ExcelReportGenerationService { private boolean containsRedactionPlaceholder(String text) { - return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER); + return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER) || text.contains(REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER); } @@ -244,10 +240,10 @@ public class ExcelReportGenerationService { return (input) -> input.getEntry().getExcerpt(); } if (placeholder.equals(REDACTION_VALUE_PLACEHOLDER)) { - return (input) -> input.getEntry().getValue() != null ? input.getEntry() - .getValue() - .replaceAll("\n", " ") - .replaceAll(" ", " ") : ""; + return (input) -> input.getEntry().getValue() != null ? input.getEntry().getValue().replaceAll("\n", " ").replaceAll(" ", " ") : ""; + } + if (placeholder.equals(REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER)) { + return (input) -> input.getEntry().getEntityDisplayName(); } return (input) -> ""; } @@ -264,8 +260,7 @@ public class ExcelReportGenerationService { } - private void replacePlaceholdersForImagePlaceholder(SXSSFWorkbook workbook, Sheet sheet, Cell cell, - PlaceholderModel placeholderModel) throws IOException { + private void replacePlaceholdersForImagePlaceholder(SXSSFWorkbook workbook, Sheet sheet, Cell cell, PlaceholderModel placeholderModel) throws IOException { for (ImagePlaceholder imagePlaceholder : placeholderModel.getImagePlaceholders()) { @@ -302,8 +297,7 @@ public class ExcelReportGenerationService { } - private double calculateScale(ByteArrayInputStream imageByteArrayInputStream, float cellWidth, - float cellHeight) throws IOException { + private double calculateScale(ByteArrayInputStream imageByteArrayInputStream, float cellWidth, float cellHeight) throws IOException { BufferedImage img = ImageIO.read(imageByteArrayInputStream); @@ -324,8 +318,7 @@ public class ExcelReportGenerationService { } - private String getPlaceholderValue(String placeholder, String dossierName, String filename, - PlaceholderModel placeholderModel) { + private String getPlaceholderValue(String placeholder, String dossierName, String filename, PlaceholderModel placeholderModel) { if (placeholder.equals(FORMAT_DATE_ISO_PLACEHOLDER)) { return OffsetDateTime.now().format(FORMAT_DATE_ISO); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java index 4e9c79b..e65b243 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java @@ -1,5 +1,26 @@ package com.iqser.red.service.redaction.report.v1.server.service; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.springframework.stereotype.Service; + import com.amazonaws.services.kms.model.NotFoundException; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient; @@ -7,20 +28,9 @@ import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesCon import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient; import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.apache.poi.xwpf.usermodel.*; -import org.springframework.stereotype.Service; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.time.format.DateTimeFormatter; -import java.util.*; @Slf4j @Service @@ -37,6 +47,7 @@ public class PlaceholderService { public static final String JUSTIFICATION_TEXT_PLACEHOLDER = "{{redaction.justificationText}}"; public static final String EXCERPT_PLACEHOLDER = "{{redaction.excerpt}}"; public static final String REDACTION_VALUE_PLACEHOLDER = "{{redaction.value}}"; + public static final String REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER = "{{redaction.entity.displayName}}"; public static final DateTimeFormatter FORMAT_DATE_ISO = DateTimeFormatter.ofPattern("yyyy-MM-dd"); public static final DateTimeFormatter FORMAT_DATE_GER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); @@ -55,18 +66,18 @@ public class PlaceholderService { public static final String SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER = "{{function.seeds.redactionGroupedByJustification.pages}}"; public static final String SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER = "{{function.seeds.justification}}"; - - private final ReportTemplateClient reportTemplateClient; private final ReportStorageService reportStorageService; private final DossierAttributesConfigClient dossierAttributesConfigClient; private final FileAttributesConfigClient fileAttributesClient; + public List getGeneralPlaceholders() { - return List.of(FILE_NAME_PLACEHOLDER, PAGE_PLACEHOLDER, PARAGRAPH_PLACEHOLDER, JUSTIFICATION_PLACEHOLDER, EXCERPT_PLACEHOLDER, FORMAT_DATE_ISO_PLACEHOLDER, FORMAT_DATE_GER_PLACEHOLDER, FORMAT_DATE_ENG_PLACEHOLDER, FORMAT_TIME_ISO_PLACEHOLDER, DOSSIER_NAME_PLACEHOLDER, IUCLID_FUNCTION_PLACEHOLDER, REDACTION_VALUE_PLACEHOLDER, JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER, JUSTIFICATION_TEXT_PLACEHOLDER, SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER, SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER); + return List.of(FILE_NAME_PLACEHOLDER, PAGE_PLACEHOLDER, PARAGRAPH_PLACEHOLDER, JUSTIFICATION_PLACEHOLDER, EXCERPT_PLACEHOLDER, FORMAT_DATE_ISO_PLACEHOLDER, FORMAT_DATE_GER_PLACEHOLDER, FORMAT_DATE_ENG_PLACEHOLDER, FORMAT_TIME_ISO_PLACEHOLDER, DOSSIER_NAME_PLACEHOLDER, IUCLID_FUNCTION_PLACEHOLDER, REDACTION_VALUE_PLACEHOLDER, JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER, JUSTIFICATION_TEXT_PLACEHOLDER, SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER, SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER, REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER); } + public Set getPlaceholdersOfTemplate(String dossierTemplateId, String reportTemplateId) { ReportTemplate reportTemplate = reportTemplateClient.getReportTemplate(dossierTemplateId, reportTemplateId); @@ -74,6 +85,7 @@ public class PlaceholderService { return findGivenPlaceholdersOfTemplate(reportTemplate, allPlaceholders); } + public List getReportTemplatesByPlaceholder(String dossierTemplateId, String placeholder) { List reportTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplateId); @@ -92,6 +104,7 @@ public class PlaceholderService { return result; } + private Set findGivenPlaceholdersOfTemplate(ReportTemplate reportTemplate, Set placeholders) { try { @@ -112,6 +125,7 @@ public class PlaceholderService { } } + private Set findExcelPlaceholders(byte[] template, Set allPlaceholders) { try (ByteArrayInputStream is = new ByteArrayInputStream(template)) { @@ -144,6 +158,7 @@ public class PlaceholderService { } + private Set findWordPlaceholders(byte[] template, Set allPlaceholders) { Set resultPlaceholders = new HashSet<>(); @@ -181,6 +196,7 @@ public class PlaceholderService { } } + private Set getAllPlaceholders(String dossierTemplateId) { Set allPlaceholders = new HashSet<>(getGeneralPlaceholders()); @@ -196,7 +212,9 @@ public class PlaceholderService { return allPlaceholders; } + private void contains(Set allPlaceholders, Set resultPlaceholders, String placeholder) { + for (String searchPlaceholder : allPlaceholders) { if (StringUtils.contains(placeholder, searchPlaceholder)) { resultPlaceholders.add(searchPlaceholder); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java index 22a7969..b46f47b 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java @@ -1,28 +1,28 @@ package com.iqser.red.service.redaction.report.v1.server.service; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; -import com.iqser.red.service.redaction.v1.model.ChangeType; import com.iqser.red.service.redaction.v1.model.ManualRedactionType; import com.iqser.red.service.redaction.v1.model.Rectangle; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @Service public class RedactionLogConverterService { - public List convertAndSort(RedactionLog redactionLog, List legalBasisMappings) { + public List convertAndSort(RedactionLog redactionLog, List legalBasisMappings, Map mapOfEntityDisplayName) { List reportEntries = new ArrayList<>(); @@ -30,7 +30,7 @@ public class RedactionLogConverterService { if (entry.isRedacted()) { - if(entry.lastChangeIsRemoved()){ + if (entry.lastChangeIsRemoved()) { return; } @@ -42,11 +42,14 @@ public class RedactionLogConverterService { return; } - if(entry.isFalsePositive()){ + if (entry.isFalsePositive()) { return; } - if (entry.getManualChanges().size() != 0 && entry.getManualChanges().get(entry.getManualChanges().size() - 1).getManualRedactionType().equals(ManualRedactionType.ADD_LOCALLY) && entry.getManualChanges() + if (entry.getManualChanges().size() != 0 && entry.getManualChanges() + .get(entry.getManualChanges().size() - 1) + .getManualRedactionType() + .equals(ManualRedactionType.ADD_LOCALLY) && entry.getManualChanges() .get(entry.getManualChanges().size() - 1) .getAnnotationStatus() .equals(AnnotationStatus.DECLINED)) { @@ -58,8 +61,7 @@ public class RedactionLogConverterService { if (pages.isEmpty() || !pages.contains(position.getPage())) { pages.add(position.getPage()); - reportEntries.add(new ReportRedactionEntry(position.getPage(), position.getTopLeft() - .getX(), position.getTopLeft() + reportEntries.add(new ReportRedactionEntry(position.getPage(), position.getTopLeft().getX(), position.getTopLeft() .getY(), getSection(entry, position), entry.getLegalBasis() + " " + legalBasisMappings.stream() .filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis())) .findAny() @@ -68,8 +70,7 @@ public class RedactionLogConverterService { .filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis())) .findAny() .map(LegalBasis::getDescription) - .orElse(""), checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry - .getTextAfter()), entry.getValue())); + .orElse(""), checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry.getTextAfter()), entry.getValue(), mapOfEntityDisplayName.get(entry.getType()))); } } } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java index fd1ff84..c50c922 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java @@ -4,8 +4,9 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; -import java.util.Iterator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; @@ -13,13 +14,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage; import com.iqser.red.service.redaction.report.v1.api.model.ReportType; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; +import com.iqser.red.service.redaction.report.v1.server.client.DictionaryClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierClient; import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient; import com.iqser.red.service.redaction.report.v1.server.client.RedactionLogClient; @@ -30,9 +32,7 @@ import com.iqser.red.service.redaction.report.v1.server.model.MultiFileWorkbook; import com.iqser.red.service.redaction.report.v1.server.model.PlaceholderModel; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; -import com.iqser.red.service.redaction.v1.model.ManualChange; import com.iqser.red.service.redaction.v1.model.RedactionLog; -import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import io.micrometer.core.annotation.Timed; @@ -54,6 +54,7 @@ public class ReportGenerationService { private final RedactionLogClient redactionLogClient; private final ExcelReportGenerationService excelTemplateReportGenerationService; private final GeneratePlaceholderService generatePlaceholderService; + private final DictionaryClient dictionaryClient; @SneakyThrows @@ -110,20 +111,17 @@ public class ReportGenerationService { long start = System.currentTimeMillis(); - var fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds() - .get(j)); + var fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds().get(j)); generatePlaceholderService.resolveFileAttributeValues(fileStatus, placeholderModel); - List reportEntries = getReportEntries(reportMessage.getDossierId(), reportMessage.getFileIds() - .get(j), fileStatus.isExcluded()); + List reportEntries = getReportEntries(reportMessage.getDossierId(), reportMessage.getFileIds().get(j), fileStatus.isExcluded()); var isLastFile = j == reportMessage.getFileIds().size() - 1; for (MultiFileWorkbook multiFileWorkbook : multiFileWorkbooks) { if (excelModel == null) { - excelModel = excelTemplateReportGenerationService.calculateExcelModel(multiFileWorkbook.getReadWorkBook() - .getSheetAt(0)); + excelModel = excelTemplateReportGenerationService.calculateExcelModel(multiFileWorkbook.getReadWorkBook().getSheetAt(0)); } excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholderModel, multiFileWorkbook.getTemplateName(), multiFileWorkbook.getWriteWorkbook(), dossier.getDossierName(), fileStatus, excelModel, isLastFile); } @@ -139,8 +137,7 @@ public class ReportGenerationService { } long end = System.currentTimeMillis(); - log.info("Successfully processed {}/{} fileIds for downloadId {}, took {}", i, reportMessage.getFileIds() - .size(), reportMessage.getDownloadId(), end - start); + log.info("Successfully processed {}/{} fileIds for downloadId {}, took {}", i, reportMessage.getFileIds().size(), reportMessage.getDownloadId(), end - start); i++; } @@ -160,10 +157,8 @@ public class ReportGenerationService { } - private StoredFileInformation createReportFromTemplate(Dossier dossier, FileModel fileStatus, - PlaceholderModel placeholderModel, String templateName, - String downloadId, List reportEntries, - ReportTemplate reportTemplate) { + private StoredFileInformation createReportFromTemplate(Dossier dossier, FileModel fileStatus, PlaceholderModel placeholderModel, String templateName, String downloadId, + List reportEntries, ReportTemplate reportTemplate) { if (reportTemplate.getFileName().endsWith(".xlsx")) { byte[] excelTemplate = reportStorageService.getReportTemplate(reportTemplate.getStorageId()); @@ -204,15 +199,33 @@ public class ReportGenerationService { } RedactionLog redactionLog; + Map mapOfEntityDisplayName = new HashMap<>(); try { redactionLog = redactionLogClient.getRedactionLog(dossierId, fileId, new ArrayList<>(), true, false); - + mapOfEntityDisplayName = fillMapOfTypeAndEntityDisplayName(dossierId); } catch (StorageObjectDoesNotExist e) { return new ArrayList<>(); } var legalBasisMappings = redactionLog.getLegalBasis(); - return redactionLogConverterService.convertAndSort(redactionLog, legalBasisMappings); + return redactionLogConverterService.convertAndSort(redactionLog, legalBasisMappings, mapOfEntityDisplayName); + } + + + private Map fillMapOfTypeAndEntityDisplayName(String dossierId) { + + List typeList = new ArrayList<>(); + typeList.addAll(dictionaryClient.getAllTypesForDossier(dossierId)); + typeList.addAll(dictionaryClient.getAllTypesForDossierTemplate(dossierClient.getDossierById(dossierId, false, false).getDossierTemplateId())); + + Map mapOfEntityDisplayName = new HashMap<>(); + + for (var type : typeList) { + mapOfEntityDisplayName.put(type.getType(), type.getLabel()); + } + mapOfEntityDisplayName.put("manual", "Manual"); + + return mapOfEntityDisplayName; } } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java index a40a85d..c08aa95 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java @@ -1,35 +1,74 @@ package com.iqser.red.service.redaction.report.v1.server.service; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; -import com.iqser.red.service.redaction.report.v1.server.model.*; - -import io.micrometer.core.annotation.Timed; -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; - -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.util.Dimension2DDouble; -import org.apache.poi.util.Units; -import org.apache.poi.xwpf.usermodel.*; -import org.springframework.stereotype.Service; - -import javax.imageio.ImageIO; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.DOSSIER_NAME_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.EXCERPT_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FILE_NAME_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ENG; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ENG_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_GER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_GER_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.IUCLID_FUNCTION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PARAGRAPH_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_REASON_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_TEXT_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PAGE_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PARAGRAPH_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_VALUE_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.time.OffsetDateTime; -import java.util.*; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.*; +import javax.imageio.ImageIO; + +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.util.Dimension2DDouble; +import org.apache.poi.util.Units; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; +import com.iqser.red.service.redaction.report.v1.server.model.ColoredText; +import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder; +import com.iqser.red.service.redaction.report.v1.server.model.PlaceHolderFunctions; +import com.iqser.red.service.redaction.report.v1.server.model.PlaceholderInput; +import com.iqser.red.service.redaction.report.v1.server.model.PlaceholderModel; +import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; + +import io.micrometer.core.annotation.Timed; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; @Slf4j @Service @@ -40,9 +79,8 @@ public class WordReportGenerationService { @Timed("redactmanager_generateWordReport") - public XWPFDocument generateWordReport(List reportEntries, PlaceholderModel placeholderModel, - String reportTemplateName, XWPFDocument doc, FileModel fileModel, - Dossier dossier, boolean isLastFile) { + public XWPFDocument generateWordReport(List reportEntries, PlaceholderModel placeholderModel, String reportTemplateName, XWPFDocument doc, + FileModel fileModel, Dossier dossier, boolean isLastFile) { long start = System.currentTimeMillis(); @@ -55,7 +93,7 @@ public class WordReportGenerationService { XWPFTable table = getRedactionTable(doc); var placeholderFunctions = computePlaceholderPos(table, placeholderModel); - + addRedactionEntryRows(table, reportEntries, fileModel.getFilename(), placeholderModel, placeholderFunctions); replaceTextPlaceholders(doc, placeholderModel, dossier.getDossierName(), fileModel.getFilename(), table, reportEntries); @@ -105,8 +143,7 @@ public class WordReportGenerationService { } - private String getPlaceholderValue(String placeholder, String dossierName, String filename, - PlaceholderModel placeholderModel, + private String getPlaceholderValue(String placeholder, String dossierName, String filename, PlaceholderModel placeholderModel, List reportRedactionEntries) { if (placeholder.equals(FORMAT_DATE_ISO_PLACEHOLDER)) { @@ -143,8 +180,7 @@ public class WordReportGenerationService { } - private void replaceParagraphForImagePlaceholder(List paragraphs, - ImagePlaceholder imagePlaceholder) { + private void replaceParagraphForImagePlaceholder(List paragraphs, ImagePlaceholder imagePlaceholder) { for (XWPFParagraph p : paragraphs) { String paragraphText = p.getText(); @@ -168,8 +204,7 @@ public class WordReportGenerationService { @Timed("redactmanager_word-replaceTextPlaceholders") - public void replaceTextPlaceholders(XWPFDocument doc, PlaceholderModel placeholderModel, String dossierName, - String fileName, XWPFTable tableToSkip, + public void replaceTextPlaceholders(XWPFDocument doc, PlaceholderModel placeholderModel, String dossierName, String fileName, XWPFTable tableToSkip, List reportRedactionEntries) { Map placeHolderValueMap = new HashMap<>(); @@ -193,8 +228,7 @@ public class WordReportGenerationService { } - private void replacePlaceholderInParagraph(List paragraphs, - Map placeholderValueMap) { + private void replacePlaceholderInParagraph(List paragraphs, Map placeholderValueMap) { for (XWPFParagraph p : paragraphs) { String paragraphText = p.getText(); @@ -256,7 +290,7 @@ public class WordReportGenerationService { private boolean containsRedactionPlaceholder(String text) { - return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER) || text.contains(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER) || text.contains(SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER) || text.contains("{{") && text.contains("}}"); + return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER) || text.contains(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER) || text.contains(SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER) || text.contains(REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER) || text.contains("{{") && text.contains("}}"); } @@ -283,42 +317,35 @@ public class WordReportGenerationService { @Timed("redactmanager_word-addRedactionEntryRows") - private void addRedactionEntryRows(XWPFTable table, List reportEntries, String filename, - PlaceholderModel placeholderModel, PlaceHolderFunctions placeHolderFunctions) { + private void addRedactionEntryRows(XWPFTable table, List reportEntries, String filename, PlaceholderModel placeholderModel, + PlaceHolderFunctions placeHolderFunctions) { if (table == null) { return; } - if (placeHolderFunctions.getFoundPlaceHolder() - .contains(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER)) { + if (placeHolderFunctions.getFoundPlaceHolder().contains(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER)) { var redactionsPerJustification = getRedactionsPerJustification(reportEntries); for (Map.Entry> entry : redactionsPerJustification.entrySet()) { XWPFTableRow row = table.createRow(); - for (Map.Entry> entry1 : placeHolderFunctions.getFunctionPerPlaceHolder() - .entrySet()) { - setText(row.getCell(entry1.getKey()), entry1.getValue() - .apply(new PlaceholderInput(filename, null, placeholderModel, entry))); + for (Map.Entry> entry1 : placeHolderFunctions.getFunctionPerPlaceHolder().entrySet()) { + setText(row.getCell(entry1.getKey()), entry1.getValue().apply(new PlaceholderInput(filename, null, placeholderModel, entry))); } } } else { reportEntries.forEach(entry -> { XWPFTableRow row = table.createRow(); - for (Map.Entry> entry1 : placeHolderFunctions.getFunctionPerPlaceHolder() - .entrySet()) { - setText(row.getCell(entry1.getKey()), entry1.getValue() - .apply(new PlaceholderInput(filename, entry, placeholderModel, null))); + for (Map.Entry> entry1 : placeHolderFunctions.getFunctionPerPlaceHolder().entrySet()) { + setText(row.getCell(entry1.getKey()), entry1.getValue().apply(new PlaceholderInput(filename, entry, placeholderModel, null))); } }); } } - private Function getFunctionForPlaceHolder(String placeholder, - Set foundPlaceholders, - PlaceholderModel placeholderModel) { + private Function getFunctionForPlaceHolder(String placeholder, Set foundPlaceholders, PlaceholderModel placeholderModel) { if (placeholder.equals(FILE_NAME_PLACEHOLDER)) { foundPlaceholders.add(FILE_NAME_PLACEHOLDER); @@ -358,19 +385,16 @@ public class WordReportGenerationService { } if (placeholder.equals(REDACTION_VALUE_PLACEHOLDER)) { foundPlaceholders.add(REDACTION_VALUE_PLACEHOLDER); - return (input) -> input.getEntry().getValue() != null ? input.getEntry() - .getValue() - .replaceAll("\n", " ") - .replaceAll(" ", " ") : ""; + return (input) -> input.getEntry().getValue() != null ? input.getEntry().getValue().replaceAll("\n", " ").replaceAll(" ", " ") : ""; + } + if (placeholder.equals(REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER)) { + foundPlaceholders.add(REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER); + return (input) -> input.getEntry().getEntityDisplayName(); } if (placeholder.equals(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER)) { foundPlaceholders.add(SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER); - return (input) -> computePageRanges(input.getRedactionsPerJustificationEntry() - .getValue() - .stream() - .map(ReportRedactionEntry::getPage) - .collect(Collectors.toSet())); + return (input) -> computePageRanges(input.getRedactionsPerJustificationEntry().getValue().stream().map(ReportRedactionEntry::getPage).collect(Collectors.toSet())); } if (placeholder.equals(SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER)) { @@ -467,12 +491,9 @@ public class WordReportGenerationService { } - private Map> getRedactionsPerJustification( - List reportRedactionEntryList) { + private Map> getRedactionsPerJustification(List reportRedactionEntryList) { - return reportRedactionEntryList.stream() - .sorted(Comparator.comparing(ReportRedactionEntry::getPage)) - .collect(Collectors.groupingBy(ReportRedactionEntry::getJustification)); + return reportRedactionEntryList.stream().sorted(Comparator.comparing(ReportRedactionEntry::getPage)).collect(Collectors.groupingBy(ReportRedactionEntry::getJustification)); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/PlaceholderTest.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/PlaceholderTest.java index 3071870..7dd7407 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/PlaceholderTest.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/PlaceholderTest.java @@ -61,7 +61,7 @@ public class PlaceholderTest { // Assert Assert.assertNotNull(placeholders); - Assert.assertEquals(placeholders.size(), 16); + Assert.assertEquals(placeholders.size(), 17); } @Test diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java index 37cb5ba..58d7dce 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java @@ -1,11 +1,47 @@ package com.iqser.red.service.redaction.report.v1.server; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.DOSSIER_NAME_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FILE_NAME_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ENG_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_GER_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.IUCLID_FUNCTION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.utils.OsUtils.getTemporaryDirectory; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.io.IOUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.junit4.SpringRunner; + import com.amazonaws.services.s3.AmazonS3; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; +import com.iqser.red.service.redaction.report.v1.server.client.DictionaryClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; @@ -21,33 +57,8 @@ import com.iqser.red.service.redaction.report.v1.server.service.WordReportGenera import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.storage.commons.service.StorageService; + import lombok.SneakyThrows; -import org.apache.commons.io.IOUtils; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.core.io.ClassPathResource; -import org.springframework.test.context.junit4.SpringRunner; - -import java.io.FileOutputStream; -import java.util.*; - -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.DOSSIER_NAME_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FILE_NAME_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ENG_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_GER_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.IUCLID_FUNCTION_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER; -import static com.iqser.red.service.redaction.report.v1.server.utils.OsUtils.getTemporaryDirectory; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = RANDOM_PORT) @@ -92,14 +103,18 @@ public class RedactionReportIntegrationTest { @Autowired private GeneratePlaceholderService generatePlaceholderService; + @MockBean + private DictionaryClient dictionaryClient; + + @Test @SneakyThrows - public void testWordJustificationAppendixA1(){ + public void testWordJustificationAppendixA1() { RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); var wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx"); var imageResource = new ClassPathResource("files/exampleImage.jpg"); @@ -107,14 +122,7 @@ public class RedactionReportIntegrationTest { Dossier dossier = Dossier.builder().dossierName("dossierName").build(); FileModel fileModel = FileModel.builder().filename("filename").build(); - var placeholders = buildPlaceHolderModel( - Map.of("{{dossier.attribute.ActiveSubstance}}","Aktive Substanz \n Test Return", - "{{dossier.attribute.RapporteurMemberState}}","Reporter Status", - "{{dossier.attribute.Name}}","Dossier Name", - "{{dossier.attribute.Company}}","Firma", - "{{dossier.attribute.Date}}","2021-11-09T23:00:00.000Z"), - Map.of("{{file.attribute.placeholder}}", "Test"), - List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}",IOUtils.toByteArray(imageResource.getInputStream())))); + var placeholders = buildPlaceHolderModel(Map.of("{{dossier.attribute.ActiveSubstance}}", "Aktive Substanz \n Test Return", "{{dossier.attribute.RapporteurMemberState}}", "Reporter Status", "{{dossier.attribute.Name}}", "Dossier Name", "{{dossier.attribute.Company}}", "Firma", "{{dossier.attribute.Date}}", "2021-11-09T23:00:00.000Z"), Map.of("{{file.attribute.placeholder}}", "Test"), List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}", IOUtils.toByteArray(imageResource.getInputStream())))); XWPFDocument doc = new XWPFDocument(wordTemplateResource.getInputStream()); wordReportGenerationService.generateWordReport(reportEntries, placeholders, "test", doc, fileModel, dossier, true); @@ -124,14 +132,15 @@ public class RedactionReportIntegrationTest { } } + @Test @SneakyThrows - public void testWordJustificationAppendixA2(){ + public void testWordJustificationAppendixA2() { RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); var wordTemplateResource = new ClassPathResource("templates/Justification Appendix A2.docx"); var imageResource = new ClassPathResource("files/exampleImage.jpg"); @@ -139,14 +148,7 @@ public class RedactionReportIntegrationTest { Dossier dossier = Dossier.builder().dossierName("dossierName").build(); FileModel fileModel = FileModel.builder().filename("filename").build(); - var placeholders = buildPlaceHolderModel( - Map.of("{{dossier.attribute.ActiveSubstance}}","Aktive Substanz \n Test Return", - "{{dossier.attribute.RapporteurMemberState}}","Reporter Status", - "{{dossier.attribute.Name}}","Dossier Name", - "{{dossier.attribute.Company}}","Firma", - "{{dossier.attribute.Date}}","2021-11-09T23:00:00.000Z"), - Map.of("{{file.attribute.placeholder}}", "Test"), - List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}",IOUtils.toByteArray(imageResource.getInputStream())))); + var placeholders = buildPlaceHolderModel(Map.of("{{dossier.attribute.ActiveSubstance}}", "Aktive Substanz \n Test Return", "{{dossier.attribute.RapporteurMemberState}}", "Reporter Status", "{{dossier.attribute.Name}}", "Dossier Name", "{{dossier.attribute.Company}}", "Firma", "{{dossier.attribute.Date}}", "2021-11-09T23:00:00.000Z"), Map.of("{{file.attribute.placeholder}}", "Test"), List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}", IOUtils.toByteArray(imageResource.getInputStream())))); XWPFDocument doc = new XWPFDocument(wordTemplateResource.getInputStream()); wordReportGenerationService.generateWordReport(reportEntries, placeholders, "test", doc, fileModel, dossier, true); @@ -156,14 +158,15 @@ public class RedactionReportIntegrationTest { } } + @Test @SneakyThrows public void testWordIUCLIDFile() { - RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); FileModel fileStatus = FileModel.builder().filename("filename").build(); Dossier dossier = Dossier.builder().dossierName("dossierName").build(); @@ -181,14 +184,15 @@ public class RedactionReportIntegrationTest { } } + @Test @SneakyThrows public void testWordSeedReportSingleFile() { - RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); FileModel fileStatus = FileModel.builder().filename("filename").build(); Dossier dossier = Dossier.builder().dossierName("dossierName").build(); @@ -211,13 +215,13 @@ public class RedactionReportIntegrationTest { @SneakyThrows public void testWordSeedReportMultiFile() { - RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); RedactionLog redactionLogSecondFile = objectMapper.readValue(new ClassPathResource("files/excelReportRedactionLog.json").getInputStream(), RedactionLog.class); - List reportEntriesSecondFile = redactionLogConverterService.convertAndSort(redactionLogSecondFile, legalBasisMapping); + List reportEntriesSecondFile = redactionLogConverterService.convertAndSort(redactionLogSecondFile, legalBasisMapping, new HashMap<>()); FileModel fileModelSecondFile = FileModel.builder().filename("secondFile").build(); FileModel fileStatus = FileModel.builder().filename("filename").build(); @@ -238,15 +242,14 @@ public class RedactionReportIntegrationTest { } - @Test @SneakyThrows - public void testWord6464JustificationAppendix(){ + public void testWord6464JustificationAppendix() { RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, new HashMap<>()); var wordTemplateResource = new ClassPathResource("templates/6464 appendix_b EFSA dRAR justification.docx"); var imageResource = new ClassPathResource("files/exampleImage.jpg"); @@ -254,14 +257,7 @@ public class RedactionReportIntegrationTest { Dossier dossier = Dossier.builder().dossierName("dossierName").build(); FileModel fileModel = FileModel.builder().filename("filename").build(); - var placeholders = buildPlaceHolderModel( - Map.of("{{dossier.attribute.ActiveSubstance}}","Aktive Substanz \n Test Return", - "{{dossier.attribute.RapporteurMemberState}}","Reporter Status", - "{{dossier.attribute.Name}}","Dossier Name", - "{{dossier.attribute.Company}}","Firma", - "{{dossier.attribute.Date}}","2021-11-09T23:00:00.000Z"), - Map.of("{{file.attribute.placeholder}}", "Test"), - List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}",IOUtils.toByteArray(imageResource.getInputStream())))); + var placeholders = buildPlaceHolderModel(Map.of("{{dossier.attribute.ActiveSubstance}}", "Aktive Substanz \n Test Return", "{{dossier.attribute.RapporteurMemberState}}", "Reporter Status", "{{dossier.attribute.Name}}", "Dossier Name", "{{dossier.attribute.Company}}", "Firma", "{{dossier.attribute.Date}}", "2021-11-09T23:00:00.000Z"), Map.of("{{file.attribute.placeholder}}", "Test"), List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}", IOUtils.toByteArray(imageResource.getInputStream())))); XWPFDocument doc = new XWPFDocument(wordTemplateResource.getInputStream()); wordReportGenerationService.generateWordReport(reportEntries, placeholders, "test", doc, fileModel, dossier, true); @@ -274,11 +270,13 @@ public class RedactionReportIntegrationTest { @Test @SneakyThrows - public void testExcelTemplateReportGenerationSingleFile() { + public void testExcelTemplateReportGenerationSingleFile() { - RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLogWithManualRedactions.json").getInputStream(), RedactionLog.class); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + Map mapOfEntityDisplayName = createEntityDisplayNames(redactionLog); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, mapOfEntityDisplayName); FileModel fileModel = FileModel.builder().filename("filename").build(); @@ -288,10 +286,9 @@ public class RedactionReportIntegrationTest { XSSFWorkbook readWorkbook = new XSSFWorkbook(templateResource.getInputStream()); var excelModel = excelTemplateReportGenerationService.calculateExcelModel(readWorkbook.getSheetAt(0)); - SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); + SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); writeWorkbook.createSheet("Sheet1"); - excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook, "dossierName" ,fileModel, excelModel, true); - + excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook, "dossierName", fileModel, excelModel, true); byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(writeWorkbook); try (FileOutputStream fileOutputStream = new FileOutputStream(getTemporaryDirectory() + "/Excel Report_justification.xlsx")) { @@ -300,14 +297,15 @@ public class RedactionReportIntegrationTest { } - @Test @SneakyThrows - public void testExcelTemplateReportGenerationMultiFile() { + public void testExcelTemplateReportGenerationMultiFile() { RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + Map mapOfEntityDisplayName = createEntityDisplayNames(redactionLog); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, mapOfEntityDisplayName); FileModel fileModel = FileModel.builder().filename("filename").build(); @@ -317,15 +315,14 @@ public class RedactionReportIntegrationTest { XSSFWorkbook readWorkbook = new XSSFWorkbook(templateResource.getInputStream()); var excelModel = excelTemplateReportGenerationService.calculateExcelModel(readWorkbook.getSheetAt(0)); - SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); + SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); writeWorkbook.createSheet("Sheet1"); - excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook, "dossierName" ,fileModel, excelModel, false); + excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook, "dossierName", fileModel, excelModel, false); RedactionLog redactionLogSecondFile = objectMapper.readValue(new ClassPathResource("files/excelReportRedactionLog.json").getInputStream(), RedactionLog.class); - List reportEntriesSecondFile = redactionLogConverterService.convertAndSort(redactionLogSecondFile, legalBasisMapping); + List reportEntriesSecondFile = redactionLogConverterService.convertAndSort(redactionLogSecondFile, legalBasisMapping, mapOfEntityDisplayName); FileModel fileModelSecondFile = FileModel.builder().filename("secondFile").build(); - excelTemplateReportGenerationService.generateExcelReport(reportEntriesSecondFile, placeholders, "test", writeWorkbook,"dossierName" , fileModelSecondFile, excelModel, true); - + excelTemplateReportGenerationService.generateExcelReport(reportEntriesSecondFile, placeholders, "test", writeWorkbook, "dossierName", fileModelSecondFile, excelModel, true); byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(writeWorkbook); try (FileOutputStream fileOutputStream = new FileOutputStream(getTemporaryDirectory() + "/Excel Report_multifile.xlsx")) { @@ -336,25 +333,26 @@ public class RedactionReportIntegrationTest { @Test @SneakyThrows - public void testExcelPlaceholders() { + public void testExcelPlaceholders() { RedactionLog redactionLog = objectMapper.readValue(new ClassPathResource("files/redactionLog.json").getInputStream(), RedactionLog.class); - List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() {}); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); + List legalBasisMapping = objectMapper.readValue(new ClassPathResource("files/legalBasisMapping.json").getInputStream(), new TypeReference<>() { + }); + Map mapOfEntityDisplayName = createEntityDisplayNames(redactionLog); + List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping, mapOfEntityDisplayName); var imageResource = new ClassPathResource("files/exampleImage.jpg"); FileModel fileModel = FileModel.builder().filename("filename").build(); ClassPathResource templateResource = new ClassPathResource("templates/Excel Report_PlaceholderTest.xlsx"); - var placeholders = buildPlaceHolderModel(Map.of("{{dossier_attribute.test1}}", "replaced_dossier_test1"), Map.of("{{file_attribute.test1}}", "replaced_file_test1", "{{file_attribute.test2}}", "replaced_file_test2"), List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}",IOUtils.toByteArray(imageResource.getInputStream())))); + var placeholders = buildPlaceHolderModel(Map.of("{{dossier_attribute.test1}}", "replaced_dossier_test1"), Map.of("{{file_attribute.test1}}", "replaced_file_test1", "{{file_attribute.test2}}", "replaced_file_test2"), List.of(new ImagePlaceholder("{{dossier.attribute.Signature}}", IOUtils.toByteArray(imageResource.getInputStream())))); XSSFWorkbook readWorkbook = new XSSFWorkbook(templateResource.getInputStream()); var excelModel = excelTemplateReportGenerationService.calculateExcelModel(readWorkbook.getSheetAt(0)); - SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); + SXSSFWorkbook writeWorkbook = new SXSSFWorkbook(); writeWorkbook.createSheet("Sheet1"); - excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook,"dossierName" , fileModel, excelModel, true); - + excelTemplateReportGenerationService.generateExcelReport(reportEntries, placeholders, "test", writeWorkbook, "dossierName", fileModel, excelModel, true); byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(writeWorkbook); try (FileOutputStream fileOutputStream = new FileOutputStream(getTemporaryDirectory() + "/PlaceholderTest_justification.xlsx")) { @@ -363,13 +361,37 @@ public class RedactionReportIntegrationTest { } + private Map createEntityDisplayNames(RedactionLog redactionLog) { + + Type t1 = new Type(); + t1.setLabel("Type 1"); + Type t2 = new Type(); + t2.setLabel("Type 2"); + Type t3 = new Type(); + t3.setLabel("Type 3"); + List ednList = new ArrayList<>(Arrays.asList(t1, t2, t3)); + Mockito.when(dictionaryClient.getAllTypesForDossier(Mockito.anyString())).thenReturn(ednList); + Mockito.when(dictionaryClient.getAllTypesForDossierTemplate(Mockito.any())).thenReturn(ednList); + + Map entityDisplayNames = new HashMap<>(); + for (var entry : redactionLog.getRedactionLogEntry()) { + if (entry.getType().equals("manual")) { + entityDisplayNames.put(entry.getType(), "Manual"); + } else { + entityDisplayNames.put(entry.getType(), ednList.get((int) Math.floor(Math.random() * ednList.size())).getLabel()); + } + } + + return entityDisplayNames; + } + private PlaceholderModel buildPlaceHolderModel(Map dossierAttributes, Map fileAttributes, List imagePlaceholders) { - private PlaceholderModel buildPlaceHolderModel(Map dossierAttributes, Map fileAttributes, List imagePlaceholders){ var defaultPlaceHolder = new HashSet(Set.of(FILE_NAME_PLACEHOLDER, FORMAT_DATE_ISO_PLACEHOLDER, FORMAT_DATE_GER_PLACEHOLDER, FORMAT_DATE_ENG_PLACEHOLDER, FORMAT_TIME_ISO_PLACEHOLDER, DOSSIER_NAME_PLACEHOLDER, IUCLID_FUNCTION_PLACEHOLDER, SEEDS_FUNCTION_REDACTION_GROUPED_BY_JUSTIFICATION_PAGES_PLACEHOLDER, SEEDS_FUNCTION_JUSTIFICATION_PLACEHOLDER)); defaultPlaceHolder.addAll(dossierAttributes.keySet()); defaultPlaceHolder.addAll(fileAttributes.keySet()); return new PlaceholderModel(defaultPlaceHolder, imagePlaceholders, dossierAttributes, null, fileAttributes); } + } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/files/redactionLogWithManualRedactions.json b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/files/redactionLogWithManualRedactions.json new file mode 100644 index 0000000..d1ebf6e --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/files/redactionLogWithManualRedactions.json @@ -0,0 +1,6361 @@ +{ + "analysisVersion": 1, + "analysisNumber": 8, + "redactionLogEntry": [ + { + "id": "31bea2d45fb9c5faf9da4229f8b554d2", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Footer", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 72.84, + "y": 37.980286 + }, + "width": 34.71469, + "height": 10.452841, + "page": 1 + } + ], + "sectionNumber": 48, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004147Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "027f25f30ec9c7f2715572965879f9c6", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Footer", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 72.84, + "y": 37.980286 + }, + "width": 34.71469, + "height": 10.452841, + "page": 2 + } + ], + "sectionNumber": 49, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00416Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "add190891c21af9fde83a64b028d4575", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Footer", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 72.84, + "y": 37.980286 + }, + "width": 34.71469, + "height": 10.452841, + "page": 3 + } + ], + "sectionNumber": 50, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004165Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "6da873dbc4ffc97580a76a69cd8ef596", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.85 + }, + "width": 8.452835, + "height": 33.273823, + "page": 4 + } + ], + "sectionNumber": 7, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004178Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "c0b1fd5f231bd4a1e780019817d6cbe4", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8305 + }, + "width": 8.45282, + "height": 33.277798, + "page": 4 + } + ], + "sectionNumber": 52, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00419Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "056bd279e2ed8989a9cd1a6325f3d0d1", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 162.83319 + }, + "width": 9.591164, + "height": 32.9027, + "page": 4 + } + ], + "sectionNumber": 7, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 11, + "endOffset": 17, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004198Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "95242fcfc2c8901568e4c555096de0c6", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 162.83319 + }, + "width": 9.591164, + "height": 32.9027, + "page": 5 + } + ], + "sectionNumber": 12, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 11, + "endOffset": 17, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004223Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "a6c3f290e8ad4f74977b6f8e104e3c95", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8305 + }, + "width": 8.45282, + "height": 33.277798, + "page": 5 + } + ], + "sectionNumber": 53, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004265Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "25b823f412b5235d1abcec5ddb277c06", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.85 + }, + "width": 8.452835, + "height": 33.273823, + "page": 5 + } + ], + "sectionNumber": 12, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004278Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "c2e9fcbc9887bdba979d012ba8a7d8c8", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 162.83319 + }, + "width": 9.591164, + "height": 32.9027, + "page": 6 + } + ], + "sectionNumber": 18, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 11, + "endOffset": 17, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004281Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "138c5fb156b06fe508f3036de2aff179", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8305 + }, + "width": 8.45282, + "height": 33.277798, + "page": 6 + } + ], + "sectionNumber": 54, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004286Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "7c5e433eb9e598fb1e5b79e83c92f830", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 292.2385, + "y": 75.3515 + }, + "width": 8.981506, + "height": 33.540695, + "page": 6 + } + ], + "sectionNumber": 38, + "textBefore": "active substance *", + "textAfter": " requests data", + "comments": null, + "startOffset": 1357, + "endOffset": 1365, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004289Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "cd07e6af4bb4112b3bec81a654f3a101", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 278.65378, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 6 + } + ], + "sectionNumber": 21, + "textBefore": "to Document J ", + "textAfter": " File No", + "comments": null, + "startOffset": 91, + "endOffset": 99, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004293Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "ad4b72e4bced0368c75ea8d1fd380268", + "type": "CBI_author", + "value": "Green R.", + "reason": "Author found", + "matchedRule": 10, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": true, + "section": "Table in: Version history1", + "color": [ + 0.5764706, + 0.59607846, + 0.627451 + ], + "positions": [ + { + "topLeft": { + "x": 255.67393, + "y": 162.84514 + }, + "width": 9.546066, + "height": 37.693287, + "page": 6 + } + ], + "sectionNumber": 21, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 23, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004297Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "130c665232bed7233fa0383dfbd767e3", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 292.2385, + "y": 644.72015 + }, + "width": 8.981506, + "height": 33.48565, + "page": 6 + } + ], + "sectionNumber": 38, + "textBefore": "providing access to ", + "textAfter": " specific know-how", + "comments": null, + "startOffset": 1513, + "endOffset": 1521, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004301Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "973b370e91ef8a724c48c8c2cd3ab2ee", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 292.2385, + "y": 442.6209 + }, + "width": 8.981506, + "height": 33.4858, + "page": 6 + } + ], + "sectionNumber": 38, + "textBefore": "information might undermine ", + "textAfter": "’s commercial interests", + "comments": null, + "startOffset": 1458, + "endOffset": 1466, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004305Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "f27fa6b668a537cb0b07e54057e99363", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.85 + }, + "width": 8.452835, + "height": 33.273823, + "page": 6 + } + ], + "sectionNumber": 18, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00431Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "b2ee19c22aa1c774cf77f2f59ca34605", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 239.6538, + "y": 302.87067 + }, + "width": 9.546066, + "height": 36.80248, + "page": 6 + } + ], + "sectionNumber": 20, + "textBefore": "to Document J ", + "textAfter": " File No", + "comments": null, + "startOffset": 102, + "endOffset": 110, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004314Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0b8a40bc9ec7fd3e013cf9e6d675f653", + "type": "CBI_author", + "value": "Akkan Z., Botham J.", + "reason": "Author found", + "matchedRule": 10, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": true, + "section": "Table in: Version history1", + "color": [ + 0.5764706, + 0.59607846, + 0.627451 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 162.85521 + }, + "width": 9.546066, + "height": 84.784195, + "page": 6 + } + ], + "sectionNumber": 20, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 34, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004318Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "2da7c08032c188d2dd67680a1cee5e10", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.85 + }, + "width": 8.452835, + "height": 33.273823, + "page": 7 + } + ], + "sectionNumber": 23, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004323Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "e416df26002a9a183e2347af355a4d99", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 239.6538, + "y": 302.87067 + }, + "width": 9.546066, + "height": 36.80248, + "page": 7 + } + ], + "sectionNumber": 25, + "textBefore": "to Document J ", + "textAfter": " File No", + "comments": null, + "startOffset": 102, + "endOffset": 110, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00433Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "d0c809210aca7d17b4bddc0a34cc85b9", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 506.1739, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 7 + } + ], + "sectionNumber": 28, + "textBefore": "to Document J ", + "textAfter": " File No", + "comments": null, + "startOffset": 91, + "endOffset": 99, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004346Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "887486b5bedf36342102ed2d47372cb8", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 63.088833, + "y": 161.68283 + }, + "width": 9.59116, + "height": 32.884663, + "page": 7 + } + ], + "sectionNumber": 38, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 1627, + "endOffset": 1633, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00435Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "7f3a197df386b926f782f6b84fd95393", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8305 + }, + "width": 8.45282, + "height": 33.277798, + "page": 7 + } + ], + "sectionNumber": 55, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004359Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "fe03318f9e777ecbe736a7ef247bd4eb", + "type": "CBI_author", + "value": "Green R.", + "reason": "Author found", + "matchedRule": 10, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": true, + "section": "Table in: Version history1", + "color": [ + 0.5764706, + 0.59607846, + 0.627451 + ], + "positions": [ + { + "topLeft": { + "x": 483.1339, + "y": 72.8305 + }, + "width": 9.546082, + "height": 37.693233, + "page": 7 + } + ], + "sectionNumber": 28, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004367Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "7accc28dec26002a7e4c966a1df2e2c9", + "type": "CBI_author", + "value": "Akkan Z., Botham J.", + "reason": "Author found", + "matchedRule": 10, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": true, + "section": "Table in: Version history1", + "color": [ + 0.5764706, + 0.59607846, + 0.627451 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 72.8305 + }, + "width": 9.546066, + "height": 84.784256, + "page": 7 + } + ], + "sectionNumber": 25, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 19, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004371Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "c463371dfec847e0be02170c90a1d210", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 72.83055 + }, + "width": 9.591164, + "height": 32.902676, + "page": 7 + } + ], + "sectionNumber": 23, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 6, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004383Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "cb4a8de93dde53e609db55274b339101", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8305 + }, + "width": 8.45282, + "height": 33.277798, + "page": 8 + } + ], + "sectionNumber": 56, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004413Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "6045a9c0a9a3f846ece4a5d46d39b9cb", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 63.088833, + "y": 161.68283 + }, + "width": 9.59116, + "height": 32.884663, + "page": 8 + } + ], + "sectionNumber": 38, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 1746, + "endOffset": 1752, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004421Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "b91e1e009e67992f5af9b92a64b89bd0", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.85 + }, + "width": 8.452835, + "height": 33.273823, + "page": 8 + } + ], + "sectionNumber": 30, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004441Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "6b36b63f3e795e4be3451ef6140d75a4", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 503.6785, + "y": 644.72015 + }, + "width": 8.981537, + "height": 33.48565, + "page": 8 + } + ], + "sectionNumber": 38, + "textBefore": "providing access to ", + "textAfter": " specific know-how", + "comments": null, + "startOffset": 2003, + "endOffset": 2011, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004446Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "9483f149094a2144d296b878323091c7", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 503.6785, + "y": 442.6209 + }, + "width": 8.981537, + "height": 33.4858, + "page": 8 + } + ], + "sectionNumber": 38, + "textBefore": "information might undermine ", + "textAfter": "’s commercial interests", + "comments": null, + "startOffset": 1948, + "endOffset": 1956, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004454Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "f9c90ee9ad493687a5f77c470fd38244", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 72.83055 + }, + "width": 9.591164, + "height": 32.902676, + "page": 8 + } + ], + "sectionNumber": 30, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 6, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004462Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "6e94d13bc227448a2969ab716de645c6", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 503.6785, + "y": 75.3515 + }, + "width": 8.981537, + "height": 33.540695, + "page": 8 + } + ], + "sectionNumber": 38, + "textBefore": "active substance *", + "textAfter": " requests data", + "comments": null, + "startOffset": 1847, + "endOffset": 1855, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004467Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "61a93c4f0b061a3a6587007850af6312", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 63.088833, + "y": 428.5304 + }, + "width": 9.59116, + "height": 32.94782, + "page": 9 + } + ], + "sectionNumber": 38, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 2171, + "endOffset": 2177, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004471Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "34cce736b55c29df91e5e6431f0ae144", + "type": "hint_only", + "value": "author", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.98039216, + 0.59607846, + 0.96862745 + ], + "positions": [ + { + "topLeft": { + "x": 113.60885, + "y": 72.89055 + }, + "width": 9.591164, + "height": 32.902676, + "page": 9 + } + ], + "sectionNumber": 36, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 6, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004475Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "81ff28b1adc16ba0d0e80cbbb5c4cfcc", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 145.0472, + "y": 727.91 + }, + "width": 8.452835, + "height": 33.273823, + "page": 9 + } + ], + "sectionNumber": 36, + "textBefore": "Owner (SYN = ", + "textAfter": null, + "comments": null, + "startOffset": 230, + "endOffset": 238, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004479Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "80b630b45ce84dfbab22fcf0022f97b8", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Address found for non vertebrate study", + "matchedRule": 3, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 548.96716, + "y": 72.8905 + }, + "width": 8.45282, + "height": 33.277805, + "page": 9 + } + ], + "sectionNumber": 57, + "textBefore": null, + "textAfter": " – 6", + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004483Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "ad7de438b765608e67a309c5d05c2de4", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 405.19345, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 8 + } + ], + "sectionNumber": 33, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 313, + "endOffset": 321, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004437Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16809Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "4ef6f4f5d96167e7c415b3660943c0ec" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "c9e1227299661e20884ca80c6d51a9bb", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 244.2, + "y": 528.6 + }, + "width": 107.66322, + "height": 17.14884, + "page": 1 + } + ], + "sectionNumber": 1, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 10, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169303Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "daa3a5d32e0d9fe5d3c27c29d6363f15", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 444.1939, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.816517, + "page": 8 + } + ], + "sectionNumber": 34, + "textBefore": "Reverse Mutation Assay ", + "textAfter": " Harlan Cytotest", + "comments": null, + "startOffset": 114, + "endOffset": 122, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004433Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168088Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "59fd618870d65b30dc0e44afbb6e045a" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "8ad7d05b079a4d4161ca1d6cf17bc42d", + "type": "CBI_address", + "value": "BSL Bioservice Scientific, Planegg, Germany", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 370.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 183.00133, + "page": 5 + } + ], + "sectionNumber": 15, + "textBefore": "Phototoxicity Test Syngenta ", + "textAfter": ", 132889 GLP,", + "comments": null, + "startOffset": 100, + "endOffset": 143, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.00424Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168004Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "37b3cd447c08df7067172f21ec34b417" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "b862e7498dbcb0be52da4d4dc4adcc21", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 9 + } + ], + "sectionNumber": 47, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169309Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "e735108961cf0c939d7783a4b7aaf3e4", + "type": "CBI_address", + "value": "CTL", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 297.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 16.795551, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": "Cheshire, United Kingdom, ", + "textAfter": "/UR0828/REG/REP GLP, not", + "comments": null, + "startOffset": 230, + "endOffset": 233, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004215Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16799Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "53f1747bf381e9ffb1684ea4d3545227" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "4ef6f4f5d96167e7c415b3660943c0ec", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 301.6939, + "y": 302.90775 + }, + "width": 9.546082, + "height": 45.137135, + "page": 8 + } + ], + "sectionNumber": 33, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169314Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "d343158d4da4c5a66ab6a1aca99e357a", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 409.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 151.51546, + "page": 7 + }, + { + "topLeft": { + "x": 421.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 7 + } + ], + "sectionNumber": 27, + "textBefore": "In The Rat ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 143, + "endOffset": 190, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004326Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168033Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "60b3e8af894fa699729470ddc9549931" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "ac1a31180df9cdb230fa63dcf296c181", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 262.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 151.51546, + "page": 5 + }, + { + "topLeft": { + "x": 274.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 5 + } + ], + "sectionNumber": 14, + "textBefore": "In The Mouse ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 172, + "endOffset": 219, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004249Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16801Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "fd829a4f1bcf27c7f7281ad0bfa0ada7" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "a3aeceed183a3adf602e5c205edba115", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 467.17346, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 7 + } + ], + "sectionNumber": 27, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 280, + "endOffset": 288, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004379Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168058Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "60b3e8af894fa699729470ddc9549931" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "dda25a8dfafb51e0de6bbbd17b0a4e6c", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 359.17346, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 268, + "endOffset": 276, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004355Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168046Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "1af8a7ab10ce29da60d01273febb75f1" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "281c7dfaf11653b4258ecdc10d39ac8a", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 6 + } + ], + "sectionNumber": 44, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169317Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "60b3e8af894fa699729470ddc9549931", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 375.1939, + "y": 302.7855 + }, + "width": 9.546082, + "height": 45.14916, + "page": 7 + } + ], + "sectionNumber": 27, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 32, + "endOffset": 42, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.16932Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "1af8a7ab10ce29da60d01273febb75f1", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 255.67393, + "y": 302.96387 + }, + "width": 9.546066, + "height": 45.113087, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 31, + "endOffset": 41, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169322Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "cc7bfa5db09510f3bfdf3264850de5d0", + "type": "CBI_author", + "value": "Sokolowski A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 421.15393, + "y": 72.8305 + }, + "width": 9.546082, + "height": 60.994762, + "page": 8 + } + ], + "sectionNumber": 34, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 13, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004404Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168073Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "59fd618870d65b30dc0e44afbb6e045a" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "12ee7335488d53572e1e6ab1e9cca5e6", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 285.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 5 + }, + { + "topLeft": { + "x": 297.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.29225, + "page": 5 + } + ], + "sectionNumber": 14, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", UM0827-REG GLP,", + "comments": null, + "startOffset": 220, + "endOffset": 281, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004269Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168024Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "fd829a4f1bcf27c7f7281ad0bfa0ada7" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "94dffac53f755299bc128849f89a0b41", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 277.80017, + "y": 794.64014 + }, + "width": 40.52658, + "height": 10.452841, + "page": 1 + } + ], + "sectionNumber": 39, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169325Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0fa78febbd29b1216ba4d2bfee573a08", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 285.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 8 + } + ], + "sectionNumber": 32, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 171, + "endOffset": 179, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004417Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168078Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "971cc761df560e8cdb8572c869e1dd27" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "065982563bc0e4b788010f1dd894ac1c", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 432.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 7 + }, + { + "topLeft": { + "x": 444.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.3022, + "page": 7 + } + ], + "sectionNumber": 27, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", UR0836 GLP,", + "comments": null, + "startOffset": 191, + "endOffset": 252, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004387Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168062Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "60b3e8af894fa699729470ddc9549931" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "30008eeffb3888bff1e887f86759a9ea", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 421.15393, + "y": 302.87173 + }, + "width": 9.546082, + "height": 45.12206, + "page": 5 + } + ], + "sectionNumber": 16, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 34, + "endOffset": 44, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169328Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "6ba136a01991cdae9216389c381b9379", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 490.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 8 + } + ], + "sectionNumber": 34, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 208, + "endOffset": 216, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004408Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168075Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "59fd618870d65b30dc0e44afbb6e045a" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "103854abe16f037702620eef2ba7d7c3", + "type": "CBI_address", + "value": "CTL", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 336.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 16.795551, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": "Cheshire, United Kingdom, ", + "textAfter": "/UR0828/REG/REP GLP, not", + "comments": null, + "startOffset": 230, + "endOffset": 233, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004339Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16804Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "1af8a7ab10ce29da60d01273febb75f1" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "f5b9821166e3bdcf2fa9f87a629c210a", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 320.17346, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 268, + "endOffset": 276, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004169Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167939Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "53f1747bf381e9ffb1684ea4d3545227" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "37b3cd447c08df7067172f21ec34b417", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 336.1939, + "y": 302.87268 + }, + "width": 9.546082, + "height": 45.1552, + "page": 5 + } + ], + "sectionNumber": 15, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 32, + "endOffset": 42, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169331Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "5ecaa100b59921a7fbc2bb1046d67c48", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 239.6538, + "y": 302.87067 + }, + "width": 9.546066, + "height": 36.816517, + "page": 8 + } + ], + "sectionNumber": 32, + "textBefore": "NRU Phototoxicity Test ", + "textAfter": " BSL Bioservice", + "comments": null, + "startOffset": 91, + "endOffset": 99, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004449Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168094Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "971cc761df560e8cdb8572c869e1dd27" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0bdaaf574d56dddc199ce005ee73e395", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 313.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 7 + }, + { + "topLeft": { + "x": 324.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.354324, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", CTL/UR0828/REG/REP GLP,", + "comments": null, + "startOffset": 167, + "endOffset": 228, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004363Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168049Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "1af8a7ab10ce29da60d01273febb75f1" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "a9ccea15b3c36a341646242c87bc92d2", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 7 + } + ], + "sectionNumber": 45, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169334Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "53f1747bf381e9ffb1684ea4d3545227", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 302.96384 + }, + "width": 9.546066, + "height": 45.113087, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 31, + "endOffset": 41, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169336Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "b1ff1bbcec75615c3bdaf83293b8b978", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 393.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 4 + }, + { + "topLeft": { + "x": 405.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.3022, + "page": 4 + } + ], + "sectionNumber": 10, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", UR0836 GLP,", + "comments": null, + "startOffset": 191, + "endOffset": 252, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004211Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167987Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "5b875ba9548d3fb2c2dbfa40de899d89" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "a83c2773c60a20db19b6d51d6710a461", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 290.17377, + "y": 302.87067 + }, + "width": 9.546082, + "height": 151.51546, + "page": 7 + }, + { + "topLeft": { + "x": 301.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": "In The Rat ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 119, + "endOffset": 166, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004375Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168056Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "1af8a7ab10ce29da60d01273febb75f1" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0f533e9ebb5f7c7f7ea28947861e5b4e", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 320.17346, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 5 + } + ], + "sectionNumber": 14, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 313, + "endOffset": 321, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004219Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167992Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "fd829a4f1bcf27c7f7281ad0bfa0ada7" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "e7e801b07f753eea923c5dfe0ff4f789", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 444.1939, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.816517, + "page": 5 + } + ], + "sectionNumber": 16, + "textBefore": "Reverse Mutation Assay ", + "textAfter": " Harlan Cytotest", + "comments": null, + "startOffset": 114, + "endOffset": 122, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004253Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168014Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "30008eeffb3888bff1e887f86759a9ea" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "ebc538f209553b4b54b98394ccfc0aab", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 251.17378, + "y": 302.87067 + }, + "width": 9.546066, + "height": 151.51546, + "page": 4 + }, + { + "topLeft": { + "x": 262.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": "In The Rat ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 119, + "endOffset": 166, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004182Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16797Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "53f1747bf381e9ffb1684ea4d3545227" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0ab91d5dccf9a5982cb66940b95b29d9", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 274.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 4 + }, + { + "topLeft": { + "x": 285.6736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.354324, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", CTL/UR0828/REG/REP GLP,", + "comments": null, + "startOffset": 167, + "endOffset": 228, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004186Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167973Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "53f1747bf381e9ffb1684ea4d3545227" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "29dbe3d4414315f52493400ecab2a0be", + "type": "CBI_author", + "value": "Lehmeier D.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 72.8305 + }, + "width": 9.546066, + "height": 52.013836, + "page": 8 + } + ], + "sectionNumber": 32, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 11, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004399Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16807Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "971cc761df560e8cdb8572c869e1dd27" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "5982843c6d61291d7135612c1dd4c392", + "type": "CBI_author", + "value": "Duerden A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 162.83514 + }, + "width": 9.546066, + "height": 48.222248, + "page": 4 + } + ], + "sectionNumber": 9, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 25, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004173Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167965Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "53f1747bf381e9ffb1684ea4d3545227" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "a61468e54a8ba4631896d1dfac5b0c27", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 5 + } + ], + "sectionNumber": 43, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169341Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "41d44ad6cc1f126f41c25b3b32eb9b9b", + "type": "CBI_author", + "value": "Smith A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 162.84319 + }, + "width": 9.546066, + "height": 37.66419, + "page": 5 + } + ], + "sectionNumber": 14, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 23, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004273Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168026Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "fd829a4f1bcf27c7f7281ad0bfa0ada7" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "c8af0ff66bf6429702c8df4144c85edf", + "type": "CBI_address", + "value": "Harlan Cytotest Cell Research GmbH (Harlan CCR), Germany", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 455.65378, + "y": 302.87067 + }, + "width": 9.546082, + "height": 183.19066, + "page": 8 + }, + { + "topLeft": { + "x": 467.17377, + "y": 302.87067 + }, + "width": 9.546082, + "height": 64.49379, + "page": 8 + } + ], + "sectionNumber": 34, + "textBefore": "Mutation Assay Syngenta ", + "textAfter": ", 1537300 GLP,", + "comments": null, + "startOffset": 123, + "endOffset": 179, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004429Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168084Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "59fd618870d65b30dc0e44afbb6e045a" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "59f88f58017b5e036b4225cd421c2223", + "type": "CBI_author", + "value": "Duerden A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 336.1939, + "y": 162.77103 + }, + "width": 9.546082, + "height": 48.14713, + "page": 4 + } + ], + "sectionNumber": 10, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 25, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004203Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167981Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "5b875ba9548d3fb2c2dbfa40de899d89" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "3dea3db5731b16662db289cc3df81d8d", + "type": "CBI_author", + "value": "Duerden A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 255.67393, + "y": 72.8305 + }, + "width": 9.546066, + "height": 48.222286, + "page": 7 + } + ], + "sectionNumber": 26, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 10, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004343Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168042Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "1af8a7ab10ce29da60d01273febb75f1" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "d616107dc45af2ee51676d63211edd21", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 277.80017, + "y": 794.64014 + }, + "width": 40.52658, + "height": 10.452841, + "page": 3 + } + ], + "sectionNumber": 41, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169346Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "e8e0fc483f9fb498df0a6c8e79b891fc", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 8 + } + ], + "sectionNumber": 46, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169348Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "9408d06a994c56248cfbe59f58fe83dc", + "type": "CBI_author", + "value": "Smith A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 301.6939, + "y": 72.8305 + }, + "width": 9.546082, + "height": 37.664196, + "page": 8 + } + ], + "sectionNumber": 33, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 8, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004425Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168081Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "4ef6f4f5d96167e7c415b3660943c0ec" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "40ab823e036be9f87824df365a0da0a6", + "type": "CBI_address", + "value": "Harlan Cytotest Cell Research GmbH (Harlan CCR), Germany", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 455.65378, + "y": 302.87067 + }, + "width": 9.546082, + "height": 183.19066, + "page": 5 + }, + { + "topLeft": { + "x": 467.17377, + "y": 302.87067 + }, + "width": 9.546082, + "height": 64.49379, + "page": 5 + } + ], + "sectionNumber": 16, + "textBefore": "Mutation Assay Syngenta ", + "textAfter": ", 1537300 GLP,", + "comments": null, + "startOffset": 123, + "endOffset": 179, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004245Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168006Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "30008eeffb3888bff1e887f86759a9ea" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "d4f771a4f6d4d97f476600d26d4f1957", + "type": "CBI_author", + "value": "Sokolowski A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 421.15393, + "y": 162.82613 + }, + "width": 9.546082, + "height": 60.9948, + "page": 5 + } + ], + "sectionNumber": 16, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 28, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004227Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167996Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "30008eeffb3888bff1e887f86759a9ea" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "22da22964fd64d1c1ba9a376e7015446", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 347.65363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 151.51546, + "page": 8 + }, + { + "topLeft": { + "x": 359.1736, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 8 + } + ], + "sectionNumber": 33, + "textBefore": "In The Mouse ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 172, + "endOffset": 219, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004392Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168064Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "4ef6f4f5d96167e7c415b3660943c0ec" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "5b875ba9548d3fb2c2dbfa40de899d89", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 336.1939, + "y": 302.78552 + }, + "width": 9.546082, + "height": 45.14919, + "page": 4 + } + ], + "sectionNumber": 10, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 32, + "endOffset": 42, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169351Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "370766ba27902a1a9a27a9d40e3e0feb", + "type": "CBI_address", + "value": "Syngenta Crop Protection AG, Basel, Switzerland", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 370.69376, + "y": 302.87067 + }, + "width": 9.546082, + "height": 151.51546, + "page": 4 + }, + { + "topLeft": { + "x": 382.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 46.74535, + "page": 4 + } + ], + "sectionNumber": 10, + "textBefore": "In The Rat ", + "textAfter": " Central Toxicology", + "comments": null, + "startOffset": 143, + "endOffset": 190, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004194Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167976Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "5b875ba9548d3fb2c2dbfa40de899d89" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "0b44f290ff4686fb1ada3aad556533d2", + "type": "CBI_address", + "value": "BSL Bioservice Scientific, Planegg, Germany", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 251.17378, + "y": 302.87067 + }, + "width": 9.546066, + "height": 183.00133, + "page": 8 + } + ], + "sectionNumber": 32, + "textBefore": "Phototoxicity Test Syngenta ", + "textAfter": ", 132889 GLP,", + "comments": null, + "startOffset": 100, + "endOffset": 143, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004458Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168097Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "971cc761df560e8cdb8572c869e1dd27" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "fd829a4f1bcf27c7f7281ad0bfa0ada7", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 302.90778 + }, + "width": 9.546066, + "height": 45.137135, + "page": 5 + } + ], + "sectionNumber": 14, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169354Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "4b6402a0b6136838f8a5c4dd0a72202e", + "type": "CBI_author", + "value": "Duerden A.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 375.1939, + "y": 72.8305 + }, + "width": 9.546082, + "height": 48.14712, + "page": 7 + } + ], + "sectionNumber": 27, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 10, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004335Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168037Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "60b3e8af894fa699729470ddc9549931" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "2c15d26b80cbe59754e5df53ae1c1869", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 38.907146, + "y": 401.09 + }, + "width": 8.452839, + "height": 39.08968, + "page": 4 + } + ], + "sectionNumber": 42, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169357Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "facf91faf1a35c070052c249848b1967", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 405.1936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 5 + } + ], + "sectionNumber": 15, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 171, + "endOffset": 179, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004261Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.16802Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "37b3cd447c08df7067172f21ec34b417" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "aa9d12892b302cf41b957519f6d70706", + "type": "CBI_address", + "value": "Central Toxicology Laboratory (CTL), Cheshire, United Kingdom", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 370.6936, + "y": 302.87067 + }, + "width": 9.546082, + "height": 157.0265, + "page": 8 + }, + { + "topLeft": { + "x": 382.15347, + "y": 302.87067 + }, + "width": 9.546082, + "height": 104.29225, + "page": 8 + } + ], + "sectionNumber": 33, + "textBefore": "AG, Basel, Switzerland ", + "textAfter": ", UM0827-REG GLP,", + "comments": null, + "startOffset": 220, + "endOffset": 281, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004396Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168067Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "4ef6f4f5d96167e7c415b3660943c0ec" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "971cc761df560e8cdb8572c869e1dd27", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 216.67393, + "y": 302.87265 + }, + "width": 9.546066, + "height": 45.15517, + "page": 8 + } + ], + "sectionNumber": 32, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 32, + "endOffset": 42, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169359Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "dfd167f65c5448368f873b398a9685aa", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 359.17377, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.816517, + "page": 5 + } + ], + "sectionNumber": 15, + "textBefore": "NRU Phototoxicity Test ", + "textAfter": " BSL Bioservice", + "comments": null, + "startOffset": 91, + "endOffset": 99, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004236Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168001Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "37b3cd447c08df7067172f21ec34b417" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "960db15bba3976e499fa2196b4801b8c", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Header", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 277.80017, + "y": 794.64014 + }, + "width": 40.52658, + "height": 10.452841, + "page": 2 + } + ], + "sectionNumber": 40, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 29, + "endOffset": 39, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169362Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "91322645bd25cda1300cc5c9247c8b53", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 428.17346, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.804523, + "page": 4 + } + ], + "sectionNumber": 10, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 280, + "endOffset": 288, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004207Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167984Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "5b875ba9548d3fb2c2dbfa40de899d89" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "59fd618870d65b30dc0e44afbb6e045a", + "type": "published_information", + "value": "Mesotrione", + "reason": null, + "matchedRule": 0, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.52156866, + 0.92156863, + 1 + ], + "positions": [ + { + "topLeft": { + "x": 421.15393, + "y": 302.87173 + }, + "width": 9.546082, + "height": 45.12206, + "page": 8 + } + ], + "sectionNumber": 34, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 34, + "endOffset": 44, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2022-06-13T11:54:09.169365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "hint": true, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "4408f69f3f9f2f7ed784d40b668e80f6", + "type": "CBI_address", + "value": "Syngenta", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": null, + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 490.15363, + "y": 302.87067 + }, + "width": 9.546082, + "height": 36.80248, + "page": 5 + } + ], + "sectionNumber": 16, + "textBefore": "GLP, not published ", + "textAfter": " File No", + "comments": null, + "startOffset": 208, + "endOffset": 216, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004232Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.167998Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [ + "30008eeffb3888bff1e887f86759a9ea" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "8e299ee5aa0569bf5ffd80224c4413f6", + "type": "CBI_author", + "value": "Lehmeier D.", + "reason": "Published Information found", + "matchedRule": 18, + "rectangle": false, + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": false, + "section": "Table in: Version history1", + "color": [ + 0.76862746, + 0.59607846, + 0.98039216 + ], + "positions": [ + { + "topLeft": { + "x": 336.1939, + "y": 162.8492 + }, + "width": 9.546082, + "height": 52.01383, + "page": 5 + } + ], + "sectionNumber": 15, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 15, + "endOffset": 26, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2022-06-13T11:53:38.004257Z" + }, + { + "analysisNumber": 2, + "type": "CHANGED", + "dateTime": "2022-06-13T11:54:09.168017Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [ + "37b3cd447c08df7067172f21ec34b417" + ], + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "localManualRedaction": false, + "manuallyRemoved": false + }, + { + "id": "7282b21088d9e0a71d48e49092afc6b5", + "type": "manual", + "value": "METABOLISM", + "reason": "personal data (names and addresses) of individuals involved in testing on vertebrate studies or in obtaining toxicological information", + "matchedRule": 0, + "rectangle": false, + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "redacted": true, + "section": null, + "color": [ + 0.5764706, + 0.59607846, + 0.627451 + ], + "positions": [ + { + "topLeft": { + "x": 327.87106, + "y": 271.96353 + }, + "width": 93.998726, + "height": 19.48812, + "page": 1 + } + ], + "sectionNumber": -1, + "textBefore": null, + "textAfter": null, + "comments": null, + "startOffset": 0, + "endOffset": 0, + "imageHasTransparency": false, + "excluded": false, + "sourceId": null, + "changes": [], + "manualChanges": [ + { + "annotationStatus": "APPROVED", + "manualRedactionType": "ADD_LOCALLY", + "processedDate": "2022-06-13T11:53:58.587Z", + "requestedDate": "2022-06-13T11:53:58.587Z", + "userId": "b11e7f2b-49fd-4e1d-adf3-2b6e38413afd", + "propertyChanges": {}, + "processed": true + } + ], + "engines": null, + "reference": null, + "importedRedactionIntersections": [], + "hint": false, + "recommendation": false, + "falsePositive": false, + "image": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "localManualRedaction": true, + "manuallyRemoved": false + } + ], + "legalBasis": [ + { + "name": "1.1 personal data (incl. geolocation); Article 39(e)(3)", + "description": "(Regulations (EU) 2016/679 and (EU) 2018/1725 shall apply to the processing of personal data carried out pursuant to this Regulation. Any personal data made public pursuant to Article 38 of this Regulation and this Article shall only be used to ensure the transparency of the risk assessment under this Regulation and shall not be further processed in a manner that is incompatible with these purposes, in accordance with point (b) of Article 5(1) of Regulation (EU) 2016/679 and point (b) of Article 4(1) of Regulation (EU) 2018/1725, as the case may be)", + "reason": "Article 39(e)(3) of Regulation (EC) No 178/2002" + }, + { + "name": "1.2 vertebrate study related personal data (incl. geolocation); Article 39(e)(2)", + "description": "personal data (names and addresses) of individuals involved in testing on vertebrate studies or in obtaining toxicological information", + "reason": "Article 39(e)(2) of Regulation (EC) No 178/2002" + }, + { + "name": "2. manufacturing or production process", + "description": "the manufacturing or production process, including the method and innovative aspects thereof, as well as other technical and industrial specifications inherent to that process or method, except for information which is relevant to the assessment of safety", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "3. links between a producer and applicant", + "description": "commercial links between a producer or importer and the applicant or the authorisation holder, where applicable", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "4. commercial information", + "description": "commercial information revealing sourcing, market shares or business strategy of the applicant", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "5. quantitative composition", + "description": "quantitative composition of the subject matter of the request, except for information which is relevant to the assessment of safety", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "6. specification of impurity", + "description": "the specification of impurity of the active substance and the related methods of analysis for impurities in the active substance as manufactured, except for the impurities that are considered to be toxicologically, ecotoxicologically or environmentally relevant and the related methods of analysis for such impurities", + "reason": "Article 63(2)(b) of Regulation (EC) No 1107/2009" + }, + { + "name": "7. results of production batches", + "description": "results of production batches of the active substance including impurities", + "reason": "Article 63(2)(c) of Regulation (EC) No 1107/2009" + }, + { + "name": "8. composition of a plant protection product", + "description": "information on the complete composition of a plant protection product", + "reason": "Article 63(2)(d) of Regulation (EC) No 1107/2009" + } + ], + "dictionaryVersion": 18, + "dossierDictionaryVersion": 8, + "rulesVersion": 2, + "legalBasisVersion": 2 +} \ No newline at end of file diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx index 98f9e79..5538a99 100644 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx and b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx differ