Pull request #195: RSS-204: Added new guideline mapping, fixed component names for scm

Merge in RED/redaction-report-service from RSS-204 to master

* commit 'd83dd3b576a34a7f4843507083587e0b2e806c06':
  RSS-204: Added new guideline mapping, fixed component names for scm
This commit is contained in:
Dominique Eiflaender 2022-11-22 12:12:32 +01:00
commit 09a084ff2a

View File

@ -14,6 +14,7 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
@ -40,8 +41,8 @@ public class RSSPoc2Service {
public static final String EXPERIMENTAL_COMPLETION_DATE = "Experimental_Completion_Date";
public static final String GLP_STUDY = "GLP_Study";
public static final String CERTIFICATE_OF_ANALYSIS_BATCH_IDENTIFICATION = "Certificate_of_Analysis_Batch_Identification";
public static final String TEST_GUIDELINE_1 = "Test_Guideline_1";
public static final String TEST_GUIDELINE_2 = "Test_Guideline_2";
public static final String TEST_GUIDELINE_1 = "Test_Guidelines_1";
public static final String TEST_GUIDELINE_2 = "Test_Guidelines_2";
public static final String STUDY_CONCLUSION = "Study_Conclusion";
public static final String DEVIATION_FROM_THE_GUIDELINE_SENTENCE = "Deviation_from_the_Guideline_";
public static final String SPECIES = "Species";
@ -51,8 +52,8 @@ public class RSSPoc2Service {
public static final String CONCLUSION_MINIMUM_CONFIDENCE = "Conclusion_Minimum_Confidence";
public static final String CONCLUSION_MAXIMUM_CONFIDENCE = "Conclusion_Maximum_Confidence";
public static final String NECROPSY_FINDINGS = "Necropsy_Findings";
public static final String NECROPSY_FINDINGS_SENTENCE = "Necropsy_findings_";
public static final String CONDUCTED_WITHIN_4_HOURS_OF_EXPOSURE = "Conducted_within_4_Hours_of_Exposure";
public static final String NECROPSY_FINDINGS_SENTENCE = "Necropsy_Findings_";
public static final String CONDUCTED_WITHIN_4_HOURS_OF_EXPOSURE = "Conducted_with_4_Hours_of_Exposure";
public static final String STUDY_DESIGN = "Study_Design";
public static final String RESULTS_AND_CONCLUSIONS = "Results_and_Conclusions";
public static final String WEIGHT_BEHAVIOR_CHANGES_SENTENCE = "Weight_Behavior_Changes_";
@ -75,44 +76,42 @@ public class RSSPoc2Service {
private final RedactionLogClient redactionLogClient;
private final FileStatusClient statusClient;
private final Map<String, Set<String>> guidelineMapping = new HashMap<>();
private final Map<Pair, String> guidelineMapping = new HashMap<>();
private final FileAttributesConfigClient fileAttributesClient;
@PostConstruct
public void init() {
guidelineMapping.put("Nº 425: Acute oral Toxicity - Up-and-Down Procedure (03/10/2008)", Set.of("OECD 425 (2008)", "OECD No. 425 (2008)"));
guidelineMapping.put("Nº 425: Acute oral Toxicity - Up-and-Down Procedure (17/12/2001)", Set.of("OECD 425 (2001)", "OECD No. 425 (2001)"));
guidelineMapping.put("Nº 402: Acute Dermal Toxicity (09/10/2017)", Set.of("OECD 402 (2017)", "OECD No. 402 (2017)"));
guidelineMapping.put("Nº 402: Acute Dermal Toxicity (24/02/1987)", Set.of("OECD 402 (1987)", "OECD No. 402 (1987)"));
guidelineMapping.put("Nº 403: Acute Inhalation Toxicity (08/09/2009)", Set.of("OECD 403 (2009)", "OECD No. 403 (2009)"));
guidelineMapping.put("Nº 403: Acute Inhalation Toxicity (12/05/1981)", Set.of("OECD 403 (1981)", "OECD No. 403 (1981)"));
guidelineMapping.put("Nº 433: Acute Inhalation Toxicity: Fixed Concentration Procedure (27/06/2018)", Set.of("OECD 433 (2018)", "OECD No. 433 (2018)"));
guidelineMapping.put("Nº 433: Acute Inhalation Toxicity: Fixed Concentration Procedure (09/10/2017)", Set.of("OECD 433 (2017)", "OECD No. 433 (2017)"));
guidelineMapping.put("Nº 436: Acute Inhalation Toxicity Acute Toxic Class Method (08/09/2009)", Set.of("OECD 436 (2009)", "OECD No. 436 (2009)"));
guidelineMapping.put("Nº 404: Acute Dermal Irritation/Corrosion (12/05/1981)", Set.of("OECD 404 (1981)", "OECD No. 404 (1981)"));
guidelineMapping.put("Nº 404: Acute Dermal Irritation/Corrosion (17/07/1992)", Set.of("OECD 404 (1992)", "OECD No. 404 (1992)"));
guidelineMapping.put("Nº 404: Acute Dermal Irritation/Corrosion (24/04/2002)", Set.of("OECD 404 (2002)", "OECD No. 404 (2002)"));
guidelineMapping.put("Nº 404: Acute Dermal Irritation/Corrosion (28/07/2015)", Set.of("OECD 405 (2017)", "OECD No. 405 (2017)"));
guidelineMapping.put("Nº 405: Acute Eye Irritation/Corrosion (09/10/2017)", Set.of("OECD 405 (2017)", "OECD No. 405 (2017)"));
guidelineMapping.put("Nº 405: Acute Eye Irritation/Corrosion (02/10/2012)", Set.of("OECD 405 (2012)", "OECD No. 405 (2012)"));
guidelineMapping.put("Nº 405: Acute Eye Irritation/Corrosion (24/04/2002)", Set.of("OECD 405 (2002)", "OECD No. 405 (2002)"));
guidelineMapping.put("Nº 405: Acute Eye Irritation/Corrosion (24/02/1987)", Set.of("OECD 405 (1987)", "OECD No. 405 (1987)"));
guidelineMapping.put("Nº 429: Skin Sensitisation: Local Lymph Node Assay (24/04/2002)", Set.of("OECD 429 (2002)", "OECD No. 429 (2002)"));
guidelineMapping.put("Nº 429: Skin Sensitisation (23/07/2010)", Set.of("OECD 429 (2010)", "OECD No. 429 (2010)"));
guidelineMapping.put("Nº 442A: Skin Sensitization (23/07/2018)", Set.of("ÖECD 442A (2018)", "ÖECD No. 442A (2018)"));
guidelineMapping.put("Nº 442B: Skin Sensitization (27/06/2018)", Set.of("ÖECD 442B (2018)", "ÖECD No. 442B (2018)"));
guidelineMapping.put("Nº 471: Bacterial Reverse Mutation Test (21/07/1997)", Set.of("OECD 471 (1997)", "OECD No. 471 (1997)"));
guidelineMapping.put("Nº 471: Bacterial Reverse Mutation Test (26/06/2020)", Set.of("OECD 471 (2020)", "OECD No. 471 (2020)"));
guidelineMapping.put("Nº 406: Skin Sensitisation (1992)", Set.of("OECD 406 (1992)", "OECD No. 406 (1992)"));
guidelineMapping.put("Nº 428: Split-Thickness Skin test (2004)", Set.of("OECD 428 (2004)", "OECD No. 428 (2004)"));
guidelineMapping.put("Nº 438: Eye Irritation (26/06/2018)", Set.of("OECD 438 (2018)", "OECD No. 438 (2018)"));
guidelineMapping.put("Nº 439: Skin Irritation (2019)", Set.of("OECD 439 (2019)", "OECD No. 439 (2019)"));
guidelineMapping.put("Nº 474: Micronucleus Bone Marrow Cells Rat (2016)", Set.of("OECD 474 (2016)", "OECD No. 474 (2016)"));
guidelineMapping.put("Nº 487: Micronucleus Human Lymphocytes (2016)", Set.of("OECD 487 (2016)", "OECD No. 487 (2016)"));
guidelineMapping.put(Pair.of("425", "2008"), "Nº 425: Acute oral Toxicity - Up-and-Down Procedure (03/10/2008)");
guidelineMapping.put(Pair.of("425", "2001"), "Nº 425: Acute oral Toxicity - Up-and-Down Procedure (17/12/2001)");
guidelineMapping.put(Pair.of("402", "2017"), "Nº 402: Acute Dermal Toxicity (09/10/2017)");
guidelineMapping.put(Pair.of("402", "1987"), "Nº 402: Acute Dermal Toxicity (24/02/1987)");
guidelineMapping.put(Pair.of("403", "2009"), "Nº 403: Acute Inhalation Toxicity (08/09/2009)");
guidelineMapping.put(Pair.of("403", "1981"), "Nº 403: Acute Inhalation Toxicity (12/05/1981)");
guidelineMapping.put(Pair.of("433", "2018"), "Nº 433: Acute Inhalation Toxicity: Fixed Concentration Procedure (27/06/2018)");
guidelineMapping.put(Pair.of("433", "2017"), "Nº 433: Acute Inhalation Toxicity: Fixed Concentration Procedure (09/10/2017)");
guidelineMapping.put(Pair.of("436", "2009"), "Nº 436: Acute Inhalation Toxicity Acute Toxic Class Method (08/09/2009)");
guidelineMapping.put(Pair.of("404", "1981"), "Nº 404: Acute Dermal Irritation/Corrosion (12/05/1981)");
guidelineMapping.put(Pair.of("404", "1992"), "Nº 404: Acute Dermal Irritation/Corrosion (17/07/1992)");
guidelineMapping.put(Pair.of("404", "2002"), "Nº 404: Acute Dermal Irritation/Corrosion (24/04/2002)");
guidelineMapping.put(Pair.of("404", "2015"), "Nº 404: Acute Dermal Irritation/Corrosion (28/07/2015)");
guidelineMapping.put(Pair.of("405", "2017"), "Nº 405: Acute Eye Irritation/Corrosion (09/10/2017)");
guidelineMapping.put(Pair.of("405", "2012"), "Nº 405: Acute Eye Irritation/Corrosion (02/10/2012)");
guidelineMapping.put(Pair.of("405", "2002"), "Nº 405: Acute Eye Irritation/Corrosion (24/04/2002)");
guidelineMapping.put(Pair.of("405", "1987"), "Nº 405: Acute Eye Irritation/Corrosion (24/02/1987)");
guidelineMapping.put(Pair.of("429", "2002"), "Nº 429: Skin Sensitisation: Local Lymph Node Assay (24/04/2002)");
guidelineMapping.put(Pair.of("429", "2010"), "Nº 429: Skin Sensitisation (23/07/2010)");
guidelineMapping.put(Pair.of("442A", "2018"), "Nº 442A: Skin Sensitization (23/07/2018)");
guidelineMapping.put(Pair.of("442B", "2018"), "Nº 442B: Skin Sensitization (27/06/2018)");
guidelineMapping.put(Pair.of("471", "1997"), "Nº 471: Bacterial Reverse Mutation Test (21/07/1997)");
guidelineMapping.put(Pair.of("471", "2020"), "Nº 471: Bacterial Reverse Mutation Test (26/06/2020)");
guidelineMapping.put(Pair.of("406", "1992"), "Nº 406: Skin Sensitisation (1992)");
guidelineMapping.put(Pair.of("428", "2004"), "Nº 428: Split-Thickness Skin test (2004)");
guidelineMapping.put(Pair.of("438", "2018"), "Nº 438: Eye Irritation (26/06/2018)");
guidelineMapping.put(Pair.of("439", "2019"), "Nº 439: Skin Irritation (2019)");
guidelineMapping.put(Pair.of("474", "2016"), "Nº 474: Micronucleus Bone Marrow Cells Rat (2016)");
guidelineMapping.put(Pair.of("487", "2016"), "Nº 487: Micronucleus Human Lymphocytes (2016)");
}
@ -811,13 +810,19 @@ public class RSSPoc2Service {
private String getTestGuideline1(RedactionLog redactionLog) {
var guideline = redactionLog.getRedactionLogEntry().stream().filter(r -> r.getType().equals("oecd_guideline")).map(RedactionLogEntry::getValue).findFirst();
var guidelineNumber = redactionLog.getRedactionLogEntry().stream().filter(r -> r.getType().equals("oecd_guideline_number")).map(RedactionLogEntry::getValue).findFirst();
var guidelineYear = redactionLog.getRedactionLogEntry().stream().filter(r -> r.getType().equals("oecd_guideline_year")).map(RedactionLogEntry::getValue).findFirst();
if (guideline.isPresent()) {
return mapGuideline(guideline.get());
if(guidelineNumber.isPresent() && guidelineYear.isPresent()){
var guidelinePair = Pair.of(guidelineNumber.get(), guidelineYear.get());
if(guidelineMapping.containsKey(guidelinePair)){
return guidelineMapping.get(guidelinePair);
}
}
return "";
var guideline = redactionLog.getRedactionLogEntry().stream().filter(r -> r.getType().equals("oecd_guideline")).map(RedactionLogEntry::getValue).findFirst();
return guideline.orElse("");
}
@ -848,16 +853,6 @@ public class RSSPoc2Service {
}
private String mapGuideline(String guideline) {
for (Map.Entry<String, Set<String>> entry : guidelineMapping.entrySet()) {
if (entry.getValue().contains(guideline)) {
return entry.getKey();
}
}
return "No mapping found for: " + guideline;
}
private void sortRedactionLog(RedactionLog redactionLog) {