Search in sources :

Example 1 with LoincId

use of org.monarchinitiative.loinc2hpo.loinc.LoincId in project loinc2hpo by monarch-initiative.

the class ObservationDownloader method iteratorHapiFHIRServer.

public static void iteratorHapiFHIRServer() {
    // printObservationInfo();
    // printPatientInfo();
    // BufferedReader bufferedReader = new BufferedReader(new FileReader(""));
    // find20CompleteRecordOfEachType();
    String path = null;
    HashMap<String, StringBuilder> completeObservations = new HashMap<>();
    completeObservations.put("Qn", new StringBuilder());
    completeObservations.put("Ord", new StringBuilder());
    completeObservations.put("Nom", new StringBuilder());
    completeObservations.put("Nar", new StringBuilder());
    completeObservations.put("OrdQn", new StringBuilder());
    completeObservations.put("unkown", new StringBuilder());
    HashMap<String, Integer> countComplete = new HashMap<>();
    countComplete.put("Qn", 0);
    countComplete.put("Ord", 0);
    countComplete.put("Nom", 0);
    countComplete.put("Nar", 0);
    countComplete.put("OrdQn", 0);
    countComplete.put("unknown", 0);
    HashMap<String, StringBuilder> accetableObservations = new HashMap<>();
    accetableObservations.put("Qn", new StringBuilder());
    accetableObservations.put("Ord", new StringBuilder());
    accetableObservations.put("Nom", new StringBuilder());
    accetableObservations.put("Nar", new StringBuilder());
    accetableObservations.put("OrdQn", new StringBuilder());
    accetableObservations.put("unknown", new StringBuilder());
    HashMap<String, Integer> countAccetable = new HashMap<>();
    countAccetable.put("Qn", 0);
    countAccetable.put("Ord", 0);
    countAccetable.put("Nom", 0);
    countAccetable.put("Nar", 0);
    countAccetable.put("OrdQn", 0);
    countAccetable.put("unknown", 0);
    JFileChooser chooser = new JFileChooser();
    int returnVal = chooser.showOpenDialog(null);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        path = chooser.getSelectedFile().getAbsolutePath();
        System.out.println(path);
        Map<LoincId, LoincEntry> loincEntryMap = LoincEntry.getLoincEntryList(path);
        System.out.println("size of loinc table: " + loincEntryMap.size());
        for (LoincEntry loincEntry : loincEntryMap.values()) {
            if (countComplete.containsKey(loincEntry.getScale()) && countComplete.get(loincEntry.getScale()) < 50) {
                try {
                    List<Observation> results = ObservationDownloader.retrieveObservation(loincEntry.getLOINC_Number().toString());
                    if (results != null && !results.isEmpty()) {
                        for (Observation observation : results) {
                            if (isComplte(observation)) {
                                String aCompleteRecord = jsonParser.setPrettyPrint(true).encodeResourceToString(observation);
                                if (completeObservations.containsKey(loincEntry.getScale())) {
                                    completeObservations.get(loincEntry.getScale()).append(aCompleteRecord);
                                    completeObservations.get(loincEntry.getScale()).append("\n\n");
                                    completeObservations.get(loincEntry.getScale()).append(Character.toString((char) 12));
                                    countComplete.put(loincEntry.getScale(), countComplete.get(loincEntry.getScale()) + 1);
                                } else {
                                    completeObservations.get("unknown").append(aCompleteRecord);
                                    completeObservations.get("unknown").append("\n\n");
                                    completeObservations.get("unknown").append(Character.toString((char) 12));
                                    countComplete.put("unknown", countAccetable.get("unknown") + 1);
                                }
                                continue;
                            }
                            if (isAcceptable(observation)) {
                                String aAcceptableRecord = jsonParser.setPrettyPrint(true).encodeResourceToString(observation);
                                if (accetableObservations.containsKey(loincEntry.getScale()) && countAccetable.get(loincEntry.getScale()) < 50) {
                                    accetableObservations.get(loincEntry.getScale()).append(aAcceptableRecord);
                                    accetableObservations.get(loincEntry.getScale()).append("\n\n");
                                    accetableObservations.get(loincEntry.getScale()).append(Character.toString((char) 12));
                                    countAccetable.put(loincEntry.getScale(), countAccetable.get(loincEntry.getScale()) + 1);
                                } else if (countAccetable.get("unknown") < 50) {
                                    accetableObservations.get("unknown").append(aAcceptableRecord);
                                    accetableObservations.get("unknown").append("\n\n");
                                    accetableObservations.get("unknown").append(Character.toString((char) 12));
                                    countAccetable.put("unknown", countAccetable.get("unknown") + 1);
                                }
                            }
                        }
                    }
                } catch (Exception e) {
                    continue;
                }
            }
        }
    }
    for (String scale : completeObservations.keySet()) {
        if (!completeObservations.get(scale).toString().isEmpty()) {
            WriteToFile.writeToFile(completeObservations.get(scale).toString(), scale + "_complteObservations.txt");
        } else {
            System.out.println("No complete observations were found for loinc scale type: " + scale);
        }
    }
    for (String scale : accetableObservations.keySet()) {
        if (!accetableObservations.get(scale).toString().isEmpty()) {
            WriteToFile.writeToFile(accetableObservations.get(scale).toString(), scale + "_acceptableObservations.txt");
        } else {
            System.out.println("No acceptable observations were found for loinc scale type: " + scale);
        }
    }
}
Also used : HashMap(java.util.HashMap) LoincEntry(org.monarchinitiative.loinc2hpo.loinc.LoincEntry) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) JFileChooser(javax.swing.JFileChooser)

Example 2 with LoincId

use of org.monarchinitiative.loinc2hpo.loinc.LoincId in project loinc2hpo by monarch-initiative.

the class ObservationAnalysisFromCodedValues method getHPOforObservation.

@Override
public HpoTermId4LoincTest getHPOforObservation() throws AmbiguousResultsFoundException, UnrecognizedCodeException, AnnotationNotFoundException {
    if (annotationMap.get(loincId) == null)
        throw new AnnotationNotFoundException();
    Set<HpoTermId4LoincTest> results = new HashSet<>();
    codedValue.getCoding().stream().filter(p -> annotationMap.get(loincId).getCodes().contains(new Code(p))).forEach(p -> results.add(annotationMap.get(loincId).loincInterpretationToHPO(new Code(p))));
    if (results.size() > 1) {
        throw new AmbiguousResultsFoundException();
    }
    if (results.size() == 1) {
        return results.iterator().next();
    } else {
        throw new UnrecognizedCodeException();
    }
}
Also used : AmbiguousResultsFoundException(org.monarchinitiative.loinc2hpo.exception.AmbiguousResultsFoundException) Set(java.util.Set) CodeableConcept(org.hl7.fhir.dstu3.model.CodeableConcept) UnrecognizedCodeException(org.monarchinitiative.loinc2hpo.exception.UnrecognizedCodeException) Observation(org.hl7.fhir.dstu3.model.Observation) HashSet(java.util.HashSet) Logger(org.apache.logging.log4j.Logger) HpoTermId4LoincTest(org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) UniversalLoinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.UniversalLoinc2HPOAnnotation) Loinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.Loinc2HPOAnnotation) Map(java.util.Map) FHIRException(org.hl7.fhir.exceptions.FHIRException) Code(org.monarchinitiative.loinc2hpo.codesystems.Code) AnnotationNotFoundException(org.monarchinitiative.loinc2hpo.exception.AnnotationNotFoundException) LogManager(org.apache.logging.log4j.LogManager) UnrecognizedCodeException(org.monarchinitiative.loinc2hpo.exception.UnrecognizedCodeException) AnnotationNotFoundException(org.monarchinitiative.loinc2hpo.exception.AnnotationNotFoundException) AmbiguousResultsFoundException(org.monarchinitiative.loinc2hpo.exception.AmbiguousResultsFoundException) HpoTermId4LoincTest(org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest) Code(org.monarchinitiative.loinc2hpo.codesystems.Code) HashSet(java.util.HashSet)

Example 3 with LoincId

use of org.monarchinitiative.loinc2hpo.loinc.LoincId in project loinc2hpo by monarch-initiative.

the class ObservationAnalysisFromQnValue method getHPOforObservation.

@Override
public HpoTermId4LoincTest getHPOforObservation() throws ReferenceNotFoundException, AmbiguousReferenceException, UnrecognizedCodeException {
    HpoTermId4LoincTest hpoTermId4LoincTest = null;
    // find applicable reference range
    List<Observation.ObservationReferenceRangeComponent> references = this.references.stream().filter(p -> withinAgeRange(p)).collect(Collectors.toList());
    if (references.size() < 1) {
        throw new ReferenceNotFoundException();
    } else if (references.size() == 1) {
        Observation.ObservationReferenceRangeComponent targetReference = references.get(0);
        double low = targetReference.hasLow() ? targetReference.getLow().getValue().doubleValue() : Double.MIN_VALUE;
        double high = targetReference.hasHigh() ? targetReference.getHigh().getValue().doubleValue() : Double.MAX_VALUE;
        double observed = valueQuantity.getValue().doubleValue();
        Loinc2HPOCodedValue result;
        if (observed < low) {
            result = Loinc2HPOCodedValue.fromCode("L");
        } else if (observed > high) {
            result = Loinc2HPOCodedValue.fromCode("H");
        } else {
            result = Loinc2HPOCodedValue.fromCode("N");
        }
        Code resultCode = Code.getNewCode().setSystem(Loinc2HPOCodedValue.CODESYSTEM).setCode(result.toCode());
        hpoTermId4LoincTest = annotationMap.get(loincId).loincInterpretationToHPO(resultCode);
    } else if (references.size() == 2) {
        // what does it mean with multiple references
        throw new AmbiguousReferenceException();
    } else if (references.size() == 3) {
    // it can happen when there is actually one range but coded in three ranges
    // e.g. normal 20-30
    // in this case, one range ([20, 30]) is sufficient;
    // however, it is written as three ranges: ( , 20) [20, 30] (30, )
    // We should handle this case
    } else {
        throw new AmbiguousReferenceException();
    }
    // if we can still not find an answer, it is probably that we did not have the annotation
    if (hpoTermId4LoincTest == null)
        throw new UnrecognizedCodeException();
    return hpoTermId4LoincTest;
}
Also used : AgeCalculator(org.monarchinitiative.loinc2hpo.util.AgeCalculator) Date(java.util.Date) Loinc2HPOCodedValue(org.monarchinitiative.loinc2hpo.codesystems.Loinc2HPOCodedValue) org.monarchinitiative.loinc2hpo.exception(org.monarchinitiative.loinc2hpo.exception) Collectors(java.util.stream.Collectors) BigDecimal(java.math.BigDecimal) List(java.util.List) HpoTermId4LoincTest(org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) UniversalLoinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.UniversalLoinc2HPOAnnotation) Loinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.Loinc2HPOAnnotation) Year(java.time.Year) LocalDate(java.time.LocalDate) Map(java.util.Map) org.hl7.fhir.dstu3.model(org.hl7.fhir.dstu3.model) FHIRException(org.hl7.fhir.exceptions.FHIRException) Code(org.monarchinitiative.loinc2hpo.codesystems.Code) Loinc2HPOCodedValue(org.monarchinitiative.loinc2hpo.codesystems.Loinc2HPOCodedValue) HpoTermId4LoincTest(org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest) Code(org.monarchinitiative.loinc2hpo.codesystems.Code)

Example 4 with LoincId

use of org.monarchinitiative.loinc2hpo.loinc.LoincId in project loinc2hpo by monarch-initiative.

the class WriteToFile method fromTSV.

/**
 * A method to deserialize annotation map from a TSV file.
 * @param path filepath to the TSV
 * @param hpoTermMap a HPO map from TermId to HpoTerm. Note: the key is TermId, instead of TermName
 * @return an annotation map
 * @throws FileNotFoundException
 */
public static Map<LoincId, UniversalLoinc2HPOAnnotation> fromTSV(String path, Map<TermId, HpoTerm> hpoTermMap) throws FileNotFoundException {
    Map<LoincId, UniversalLoinc2HPOAnnotation> deserializedMap = new LinkedHashMap<>();
    Map<LoincId, UniversalLoinc2HPOAnnotation.Builder> builderMap = new HashMap<>();
    Map<String, Code> internalCode = CodeSystemConvertor.getCodeContainer().getCodeSystemMap().get(Loinc2HPOCodedValue.CODESYSTEM);
    BufferedReader reader = new BufferedReader(new FileReader(path));
    reader.lines().forEach(serialized -> {
        String[] elements = serialized.split("\\t");
        if (elements.length == 13 && !serialized.startsWith("loincId")) {
            try {
                LoincId loincId = new LoincId(elements[0]);
                LoincScale loincScale = LoincScale.string2enum(elements[1]);
                String codeSystem = elements[2];
                String codeId = elements[3];
                TermPrefix prefix = new ImmutableTermPrefix(elements[4].substring(0, 2));
                String id = elements[4].substring(3);
                HpoTerm hpoTerm = hpoTermMap.get(new ImmutableTermId(prefix, id));
                boolean inverse = Boolean.parseBoolean(elements[5]);
                String note = elements[6].equals(MISSINGVALUE) ? null : elements[6];
                boolean flag = Boolean.parseBoolean(elements[7]);
                double version = Double.parseDouble(elements[8]);
                LocalDateTime createdOn = elements[9].equals(MISSINGVALUE) ? null : LocalDateTime.parse(elements[9]);
                String createdBy = elements[10].equals(MISSINGVALUE) ? null : elements[10];
                LocalDateTime lastEditedOn = elements[11].equals(MISSINGVALUE) ? null : LocalDateTime.parse(elements[11]);
                String lastEditedBy = elements[12].equals(MISSINGVALUE) ? null : elements[12];
                if (!builderMap.containsKey(loincId)) {
                    UniversalLoinc2HPOAnnotation.Builder builder = new UniversalLoinc2HPOAnnotation.Builder().setLoincId(loincId).setLoincScale(loincScale).setNote(note).setFlag(flag).setVersion(version).setCreatedOn(createdOn).setCreatedBy(createdBy).setLastEditedOn(lastEditedOn).setLastEditedBy(lastEditedBy);
                    builderMap.put(loincId, builder);
                }
                Code code = Code.getNewCode().setSystem(codeSystem).setCode(codeId);
                HpoTermId4LoincTest hpoTermId4LoincTest = new HpoTermId4LoincTest(hpoTerm, inverse);
                if (code.equals(internalCode.get("L"))) {
                    builderMap.get(loincId).setLowValueHpoTerm(hpoTermId4LoincTest.getHpoTerm());
                }
                if (code.equals(internalCode.get("N"))) {
                    builderMap.get(loincId).setIntermediateValueHpoTerm(hpoTermId4LoincTest.getHpoTerm());
                    builderMap.get(loincId).setIntermediateNegated(hpoTermId4LoincTest.isNegated());
                }
                if (code.equals(internalCode.get("H"))) {
                    builderMap.get(loincId).setHighValueHpoTerm(hpoTermId4LoincTest.getHpoTerm());
                }
                if (code.equals(internalCode.get("A")) || code.equals(internalCode.get("P")) || code.equals(internalCode.get("NP"))) {
                    // currently, we neglect those codes
                    // it will be wrong to do so if the user has manually changed what map to them
                    logger.info("!!!!!!!!!!!annotation neglected. MAY BE WRONG!!!!!!!!!!!!!!!");
                } else {
                    builderMap.get(loincId).addAdvancedAnnotation(code, hpoTermId4LoincTest);
                }
            } catch (MalformedLoincCodeException e) {
                logger.error("Malformed loinc code line: " + serialized);
            }
        } else {
            if (elements.length != 13) {
                logger.error(String.format("line does not have 13 elements, but has %d elements. Line: %s", elements.length, serialized));
            } else {
                logger.info("line is header: " + serialized);
            }
        }
    });
    try {
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    builderMap.entrySet().forEach(b -> deserializedMap.put(b.getKey(), b.getValue().build()));
    return deserializedMap;
}
Also used : LocalDateTime(java.time.LocalDateTime) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) LinkedHashMap(java.util.LinkedHashMap) HpoTermId4LoincTest(org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest) LoincScale(org.monarchinitiative.loinc2hpo.loinc.LoincScale) TermPrefix(com.github.phenomics.ontolib.ontology.data.TermPrefix) ImmutableTermPrefix(com.github.phenomics.ontolib.ontology.data.ImmutableTermPrefix) UniversalLoinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.UniversalLoinc2HPOAnnotation) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) MalformedLoincCodeException(org.monarchinitiative.loinc2hpo.exception.MalformedLoincCodeException) Code(org.monarchinitiative.loinc2hpo.codesystems.Code) HpoTerm(com.github.phenomics.ontolib.formats.hpo.HpoTerm) ImmutableTermId(com.github.phenomics.ontolib.ontology.data.ImmutableTermId) ImmutableTermPrefix(com.github.phenomics.ontolib.ontology.data.ImmutableTermPrefix)

Example 5 with LoincId

use of org.monarchinitiative.loinc2hpo.loinc.LoincId in project loinc2hpo by monarch-initiative.

the class MainController method openSession.

protected void openSession(String pathToOpen) {
    // This is deprecated. keep this only temperoly
    // there should be one default file, "annotations.tsv",
    // one default folder "LOINC category", which should have two files "require_new_HPO_terms.txt", "unable_to_annotate.txt" by default (and possibility others)
    /**
     *        String annotationsFilePath = pathToOpen + File.separator + "annotations.tsv";
     *        if (new File(annotationsFilePath).exists()) {
     *            loinc2HpoAnnotationsTabController.tempimportLoincAnnotation(annotationsFilePath);
     *        }
     */
    loinc2HpoAnnotationsTabController.importLoincAnnotation(pathToOpen);
    File loinc_category_folder = new File(pathToOpen + File.separator + LOINC_CATEGORY_folder);
    if (!loinc_category_folder.exists() || !loinc_category_folder.isDirectory()) {
        return;
    }
    File[] files = loinc_category_folder.listFiles();
    if (files == null) {
        return;
    } else {
        for (File file : files) {
            try {
                LoincOfInterest loincCategory = new LoincOfInterest(file.getAbsolutePath());
                Set<String> loincIdStrings = loincCategory.getLoincOfInterest();
                String categoryName = file.getName();
                if (categoryName.endsWith(".txt")) {
                    categoryName = categoryName.substring(0, file.getName().length() - 4);
                }
                Set<LoincId> loincIds = loincIdStrings.stream().map(p -> {
                    try {
                        return new LoincId(p);
                    } catch (MalformedLoincCodeException e1) {
                        logger.error("This should never happen since the loincids are automatically saved");
                    }
                    return null;
                }).collect(Collectors.toSet());
                if (!annotateTabController.userCreatedLoincLists.contains(categoryName)) {
                    annotateTabController.userCreatedLoincLists.add(categoryName);
                }
                model.addUserCreatedLoincList(categoryName, loincIds);
            } catch (FileNotFoundException e1) {
                logger.error("This should never happen since the folder is autogenerated.");
            }
        }
        annotateTabController.changeColorLoincTableView();
    }
}
Also used : PopUps(org.monarchinitiative.loinc2hpo.gui.PopUps) WriteToFile(org.monarchinitiative.loinc2hpo.io.WriteToFile) POP(com.sun.org.apache.bcel.internal.generic.POP) javafx.scene.control(javafx.scene.control) Inject(com.google.inject.Inject) Task(javafx.concurrent.Task) PopUps.getStringFromUser(org.monarchinitiative.loinc2hpo.gui.PopUps.getStringFromUser) MalformedLoincCodeException(org.monarchinitiative.loinc2hpo.exception.MalformedLoincCodeException) Path(java.nio.file.Path) Loinc2HpoPlatform(org.monarchinitiative.loinc2hpo.io.Loinc2HpoPlatform) MapChangeListener(javafx.collections.MapChangeListener) Border(javafx.scene.layout.Border) Event(javafx.event.Event) Sys(org.apache.jena.dboe.sys.Sys) ObservableMapValue(javafx.beans.value.ObservableMapValue) Collectors(java.util.stream.Collectors) WindowEvent(java.awt.event.WindowEvent) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) BooleanProperty(javafx.beans.property.BooleanProperty) Logger(org.apache.logging.log4j.Logger) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) FlowPane(javafx.scene.layout.FlowPane) BorderPane(javafx.scene.layout.BorderPane) Singleton(com.google.inject.Singleton) Scene(javafx.scene.Scene) Main(org.monarchinitiative.loinc2hpo.gui.Main) java.util(java.util) SimpleDateFormat(java.text.SimpleDateFormat) SystemProperties(com.sun.javafx.runtime.SystemProperties) Insets(javafx.geometry.Insets) Downloader(org.monarchinitiative.loinc2hpo.io.Downloader) DirectoryChooser(javafx.stage.DirectoryChooser) Files(java.nio.file.Files) Model(org.monarchinitiative.loinc2hpo.model.Model) WindowCloseRequestHandler(com.sun.javafx.stage.WindowCloseRequestHandler) MouseEvent(java.awt.event.MouseEvent) LoincOfInterest(org.monarchinitiative.loinc2hpo.io.LoincOfInterest) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) UniversalLoinc2HPOAnnotation(org.monarchinitiative.loinc2hpo.loinc.UniversalLoinc2HPOAnnotation) Stage(javafx.stage.Stage) java.io(java.io) Paths(java.nio.file.Paths) HelpViewFactory(org.monarchinitiative.loinc2hpo.gui.HelpViewFactory) SettingsViewFactory(org.monarchinitiative.loinc2hpo.gui.SettingsViewFactory) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) LoincOfInterest(org.monarchinitiative.loinc2hpo.io.LoincOfInterest) LoincId(org.monarchinitiative.loinc2hpo.loinc.LoincId) MalformedLoincCodeException(org.monarchinitiative.loinc2hpo.exception.MalformedLoincCodeException) WriteToFile(org.monarchinitiative.loinc2hpo.io.WriteToFile)

Aggregations

LoincId (org.monarchinitiative.loinc2hpo.loinc.LoincId)9 UniversalLoinc2HPOAnnotation (org.monarchinitiative.loinc2hpo.loinc.UniversalLoinc2HPOAnnotation)6 HpoTermId4LoincTest (org.monarchinitiative.loinc2hpo.loinc.HpoTermId4LoincTest)5 MalformedLoincCodeException (org.monarchinitiative.loinc2hpo.exception.MalformedLoincCodeException)4 ImmutableTermId (com.github.phenomics.ontolib.ontology.data.ImmutableTermId)3 Code (org.monarchinitiative.loinc2hpo.codesystems.Code)3 TermId (com.github.phenomics.ontolib.ontology.data.TermId)2 LocalDateTime (java.time.LocalDateTime)2 HashMap (java.util.HashMap)2 LinkedHashMap (java.util.LinkedHashMap)2 Map (java.util.Map)2 Collectors (java.util.stream.Collectors)2 FXML (javafx.fxml.FXML)2 FHIRException (org.hl7.fhir.exceptions.FHIRException)2 WriteToFile (org.monarchinitiative.loinc2hpo.io.WriteToFile)2 Loinc2HPOAnnotation (org.monarchinitiative.loinc2hpo.loinc.Loinc2HPOAnnotation)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 HpoTerm (com.github.phenomics.ontolib.formats.hpo.HpoTerm)1 ImmutableTermPrefix (com.github.phenomics.ontolib.ontology.data.ImmutableTermPrefix)1 TermPrefix (com.github.phenomics.ontolib.ontology.data.TermPrefix)1