Skip to content

Commit

Permalink
Ignore TI level when parsing evidence type and known effect
Browse files Browse the repository at this point in the history
  • Loading branch information
calvinlu3 committed Jul 1, 2024
1 parent e1b0928 commit 04bf956
Showing 1 changed file with 74 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javafx.util.Pair;

import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
Expand Down Expand Up @@ -601,73 +603,55 @@ private void parseCancer(Gene gene, Set<Alteration> alterations, JSONObject canc
for (int i = 0; i < implications.length(); i++) {
JSONObject implication = implications.getJSONObject(i);
if ((implication.has("description") && !implication.getString("description").trim().isEmpty()) || (implication.has("treatments") && implication.getJSONArray("treatments").length() > 0)) {
EvidenceType evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_SENSITIVITY;
String type = "";
if (implication.has("type")) {
if (implication.getString("type").equals("SS")) {
evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_SENSITIVITY;
type = "Sensitive";
} else if (implication.getString("type").equals("SR")) {
evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_RESISTANCE;
type = "Resistant";
}
if (implication.getString("type").equals("IS")) {
evidenceType = EvidenceType.INVESTIGATIONAL_THERAPEUTIC_IMPLICATIONS_DRUG_SENSITIVITY;
type = "Sensitive";
} else if (implication.getString("type").equals("IR")) {
evidenceType = EvidenceType.INVESTIGATIONAL_THERAPEUTIC_IMPLICATIONS_DRUG_RESISTANCE;
type = "Resistant";
}
parseTherapeuticImplications(gene, alterations, tumorTypes, excludedCancerTypes, relevantCancerTypes, implication, evidenceType, type, nestLevel + 1);
}
parseTherapeuticImplications(gene, alterations, tumorTypes, excludedCancerTypes, relevantCancerTypes, implication, nestLevel + 1);
}
}
}

private void parseTherapeuticImplications(Gene gene, Set<Alteration> alterations, List<TumorType> tumorTypes, List<TumorType> excludedCancerTypes, List<TumorType> relevantCancerTypes, JSONObject implicationObj,
EvidenceType evidenceType, String knownEffectOfEvidence, Integer nestLevel) throws Exception {
System.out.println(spaceStrByNestLevel(nestLevel) + evidenceType);
Integer nestLevel) throws Exception {
// System.out.println(spaceStrByNestLevel(nestLevel) + evidenceType);

EvidenceBo evidenceBo = ApplicationContextSingleton.getEvidenceBo();

if (implicationObj.has("description") && !implicationObj.getString("description").trim().isEmpty()) {
// general description
System.out.println(spaceStrByNestLevel(nestLevel + 1) + "Has General Description.");
Date lastEdit = getLastEdit(implicationObj, "description");
// Date lastReview = getLastReview(implicationObj, "description");
Evidence evidence = new Evidence();
evidence.setEvidenceType(evidenceType);
evidence.setAlterations(alterations);
evidence.setGene(gene);
evidence.setCancerTypes(new HashSet<>(tumorTypes));
evidence.setKnownEffect(knownEffectOfEvidence);
evidence.setUuid(getUUID(implicationObj, "description"));
evidence.setLastEdit(lastEdit);
// evidence.setLastReview(lastReview);
if (lastEdit != null) {
System.out.println(spaceStrByNestLevel(nestLevel + 1) +
"Last update on: " + MainUtils.getTimeByDate(lastEdit));
}
// if (lastReview != null) {
// System.out.println(spaceStrByNestLevel(nestLevel + 1) +
// "Last review on: " + MainUtils.getTimeByDate(lastReview));
// }
String desc = implicationObj.getString("description");
evidence.setDescription(desc);
setDocuments(desc, evidence);

if (excludedCancerTypes != null) {
evidence.setExcludedCancerTypes(new HashSet<>(excludedCancerTypes));
}

if (implicationObj.has("relevantCancerTypes")) {
evidence.setRelevantCancerTypes(new HashSet<>(getTumorTypes(implicationObj.getJSONArray("relevantCancerTypes"))));
} else if (relevantCancerTypes != null) {
evidence.setRelevantCancerTypes(new HashSet<>(relevantCancerTypes));
}

evidenceBo.save(evidence);
}
// if (implicationObj.has("description") && !implicationObj.getString("description").trim().isEmpty()) {
// // general description
// System.out.println(spaceStrByNestLevel(nestLevel + 1) + "Has General Description.");
// Date lastEdit = getLastEdit(implicationObj, "description");
// // Date lastReview = getLastReview(implicationObj, "description");
// Evidence evidence = new Evidence();
// evidence.setEvidenceType(evidenceType);
// evidence.setAlterations(alterations);
// evidence.setGene(gene);
// evidence.setCancerTypes(new HashSet<>(tumorTypes));
// evidence.setKnownEffect(knownEffectOfEvidence);
// evidence.setUuid(getUUID(implicationObj, "description"));
// evidence.setLastEdit(lastEdit);
// // evidence.setLastReview(lastReview);
// if (lastEdit != null) {
// System.out.println(spaceStrByNestLevel(nestLevel + 1) +
// "Last update on: " + MainUtils.getTimeByDate(lastEdit));
// }
// // if (lastReview != null) {
// // System.out.println(spaceStrByNestLevel(nestLevel + 1) +
// // "Last review on: " + MainUtils.getTimeByDate(lastReview));
// // }
// String desc = implicationObj.getString("description");
// evidence.setDescription(desc);
// setDocuments(desc, evidence);

// if (excludedCancerTypes != null) {
// evidence.setExcludedCancerTypes(new HashSet<>(excludedCancerTypes));
// }

// if (implicationObj.has("relevantCancerTypes")) {
// evidence.setRelevantCancerTypes(new HashSet<>(getTumorTypes(implicationObj.getJSONArray("relevantCancerTypes"))));
// } else if (relevantCancerTypes != null) {
// evidence.setRelevantCancerTypes(new HashSet<>(relevantCancerTypes));
// }

// evidenceBo.save(evidence);
// }

// specific evidence
DrugBo drugBo = ApplicationContextSingleton.getDrugBo();
Expand All @@ -688,12 +672,14 @@ private void parseTherapeuticImplications(Gene gene, Set<Alteration> alterations
addDateToLastEditSetFromObject(lastEditDates, drugObj, "name");
// addDateToLastReviewSetFromLong(lastReviewDates, drugObj, "name");

Pair<EvidenceType, String> evidenceTypeAndKnownEffect = getEvidenceTypeAndKnownEffectFromDrugObj(drugObj);

Evidence evidence = new Evidence();
evidence.setEvidenceType(evidenceType);
evidence.setEvidenceType(evidenceTypeAndKnownEffect.getKey());
evidence.setAlterations(alterations);
evidence.setGene(gene);
evidence.setCancerTypes(new HashSet<>(tumorTypes));
evidence.setKnownEffect(knownEffectOfEvidence);
evidence.setKnownEffect(evidenceTypeAndKnownEffect.getValue());
evidence.setUuid(getUUID(drugObj, "name"));

// approved indications
Expand Down Expand Up @@ -1040,4 +1026,31 @@ private Date getMostRecentDate(Set<Date> dates) {
return null;
return Collections.max(dates);
}

private Pair<EvidenceType, String> getEvidenceTypeAndKnownEffectFromDrugObj(JSONObject drugObj) {
if(!drugObj.has("level") || drugObj.getString("level").trim().isEmpty()) {
return null;
}
String level = drugObj.getString("level").trim();
LevelOfEvidence levelOfEvidence = LevelOfEvidence.getByLevel(level.toUpperCase());

EvidenceType evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_SENSITIVITY;
String type = "";
if (LevelOfEvidence.LEVEL_1.equals(levelOfEvidence) || LevelOfEvidence.LEVEL_2.equals(levelOfEvidence)) {
evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_SENSITIVITY;
type = "Sensitive";
} else if (LevelOfEvidence.LEVEL_R1.equals(levelOfEvidence)) {
evidenceType = EvidenceType.STANDARD_THERAPEUTIC_IMPLICATIONS_FOR_DRUG_RESISTANCE;
type = "Resistant";
}
if (LevelOfEvidence.LEVEL_3A.equals(levelOfEvidence) || LevelOfEvidence.LEVEL_4.equals(levelOfEvidence)) {
evidenceType = EvidenceType.INVESTIGATIONAL_THERAPEUTIC_IMPLICATIONS_DRUG_SENSITIVITY;
type = "Sensitive";
} else if (LevelOfEvidence.LEVEL_R2.equals(levelOfEvidence)) {
evidenceType = EvidenceType.INVESTIGATIONAL_THERAPEUTIC_IMPLICATIONS_DRUG_RESISTANCE;
type = "Resistant";
}

return new Pair<EvidenceType, String>(evidenceType, type);
}
}

0 comments on commit 04bf956

Please sign in to comment.