From 447c7c3599b3ef381fac05ac1460a0ed01a03764 Mon Sep 17 00:00:00 2001 From: javi Date: Mon, 21 Jun 2021 21:27:42 +0200 Subject: [PATCH 01/11] improves srdomaintemplate tab --- .../api/controllers/DocumentController.java | 7 +++- .../rest/api/model/DocumentAnnotations.java | 18 ++++++---- .../ades/rest/api/model/SRDomainFinding.java | 26 ++++++++++++++ .../rest/api/services/DocumentService.java | 4 ++- .../api/services/DocumentServiceImpl.java | 34 ++++++++++++++----- 5 files changed, 71 insertions(+), 18 deletions(-) diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java index f027c9e..37a4914 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java @@ -30,7 +30,12 @@ public class DocumentController { @RequestMapping("/documents/{id}") public DocumentAnnotations find(@PathVariable(value="id") Long id) { - return documentService.findByDocumentAnnotationsByDocumentId(id); + return documentService.findDocumentAnnotationsByDocumentId(id); + } + + @RequestMapping("/documents/{id}/srdomain") + public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) { + return documentService.findDocumentSRDomainByDocumentId(id); } // @RequestMapping("/documents/{id}") diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java index a79af0c..2bc5665 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java @@ -1,6 +1,7 @@ package es.bsc.inb.ades.rest.api.model; import java.util.ArrayList; +import java.util.List; import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; @@ -22,6 +23,8 @@ public class DocumentAnnotations { private ArrayList relevantSentences; private ArrayList findings; + + private List srdomainfindings; public DocumentAnnotations() {} @@ -46,7 +49,6 @@ public class DocumentAnnotations { return documentId; } - public ArrayList getRelevantSentences() { return relevantSentences; } @@ -59,20 +61,22 @@ public class DocumentAnnotations { this.documentId = documentId; } - - - public ArrayList getFindings() { return findings; } - - - public void setFindings(ArrayList findings) { this.findings = findings; } + public List getSrdomainfindings() { + return srdomainfindings; + } + + public void setSrdomainfindings(List srdomainfindings) { + this.srdomainfindings = srdomainfindings; + } + } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java index b601836..57fa5a5 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java @@ -34,6 +34,11 @@ public class SRDomainFinding implements Cloneable{ private String SRSIGF=""; private String SRTRTEF=""; private String SRCOMNT=""; + + private Boolean export; + private Integer findingId; + private Integer srDomainId; + public String getSTUDYID() { return STUDYID; } @@ -191,6 +196,27 @@ public class SRDomainFinding implements Cloneable{ SRCOMNT = sRCOMNT; } + + + + public Boolean getExport() { + return export; + } + public void setExport(Boolean export) { + this.export = export; + } + public Integer getSrDomainId() { + return srDomainId; + } + public void setSrDomainId(Integer srDomainId) { + this.srDomainId = srDomainId; + } + public Integer getFindingId() { + return findingId; + } + public void setFindingId(Integer findingId) { + this.findingId = findingId; + } public SRDomainFinding clone() { try { return (SRDomainFinding)super.clone(); diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java index c95ff1b..cda7a3f 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java @@ -18,7 +18,9 @@ public interface DocumentService { String findFindingEvidenceByDocumentIdAndFindingId(Long id, Integer findingId); - DocumentAnnotations findByDocumentAnnotationsByDocumentId(Long id); + DocumentAnnotations findDocumentAnnotationsByDocumentId(Long id); + + DocumentAnnotations findDocumentSRDomainByDocumentId(Long id); String findSentenceEvidenceByDocumentIdAndSentenceId(Long id, Integer sentenceId); diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java index 55966fe..aab25d0 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java @@ -28,6 +28,7 @@ import es.bsc.inb.ades.rest.api.model.Annotation; import es.bsc.inb.ades.rest.api.model.Document; import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; import es.bsc.inb.ades.rest.api.model.Finding; +import es.bsc.inb.ades.rest.api.model.SRDomainFinding; import es.bsc.inb.ades.rest.api.repository.DocumentAnnotationsRepository; import es.bsc.inb.ades.rest.api.repository.DocumentRepository; import es.bsc.inb.ades.rest.api.util.Constants; @@ -60,10 +61,25 @@ public class DocumentServiceImpl implements DocumentService { return documentRepository.findDocumentTextSubstringByDocumentId(id, start, end); } - public DocumentAnnotations findByDocumentAnnotationsByDocumentId(Long id) { + public DocumentAnnotations findDocumentAnnotationsByDocumentId(Long id) { return documentAnnotationsRepository.findByDocumentId(id); } + public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { + DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); + List srdomains = new ArrayList(); + for (Annotation sentence : docAnno.getRelevantSentences()) { + for (Finding finding : sentence.getFindings()) { + for (SRDomainFinding sr : finding.getSrDomainFindings()) { + srdomains.add(sr); + } + } + } + docAnno.setSrdomainfindings(srdomains); + docAnno.setRelevantSentences(null); + docAnno.setFindings(null); + return docAnno; + } public Document findByDocumentId2(Long id) { documentRepository.findByDocumentId(id); @@ -91,7 +107,7 @@ public class DocumentServiceImpl implements DocumentService { @Override public String findTextSnippetByDocumentIdAndFindingId2(Long id, Integer findingId) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Document document = this.findByDocumentId(id); Finding findingSelected = null; for (Finding finding : documentAnnotations.getFindings()) { @@ -111,7 +127,7 @@ public class DocumentServiceImpl implements DocumentService { @Override public Boolean acceptFinding(Long id, Integer findingId) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Finding findingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { @@ -131,7 +147,7 @@ public class DocumentServiceImpl implements DocumentService { @Override public Boolean rejectFinding(Long id, Integer findingId) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Finding findingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { @@ -152,7 +168,7 @@ public class DocumentServiceImpl implements DocumentService { @Override public Boolean setExportFinding(Long id, Integer findingId,String export_finding) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Finding findingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { @@ -174,7 +190,7 @@ public class DocumentServiceImpl implements DocumentService { @Override public String findSentenceEvidenceByDocumentIdAndSentenceId(Long id, Integer sentenceId) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Annotation annotation = null; for (Annotation sentence : documentAnnotations.getRelevantSentences()) { if(sentence.getId().equals(sentenceId)) { @@ -205,14 +221,14 @@ public class DocumentServiceImpl implements DocumentService { } public String findFindingsEvidenceByDocumentId(Long id) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Document document = this.findByDocumentId(id); return this.generateFindingsSnippet4(document.getText(), documentAnnotations.getFindings()); } @Override public String findFindingEvidenceByDocumentIdAndFindingId(Long id, Integer findingId) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Finding findingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { @@ -267,7 +283,7 @@ public class DocumentServiceImpl implements DocumentService { public byte[] exportDocumentAnnotation(Long id) { - DocumentAnnotations documentAnnotations = this.findByDocumentAnnotationsByDocumentId(id); + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); StringBuilder retStr = new StringBuilder(""); retStr.append("STUDYID|DOMAIN|SRSEQ|SRRISK|SPGRPCD|GRPLBL|SRGRPDOS|SRSEX|SRSTDY|SRSTPHSE|SROBSTDY|SRENDY|SRENPHSE|SROBENDY|SRDOMAIN|SRSPEC|SRTSTCD|SRFNDG|SRORES|SROBSV|SROBSQ|SRSEV|SRPCNT|SRSIGF|SRTRTEF|SRCOMNT"); retStr.append(System.getProperty("line.separator")); -- GitLab From 24574a92c811cd602e91cf9df65c4093cdabb49f Mon Sep 17 00:00:00 2001 From: javi Date: Tue, 22 Jun 2021 16:34:16 +0200 Subject: [PATCH 02/11] export changes and curations features --- .../api/controllers/DocumentController.java | 17 +- .../rest/api/services/DocumentService.java | 6 +- .../api/services/DocumentServiceImpl.java | 217 ++++++------------ 3 files changed, 83 insertions(+), 157 deletions(-) diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java index 37a4914..426b2e0 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java @@ -56,21 +56,14 @@ public class DocumentController { return ""; } - @RequestMapping("/documents/{id}/acceptFinding/{findingId}") - public String acceptFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { - documentService.acceptFinding(id, findingId); - return "true"; - } - - - @RequestMapping("/documents/{id}/rejectFinding/{findingId}") - public String rejectFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { - documentService.rejectFinding(id, findingId); + @RequestMapping("/documents/{id}/exportFinding/{findingId}/{export_finding}") + public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { + documentService.setExportFinding(id, findingId, export_finding); return "true"; } - @RequestMapping("/documents/{id}/exportFinding/{findingId}/{export_finding}") - public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { + @RequestMapping("/documents/{id}/findingValidation/{findingId}/{status}") + public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { documentService.setExportFinding(id, findingId, export_finding); return "true"; } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java index cda7a3f..192a195 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java @@ -28,9 +28,7 @@ public interface DocumentService { String findFindingsEvidenceByDocumentId(Long id); - Boolean acceptFinding(Long id, Integer findingId); - - Boolean rejectFinding(Long id, Integer findingId); - Boolean setExportFinding(Long id, Integer findingId, String export_finding); + + Boolean setFindingValidation(Long id, Integer findingId,String status); } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java index aab25d0..1f4431a 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java @@ -123,30 +123,8 @@ public class DocumentServiceImpl implements DocumentService { return ""; } - - @Override - public Boolean acceptFinding(Long id, Integer findingId) { - DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); - Finding findingSelected = null; - for (Annotation annotation : documentAnnotations.getRelevantSentences()) { - for (Finding finding : annotation.getFindings()) { - if(finding.getFindingId().equals(findingId)) { - findingSelected = finding; - break; - } - } - } - if(findingSelected!=null) { - findingSelected.setStatus("accepted"); - documentAnnotationsRepository.save(documentAnnotations); - return true; - } - return false; - } - - @Override - public Boolean rejectFinding(Long id, Integer findingId) { + public Boolean setFindingValidation(Long id, Integer findingId,String status) { DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); Finding findingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { @@ -159,7 +137,7 @@ public class DocumentServiceImpl implements DocumentService { } if(findingSelected!=null) { //https://stackoverflow.com/questions/47699646/updating-replacing-a-deeply-nested-object-in-mongodb-with-spring-data-mongodb - findingSelected.setStatus("rejected"); + findingSelected.setStatus(status); documentAnnotationsRepository.save(documentAnnotations); return true; } @@ -288,127 +266,84 @@ public class DocumentServiceImpl implements DocumentService { retStr.append("STUDYID|DOMAIN|SRSEQ|SRRISK|SPGRPCD|GRPLBL|SRGRPDOS|SRSEX|SRSTDY|SRSTPHSE|SROBSTDY|SRENDY|SRENPHSE|SROBENDY|SRDOMAIN|SRSPEC|SRTSTCD|SRFNDG|SRORES|SROBSV|SROBSQ|SRSEV|SRPCNT|SRSIGF|SRTRTEF|SRCOMNT"); retStr.append(System.getProperty("line.separator")); for (Finding finding : documentAnnotations.getFindings()) { - //STUDYID -- > Study Identifier - retStr.append(id); - retStr.append("|"); - //DOMAIN -- > Domain Abbreviation, always SR - retStr.append("SR"); - retStr.append("|"); - //SRSEQ -- > Sequence number - retStr.append(""); - retStr.append("|"); - //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD - retStr.append(finding.getRisk_level()==null?"":finding.getRisk_level().getValue()); - retStr.append("|"); - //SPGRPCD --> Sponsor-defined Group Code, group 1 , A - retStr.append(finding.getGroup()==null?"":finding.getGroup().getValue()); - retStr.append("|"); - //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - retStr.append(finding.getGroup()==null?"":finding.getGroup().getValue()); - retStr.append("|"); - //SRGRPDOS --> Group Dose Level, "20 mg/kg" - retStr.append(finding.getGroup()==null?"":finding.getGroup().getValue()); - retStr.append("|"); - //SRSEX -- > Sex - retStr.append(finding.getSex()==null?"":finding.getSex().getValue()); - retStr.append("|"); - //SRSTDY --> Study Day of Start of Finding - retStr.append(""); - retStr.append("|"); - //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” - retStr.append(""); - retStr.append("|"); - //SROBSTDY --> Start Phase Day of Observation - retStr.append(""); - retStr.append("|"); - //SRENPHSE -->Study Phase of last Observation - retStr.append(""); - retStr.append("|"); - //SRDOMAIN --> Domain of Finding - retStr.append(finding.getStudy_domain()==null?"":finding.getStudy_domain().getValue()); - retStr.append("|"); - //SRSPEC --> Specimen of Finding - retStr.append(finding.getSpecimen()==null?"":finding.getSpecimen().getValue()); - retStr.append("|"); - //SRTSTCD --> Test Short Name - retStr.append(finding.getStudy_testcd()==null?"":finding.getStudy_testcd().getValue()); - retStr.append("|"); - //SRFNDG --> Finding - retStr.append(finding.getFinding()==null?"":finding.getFinding().getValue()); - retStr.append("|"); - //SRORES --> Observation (original result) - retStr.append(finding.getFinding()==null?"":finding.getFinding().getValue()); - retStr.append("|"); - //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) - retStr.append(finding.getManifestation_finding()==null?"":finding.getManifestation_finding().getValue()); - retStr.append("|"); - //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ - retStr.append(finding.getObservation_qualification()==null?"":finding.getObservation_qualification().getValue()); - retStr.append("|"); - //SRSEV --> Severity of Finding - retStr.append(""); - retStr.append("|"); - //SRPCNT --> Scale of this Finding - retStr.append(""); - retStr.append("|"); - //SRSIGF --> Statistical Significance - retStr.append(finding.getStatistical_significance()==null?"":finding.getStatistical_significance().getValue()); - retStr.append("|"); - //SRTRTEF --> Treatment-Related - retStr.append(finding.getIs_treatment_related()==null?"":finding.getIs_treatment_related().getValue()); - retStr.append("|"); - //SRCOMNT --> Comment - retStr.append("\n"); + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + //STUDYID -- > Study Identifier + retStr.append(id); + retStr.append("|"); + //DOMAIN -- > Domain Abbreviation, always SR + retStr.append("SR"); + retStr.append("|"); + //SRSEQ -- > Sequence number + retStr.append(""); + retStr.append("|"); + //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD + retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); + retStr.append("|"); + //SPGRPCD --> Sponsor-defined Group Code, group 1 , A + retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); + retStr.append("|"); + //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" + retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); + retStr.append("|"); + //SRGRPDOS --> Group Dose Level, "20 mg/kg" + retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); + retStr.append("|"); + //SRSEX -- > Sex + retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); + retStr.append("|"); + //SRSTDY --> Study Day of Start of Finding + retStr.append(""); + retStr.append("|"); + //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” + retStr.append(""); + retStr.append("|"); + //SROBSTDY --> Start Phase Day of Observation + retStr.append(""); + retStr.append("|"); + //SRENPHSE -->Study Phase of last Observation + retStr.append(""); + retStr.append("|"); + //SRDOMAIN --> Domain of Finding + retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); + retStr.append("|"); + //SRSPEC --> Specimen of Finding + retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); + retStr.append("|"); + //SRTSTCD --> Test Short Name + retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); + retStr.append("|"); + //SRFNDG --> Finding + retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); + retStr.append("|"); + //SRORES --> Observation (original result) + retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); + retStr.append("|"); + //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) + retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); + retStr.append("|"); + //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ + retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); + retStr.append("|"); + //SRSEV --> Severity of Finding + retStr.append(""); + retStr.append("|"); + //SRPCNT --> Scale of this Finding + retStr.append(""); + retStr.append("|"); + //SRSIGF --> Statistical Significance + retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); + retStr.append("|"); + //SRTRTEF --> Treatment-Related + retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); + retStr.append("|"); + //SRCOMNT --> Comment + retStr.append("\n"); + } + } return retStr.toString().getBytes(Charset.forName("UTF-8")); } - - /** - * Create a plain text file with the given string - * @param path - * @param plainText - * @throws FileNotFoundException - * @throws IOException - */ - private void createTxtFile(String path, String plainText) throws FileNotFoundException, IOException { - File fout = new File(path); - FileOutputStream fos = new FileOutputStream(fout); - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos,StandardCharsets.UTF_8)); - bw.write(plainText); - bw.flush(); - bw.close(); - } - -// /** -// * -// * @param text -// * @param findingSelected -// * @return -// */ -// private String generateFindingSnippet(String text, Finding findingSelected) { -// System.out.println(text); -// Integer offsetSlicing = 0; -// -// List all = findingSelected.generateSortedAnnotations(); -// Collections.sort(all); -// -// Annotation relevant_text = findingSelected.getRelevant_text(); -// String init_ = ""; -// String end_ = ""; -// -// text = text.toString().substring(0, relevant_text.getStartOffset()) + init_ + relevant_text.getText() + end_ + text.toString().substring(relevant_text.getEndOffset()); -// offsetSlicing = init_.length(); -// Object[] data = {text, offsetSlicing}; -// for (Annotation annotation : all) { -// if(!annotationSuperposition(annotation, all)) { -// data = addColorToAnnotation(data, this.getAnnotationStyleClass(annotation), annotation); -// } -// System.out.println(data[0]); -// } -// return data[0].toString(); -// } - /** * * @param text -- GitLab From 310ae6dbfa003672e7f0b2288fa98f71594bcf79 Mon Sep 17 00:00:00 2001 From: javi Date: Tue, 22 Jun 2021 16:52:28 +0200 Subject: [PATCH 03/11] export srdomain finding --- .../api/controllers/DocumentController.java | 8 ++++---- .../ades/rest/api/services/DocumentService.java | 2 +- .../rest/api/services/DocumentServiceImpl.java | 17 ++++++++++------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java index 426b2e0..ff77bbe 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java @@ -56,15 +56,15 @@ public class DocumentController { return ""; } - @RequestMapping("/documents/{id}/exportFinding/{findingId}/{export_finding}") - public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { - documentService.setExportFinding(id, findingId, export_finding); + @RequestMapping("/documents/{id}/setExportSRDomain/{srDomainId}/{export_srDomain}") + public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srDomainId") Integer srDomainId, @PathVariable(value="export_srDomain") Boolean export_srDomain) { + documentService.setExportSRDomainFinding(id, srDomainId, export_srDomain); return "true"; } @RequestMapping("/documents/{id}/findingValidation/{findingId}/{status}") public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { - documentService.setExportFinding(id, findingId, export_finding); + documentService.setFindingValidation(id, findingId, export_finding); return "true"; } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java index 192a195..dd2f6bf 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java @@ -28,7 +28,7 @@ public interface DocumentService { String findFindingsEvidenceByDocumentId(Long id); - Boolean setExportFinding(Long id, Integer findingId, String export_finding); + Boolean setExportSRDomainFinding(Long id, Integer findingId, Boolean export_srdomain); Boolean setFindingValidation(Long id, Integer findingId,String status); } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java index 1f4431a..2661813 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java @@ -145,20 +145,23 @@ public class DocumentServiceImpl implements DocumentService { } @Override - public Boolean setExportFinding(Long id, Integer findingId,String export_finding) { + public Boolean setExportSRDomainFinding(Long id, Integer srDomainId,Boolean export_srdomainfinding) { DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); - Finding findingSelected = null; + SRDomainFinding sRDomainFindingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { - if(finding.getFindingId().equals(findingId)) { - findingSelected = finding; - break; + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + if(srDomainFinding.getSrDomainId().equals(srDomainId)) { + sRDomainFindingSelected = srDomainFinding; + break; + } } + } } - if(findingSelected!=null) { + if(sRDomainFindingSelected!=null) { //https://stackoverflow.com/questions/47699646/updating-replacing-a-deeply-nested-object-in-mongodb-with-spring-data-mongodb - findingSelected.setExport(export_finding); + sRDomainFindingSelected.setExport(export_srdomainfinding); documentAnnotationsRepository.save(documentAnnotations); return true; } -- GitLab From 5548b059293bbaf214de193f39a6ccb09bcb20a2 Mon Sep 17 00:00:00 2001 From: javi Date: Tue, 22 Jun 2021 16:52:28 +0200 Subject: [PATCH 04/11] export srdomain finding and validation --- .../api/controllers/DocumentController.java | 10 +- .../rest/api/services/DocumentService.java | 2 +- .../api/services/DocumentServiceImpl.java | 172 +++++++++--------- 3 files changed, 96 insertions(+), 88 deletions(-) diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java index 426b2e0..db310da 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java @@ -56,15 +56,15 @@ public class DocumentController { return ""; } - @RequestMapping("/documents/{id}/exportFinding/{findingId}/{export_finding}") - public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { - documentService.setExportFinding(id, findingId, export_finding); + @RequestMapping("/documents/{id}/setExportSRDomain/{srDomainId}/{export_srDomain}") + public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srDomainId") Integer srDomainId, @PathVariable(value="export_srDomain") Boolean export_srDomain) { + documentService.setExportSRDomainFinding(id, srDomainId, export_srDomain); return "true"; } @RequestMapping("/documents/{id}/findingValidation/{findingId}/{status}") - public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="export_finding") String export_finding) { - documentService.setExportFinding(id, findingId, export_finding); + public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="status") String status) { + documentService.setFindingValidation(id, findingId, status); return "true"; } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java index 192a195..dd2f6bf 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java @@ -28,7 +28,7 @@ public interface DocumentService { String findFindingsEvidenceByDocumentId(Long id); - Boolean setExportFinding(Long id, Integer findingId, String export_finding); + Boolean setExportSRDomainFinding(Long id, Integer findingId, Boolean export_srdomain); Boolean setFindingValidation(Long id, Integer findingId,String status); } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java index 1f4431a..0063164 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java @@ -111,9 +111,11 @@ public class DocumentServiceImpl implements DocumentService { Document document = this.findByDocumentId(id); Finding findingSelected = null; for (Finding finding : documentAnnotations.getFindings()) { - if(finding.getFindingId().equals(findingId)) { - findingSelected = finding; - break; + if(finding.getSrDomainFindings()!=null) { + if(finding.getFindingId().equals(findingId)) { + findingSelected = finding; + break; + } } } @@ -145,20 +147,23 @@ public class DocumentServiceImpl implements DocumentService { } @Override - public Boolean setExportFinding(Long id, Integer findingId,String export_finding) { + public Boolean setExportSRDomainFinding(Long id, Integer srDomainId,Boolean export_srdomainfinding) { DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(id); - Finding findingSelected = null; + SRDomainFinding sRDomainFindingSelected = null; for (Annotation annotation : documentAnnotations.getRelevantSentences()) { for (Finding finding : annotation.getFindings()) { - if(finding.getFindingId().equals(findingId)) { - findingSelected = finding; - break; + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + if(srDomainFinding.getSrDomainId().equals(srDomainId)) { + sRDomainFindingSelected = srDomainFinding; + break; + } } + } } - if(findingSelected!=null) { + if(sRDomainFindingSelected!=null) { //https://stackoverflow.com/questions/47699646/updating-replacing-a-deeply-nested-object-in-mongodb-with-spring-data-mongodb - findingSelected.setExport(export_finding); + sRDomainFindingSelected.setExport(export_srdomainfinding); documentAnnotationsRepository.save(documentAnnotations); return true; } @@ -266,80 +271,83 @@ public class DocumentServiceImpl implements DocumentService { retStr.append("STUDYID|DOMAIN|SRSEQ|SRRISK|SPGRPCD|GRPLBL|SRGRPDOS|SRSEX|SRSTDY|SRSTPHSE|SROBSTDY|SRENDY|SRENPHSE|SROBENDY|SRDOMAIN|SRSPEC|SRTSTCD|SRFNDG|SRORES|SROBSV|SROBSQ|SRSEV|SRPCNT|SRSIGF|SRTRTEF|SRCOMNT"); retStr.append(System.getProperty("line.separator")); for (Finding finding : documentAnnotations.getFindings()) { - for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { - //STUDYID -- > Study Identifier - retStr.append(id); - retStr.append("|"); - //DOMAIN -- > Domain Abbreviation, always SR - retStr.append("SR"); - retStr.append("|"); - //SRSEQ -- > Sequence number - retStr.append(""); - retStr.append("|"); - //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD - retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); - retStr.append("|"); - //SPGRPCD --> Sponsor-defined Group Code, group 1 , A - retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); - retStr.append("|"); - //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); - retStr.append("|"); - //SRGRPDOS --> Group Dose Level, "20 mg/kg" - retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); - retStr.append("|"); - //SRSEX -- > Sex - retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); - retStr.append("|"); - //SRSTDY --> Study Day of Start of Finding - retStr.append(""); - retStr.append("|"); - //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” - retStr.append(""); - retStr.append("|"); - //SROBSTDY --> Start Phase Day of Observation - retStr.append(""); - retStr.append("|"); - //SRENPHSE -->Study Phase of last Observation - retStr.append(""); - retStr.append("|"); - //SRDOMAIN --> Domain of Finding - retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); - retStr.append("|"); - //SRSPEC --> Specimen of Finding - retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); - retStr.append("|"); - //SRTSTCD --> Test Short Name - retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); - retStr.append("|"); - //SRFNDG --> Finding - retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); - retStr.append("|"); - //SRORES --> Observation (original result) - retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); - retStr.append("|"); - //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) - retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); - retStr.append("|"); - //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ - retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); - retStr.append("|"); - //SRSEV --> Severity of Finding - retStr.append(""); - retStr.append("|"); - //SRPCNT --> Scale of this Finding - retStr.append(""); - retStr.append("|"); - //SRSIGF --> Statistical Significance - retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); - retStr.append("|"); - //SRTRTEF --> Treatment-Related - retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); - retStr.append("|"); - //SRCOMNT --> Comment - retStr.append("\n"); + if(finding.getSrDomainFindings()!=null) { + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + //STUDYID -- > Study Identifier + retStr.append(id); + retStr.append("|"); + //DOMAIN -- > Domain Abbreviation, always SR + retStr.append("SR"); + retStr.append("|"); + //SRSEQ -- > Sequence number + retStr.append(""); + retStr.append("|"); + //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD + retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); + retStr.append("|"); + //SPGRPCD --> Sponsor-defined Group Code, group 1 , A + retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); + retStr.append("|"); + //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" + retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); + retStr.append("|"); + //SRGRPDOS --> Group Dose Level, "20 mg/kg" + retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); + retStr.append("|"); + //SRSEX -- > Sex + retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); + retStr.append("|"); + //SRSTDY --> Study Day of Start of Finding + retStr.append(""); + retStr.append("|"); + //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” + retStr.append(""); + retStr.append("|"); + //SROBSTDY --> Start Phase Day of Observation + retStr.append(""); + retStr.append("|"); + //SRENPHSE -->Study Phase of last Observation + retStr.append(""); + retStr.append("|"); + //SRDOMAIN --> Domain of Finding + retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); + retStr.append("|"); + //SRSPEC --> Specimen of Finding + retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); + retStr.append("|"); + //SRTSTCD --> Test Short Name + retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); + retStr.append("|"); + //SRFNDG --> Finding + retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); + retStr.append("|"); + //SRORES --> Observation (original result) + retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); + retStr.append("|"); + //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) + retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); + retStr.append("|"); + //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ + retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); + retStr.append("|"); + //SRSEV --> Severity of Finding + retStr.append(""); + retStr.append("|"); + //SRPCNT --> Scale of this Finding + retStr.append(""); + retStr.append("|"); + //SRSIGF --> Statistical Significance + retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); + retStr.append("|"); + //SRTRTEF --> Treatment-Related + retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); + retStr.append("|"); + //SRCOMNT --> Comment + retStr.append("\n"); + } } + } return retStr.toString().getBytes(Charset.forName("UTF-8")); } -- GitLab From f6c3b0f1c32c5c2962c865edbf54466f343c76ad Mon Sep 17 00:00:00 2001 From: javi Date: Wed, 23 Jun 2021 18:22:50 +0200 Subject: [PATCH 05/11] error in export --- .../api/services/DocumentServiceImpl.java | 178 ++++++++---------- 1 file changed, 80 insertions(+), 98 deletions(-) diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java index 0063164..06c4573 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java @@ -45,6 +45,8 @@ public class DocumentServiceImpl implements DocumentService { @Autowired public DocumentAnnotationsRepository documentAnnotationsRepository; + static final Map ANNOTATION_CLASS_STYLE = createMap(); + public List findAll() { return documentRepository.findAllNamesByOrderByName(); } @@ -85,25 +87,7 @@ public class DocumentServiceImpl implements DocumentService { documentRepository.findByDocumentId(id); return documentRepository.findByDocumentId(id); } - - - static final Map ANNOTATION_CLASS_STYLE = createMap(); - -// @Override -// public String findTextSnippetByDocumentIdAndFindingId(Long id, Integer findingId) { -// Document document = this.findByDocumentId(id); -// Finding findingSelected = null; -// for (Finding finding : document.getFindings()) { -// if(finding.getFindingId().equals(findingId)) { -// findingSelected = finding; -// break; -// } -// } -// if(findingSelected!=null) { -// return this.generateFindingSnippet(document.getText(), findingSelected); -// } -// return ""; -// } + @Override public String findTextSnippetByDocumentIdAndFindingId2(Long id, Integer findingId) { @@ -111,12 +95,10 @@ public class DocumentServiceImpl implements DocumentService { Document document = this.findByDocumentId(id); Finding findingSelected = null; for (Finding finding : documentAnnotations.getFindings()) { - if(finding.getSrDomainFindings()!=null) { - if(finding.getFindingId().equals(findingId)) { + if(finding.getFindingId().equals(findingId)) { findingSelected = finding; break; } - } } if(findingSelected!=null) { @@ -270,84 +252,84 @@ public class DocumentServiceImpl implements DocumentService { StringBuilder retStr = new StringBuilder(""); retStr.append("STUDYID|DOMAIN|SRSEQ|SRRISK|SPGRPCD|GRPLBL|SRGRPDOS|SRSEX|SRSTDY|SRSTPHSE|SROBSTDY|SRENDY|SRENPHSE|SROBENDY|SRDOMAIN|SRSPEC|SRTSTCD|SRFNDG|SRORES|SROBSV|SROBSQ|SRSEV|SRPCNT|SRSIGF|SRTRTEF|SRCOMNT"); retStr.append(System.getProperty("line.separator")); - for (Finding finding : documentAnnotations.getFindings()) { - if(finding.getSrDomainFindings()!=null) { - for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { - //STUDYID -- > Study Identifier - retStr.append(id); - retStr.append("|"); - //DOMAIN -- > Domain Abbreviation, always SR - retStr.append("SR"); - retStr.append("|"); - //SRSEQ -- > Sequence number - retStr.append(""); - retStr.append("|"); - //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD - retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); - retStr.append("|"); - //SPGRPCD --> Sponsor-defined Group Code, group 1 , A - retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); - retStr.append("|"); - //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); - retStr.append("|"); - //SRGRPDOS --> Group Dose Level, "20 mg/kg" - retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); - retStr.append("|"); - //SRSEX -- > Sex - retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); - retStr.append("|"); - //SRSTDY --> Study Day of Start of Finding - retStr.append(""); - retStr.append("|"); - //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” - retStr.append(""); - retStr.append("|"); - //SROBSTDY --> Start Phase Day of Observation - retStr.append(""); - retStr.append("|"); - //SRENPHSE -->Study Phase of last Observation - retStr.append(""); - retStr.append("|"); - //SRDOMAIN --> Domain of Finding - retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); - retStr.append("|"); - //SRSPEC --> Specimen of Finding - retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); - retStr.append("|"); - //SRTSTCD --> Test Short Name - retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); - retStr.append("|"); - //SRFNDG --> Finding - retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); - retStr.append("|"); - //SRORES --> Observation (original result) - retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); - retStr.append("|"); - //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) - retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); - retStr.append("|"); - //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ - retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); - retStr.append("|"); - //SRSEV --> Severity of Finding - retStr.append(""); - retStr.append("|"); - //SRPCNT --> Scale of this Finding - retStr.append(""); - retStr.append("|"); - //SRSIGF --> Statistical Significance - retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); - retStr.append("|"); - //SRTRTEF --> Treatment-Related - retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); - retStr.append("|"); - //SRCOMNT --> Comment - retStr.append("\n"); + for (Annotation relevantSentences : documentAnnotations.getRelevantSentences()) { + for (Finding finding : relevantSentences.getFindings()) { + if(finding.getSrDomainFindings()!=null) { + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + //STUDYID -- > Study Identifier + retStr.append(id); + retStr.append("|"); + //DOMAIN -- > Domain Abbreviation, always SR + retStr.append("SR"); + retStr.append("|"); + //SRSEQ -- > Sequence number + retStr.append(""); + retStr.append("|"); + //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD + retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); + retStr.append("|"); + //SPGRPCD --> Sponsor-defined Group Code, group 1 , A + retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); + retStr.append("|"); + //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" + retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); + retStr.append("|"); + //SRGRPDOS --> Group Dose Level, "20 mg/kg" + retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); + retStr.append("|"); + //SRSEX -- > Sex + retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); + retStr.append("|"); + //SRSTDY --> Study Day of Start of Finding + retStr.append(""); + retStr.append("|"); + //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” + retStr.append(""); + retStr.append("|"); + //SROBSTDY --> Start Phase Day of Observation + retStr.append(""); + retStr.append("|"); + //SRENPHSE -->Study Phase of last Observation + retStr.append(""); + retStr.append("|"); + //SRDOMAIN --> Domain of Finding + retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); + retStr.append("|"); + //SRSPEC --> Specimen of Finding + retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); + retStr.append("|"); + //SRTSTCD --> Test Short Name + retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); + retStr.append("|"); + //SRFNDG --> Finding + retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); + retStr.append("|"); + //SRORES --> Observation (original result) + retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); + retStr.append("|"); + //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) + retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); + retStr.append("|"); + //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ + retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); + retStr.append("|"); + //SRSEV --> Severity of Finding + retStr.append(""); + retStr.append("|"); + //SRPCNT --> Scale of this Finding + retStr.append(""); + retStr.append("|"); + //SRSIGF --> Statistical Significance + retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); + retStr.append("|"); + //SRTRTEF --> Treatment-Related + retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); + retStr.append("|"); + //SRCOMNT --> Comment + retStr.append("\n"); + } } } - - } return retStr.toString().getBytes(Charset.forName("UTF-8")); } -- GitLab From 1fe1c23e8c97c60b21136c7d8d315c6b31923744 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Thu, 12 Aug 2021 14:04:36 +0000 Subject: [PATCH 06/11] Update .gitlab-ci.yml --- .gitlab-ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 54d6515..af566f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,8 +6,11 @@ stages: build_docker_image: stage: build script: - - docker login -u javicorvi -p $DOCKER_PASS - - docker build -t $DOCKER_BUILD . - - docker push $DOCKER_BUILD + #- docker login -u javicorvi -p $DOCKER_PASS + #- docker build -t registry.gitlab.bsc.es/ . + #- docker push $DOCKER_BUILD + - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.bsc.es + - docker build -t registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop . + - docker push registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop tags: - build -- GitLab From d13f8631a4677d098e7ab1ce947f8bfe7f1b0a10 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 29 Sep 2021 10:06:39 +0000 Subject: [PATCH 07/11] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af566f4..70a6e6d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,7 @@ build_docker_image: script: #- docker login -u javicorvi -p $DOCKER_PASS #- docker build -t registry.gitlab.bsc.es/ . - #- docker push $DOCKER_BUILD + #- docker push $DOCKER_BUILD - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.bsc.es - docker build -t registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop . - docker push registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop -- GitLab From cf19ecf7a1c1a986c5ecfa8fe9617154774b6cf3 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 29 Sep 2021 10:11:47 +0000 Subject: [PATCH 08/11] Update .gitlab-ci.yml --- .gitlab-ci.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 70a6e6d..1b1a027 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,8 @@ variables: - DOCKER_USER: javicorvi - DOCKER_BUILD: $DOCKER_USER/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + #DOCKER_USER: javicorvi + #DOCKER_BUILD: $DOCKER_USER/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + DOCKER_REGISTRY: registry.gitlab.bsc.es + IMAGE_FULL_PATH: $DOCKER_REGISTRY/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME stages: - build build_docker_image: @@ -9,8 +11,12 @@ build_docker_image: #- docker login -u javicorvi -p $DOCKER_PASS #- docker build -t registry.gitlab.bsc.es/ . #- docker push $DOCKER_BUILD - - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.bsc.es - - docker build -t registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop . - - docker push registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop + + #- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $DOCKER_REGISTRY + #- docker build -t registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop . + #- docker push registry.gitlab.bsc.es/inb/etransafe/pretox-rest-api:develop + - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $DOCKER_REGISTRY + - docker build -t $IMAGE_FULL_PATH . + - docker push $IMAGE_FULL_PATH tags: - build -- GitLab From 38d6aeab78eef216670dc215f669cdb567674624 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 29 Sep 2021 10:18:45 +0000 Subject: [PATCH 09/11] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1b1a027..1c94154 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,11 @@ variables: #DOCKER_USER: javicorvi #DOCKER_BUILD: $DOCKER_USER/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + DOCKER_REGISTRY: registry.gitlab.bsc.es - IMAGE_FULL_PATH: $DOCKER_REGISTRY/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME + #any doubts regarind gitlab ci cd enviroment variables go to + #https://docs.gitlab.com/ee/ci/variables/predefined_variables.html + IMAGE_FULL_PATH: $DOCKER_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_NAME stages: - build build_docker_image: -- GitLab From e24606cc4925dfbb19e5c2fc765ec6c832cee9a4 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Thu, 7 Oct 2021 15:56:45 +0200 Subject: [PATCH 10/11] development --- pom.xml | 5 +++- .../api/controllers/DocumentController.java | 7 ++++++ .../ades/rest/api/security/WebController.java | 4 ++-- .../basic/inmemory/AuthenticationBean.java | 24 +++++++++++++++++++ .../BasicAuthenticationController.java | 17 +++++++++++++ .../basic/inmemory/SecurityConfig.java | 24 +++++++++++++++++++ .../resources/application-prod.properties | 5 ++-- src/main/resources/application.properties | 3 ++- 8 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java create mode 100644 src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java create mode 100644 src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java diff --git a/pom.xml b/pom.xml index 4563bf9..e875981 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,10 @@ spring-boot-devtools true - + + org.springframework.boot + spring-boot-starter-security + Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD - retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); - retStr.append("|"); - //SPGRPCD --> Sponsor-defined Group Code, group 1 , A - retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); - retStr.append("|"); - //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); - retStr.append("|"); - //SRGRPDOS --> Group Dose Level, "20 mg/kg" - retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); - retStr.append("|"); - //SRSEX -- > Sex - retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); - retStr.append("|"); - //SRSTDY --> Study Day of Start of Finding - retStr.append(""); - retStr.append("|"); - //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” - retStr.append(""); - retStr.append("|"); - //SROBSTDY --> Start Phase Day of Observation - retStr.append(""); - retStr.append("|"); - //SRENPHSE -->Study Phase of last Observation - retStr.append(""); - retStr.append("|"); - //SRDOMAIN --> Domain of Finding - retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); - retStr.append("|"); - //SRSPEC --> Specimen of Finding - retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); - retStr.append("|"); - //SRTSTCD --> Test Short Name - retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); - retStr.append("|"); - //SRFNDG --> Finding - retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); - retStr.append("|"); - //SRORES --> Observation (original result) - retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); - retStr.append("|"); - //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) - retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); - retStr.append("|"); - //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ - retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); - retStr.append("|"); - //SRSEV --> Severity of Finding - retStr.append(""); - retStr.append("|"); - //SRPCNT --> Scale of this Finding - retStr.append(""); - retStr.append("|"); - //SRSIGF --> Statistical Significance - retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); - retStr.append("|"); - //SRTRTEF --> Treatment-Related - retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); - retStr.append("|"); - //SRCOMNT --> Comment - retStr.append("\n"); + if(srDomainFinding.getExport()) { + //STUDYID -- > Study Identifier + retStr.append(id); + retStr.append("|"); + //DOMAIN -- > Domain Abbreviation, always SR + retStr.append("SR"); + retStr.append("|"); + //SRSEQ -- > Sequence number + retStr.append(srDomainFinding.getSRSEQ()); + retStr.append("|"); + //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD + retStr.append(srDomainFinding.getSRRISK()==null?"":srDomainFinding.getSRRISK()); + retStr.append("|"); + //SPGRPCD --> Sponsor-defined Group Code, group 1 , A + retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); + retStr.append("|"); + //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" + retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); + retStr.append("|"); + //SRGRPDOS --> Group Dose Level, "20 mg/kg" + retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); + retStr.append("|"); + //SRSEX -- > Sex + retStr.append(srDomainFinding.getSRSEX()==null?"":srDomainFinding.getSRSEX()); + retStr.append("|"); + //SRSTDY --> Study Day of Start of Finding + retStr.append(""); + retStr.append("|"); + //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” + retStr.append(""); + retStr.append("|"); + //SROBSTDY --> Start Phase Day of Observation + retStr.append(""); + retStr.append("|"); + //SRENPHSE -->Study Phase of last Observation + retStr.append(""); + retStr.append("|"); + //SRDOMAIN --> Domain of Finding + retStr.append(srDomainFinding.getSRDOMAIN()==null?"":srDomainFinding.getSRDOMAIN()); + retStr.append("|"); + //SRSPEC --> Specimen of Finding + retStr.append(srDomainFinding.getSRSPEC()==null?"":srDomainFinding.getSRSPEC()); + retStr.append("|"); + //SRTSTCD --> Test Short Name + retStr.append(srDomainFinding.getSRTSTCD()==null?"":srDomainFinding.getSRTSTCD()); + retStr.append("|"); + //SRFNDG --> Finding + retStr.append(srDomainFinding.getSRFNDG()==null?"":srDomainFinding.getSRFNDG()); + retStr.append("|"); + //SRORES --> Observation (original result) + retStr.append(srDomainFinding.getSRORES()==null?"":srDomainFinding.getSRORES()); + retStr.append("|"); + //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) + retStr.append(srDomainFinding.getSROBSV()==null?"":srDomainFinding.getSROBSV()); + retStr.append("|"); + //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ + retStr.append(srDomainFinding.getSROBSQ()==null?"":srDomainFinding.getSROBSQ()); + retStr.append("|"); + //SRSEV --> Severity of Finding + retStr.append(""); + retStr.append("|"); + //SRPCNT --> Scale of this Finding + retStr.append(""); + retStr.append("|"); + //SRSIGF --> Statistical Significance + retStr.append(srDomainFinding.getSRSIGF()==null?"":srDomainFinding.getSRSIGF()); + retStr.append("|"); + //SRTRTEF --> Treatment-Related + retStr.append(srDomainFinding.getSRTRTEF()==null?"":srDomainFinding.getSRTRTEF()); + retStr.append("|"); + //SRCOMNT --> Comment + retStr.append("\n"); + } + } } } -- GitLab