public ClinicalInterpretationManager(CatalogManager catalogManager, StorageEngineFactory storageEngineFactory) { super(catalogManager, storageEngineFactory); clinicalAnalysisManager = catalogManager.getClinicalAnalysisManager(); this.init(); }
private ClinicalAnalysis getClinicalAnalysis() throws CatalogException { assert(null != catalogManager); if (StringUtils.isNotEmpty(clinicalAnalysisId)) { final ClinicalAnalysisManager clinicalAnalysisManager = catalogManager.getClinicalAnalysisManager(); // have to convert session QueryResult<ClinicalAnalysis> clinicalAnalyses = clinicalAnalysisManager.get( studyStr, clinicalAnalysisId, QueryOptions.empty(), sessionId ); clinicalAnalysis = clinicalAnalyses.first(); return clinicalAnalysis; } return null; }
@Override public QueryResult<Interpretation> get(String studyStr, Query query, QueryOptions options, String sessionId) throws CatalogException { query = ParamUtils.defaultObject(query, Query::new); options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = catalogManager.getUserManager().getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); query.append(InterpretationDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Interpretation> queryResult = interpretationDBAdaptor.get(query, options, userId); List<Interpretation> results = new ArrayList<>(queryResult.getResult().size()); for (Interpretation interpretation : queryResult.getResult()) { if (StringUtils.isNotEmpty(interpretation.getInterpretation().getClinicalAnalysisId())) { try { catalogManager.getClinicalAnalysisManager().smartResolutor(study.getUid(), interpretation.getInterpretation().getClinicalAnalysisId(), userId); results.add(interpretation); } catch (CatalogException e) { logger.debug("Removing interpretation " + interpretation.getUuid() + " from results. User " + userId + " does not have " + "proper permissions"); } } } queryResult.setResult(results); queryResult.setNumTotalResults(results.size()); queryResult.setNumResults(results.size()); return queryResult; }
private void checkInterpretationPermissions(String study, long interpretationId, String token) throws CatalogException, ClinicalVariantException { // Get user ID from token and study numeric ID String userId = catalogManager.getUserManager().getUserId(token); String studyId = catalogManager.getStudyManager().resolveId(study, userId).getFqn(); // This checks that the user has permission to this interpretation Query query = new Query(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATIONS_ID.key(), interpretationId); QueryResult<ClinicalAnalysis> clinicalAnalysisQueryResult = catalogManager.getClinicalAnalysisManager() .get(studyId, query, QueryOptions.empty(), token); if (clinicalAnalysisQueryResult.getResult().isEmpty()) { throw new ClinicalVariantException("Either the interpretation ID (" + interpretationId + ") does not exist or the user does" + " not have access permissions"); } }
if (studyIds.size() == 1) { QueryResult<ClinicalAnalysis> clinicalAnalysisQueryResult = catalogManager.getClinicalAnalysisManager() .get(studyIds.get(0), query, QueryOptions.empty(), token);
public QueryResult<Interpretation> create(String studyStr, String clinicalAnalysisStr, Interpretation interpretation, QueryOptions options, String sessionId) throws CatalogException { // We check if the user can create interpretations in the clinical analysis MyResource<ClinicalAnalysis> resource = catalogManager.getClinicalAnalysisManager() .getUid(clinicalAnalysisStr, studyStr, sessionId); authorizationManager.checkClinicalAnalysisPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), ClinicalAnalysisAclEntry.ClinicalAnalysisPermissions.UPDATE); options = ParamUtils.defaultObject(options, QueryOptions::new); ParamUtils.checkObj(interpretation, "clinicalAnalysis"); ParamUtils.checkAlias(interpretation.getInterpretation().getId(), "id"); interpretation.getInterpretation().setCreationDate(TimeUtils.getTime()); interpretation.getInterpretation().setDescription( ParamUtils.defaultString(interpretation.getInterpretation().getDescription(), "")); interpretation.getInterpretation().setStatus(Status.READY); interpretation.getInterpretation().setAttributes( ParamUtils.defaultObject(interpretation.getInterpretation().getAttributes(), Collections.emptyMap())); interpretation.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.INTERPRETATION)); QueryResult<Interpretation> queryResult = interpretationDBAdaptor.insert(resource.getStudy().getUid(), interpretation, options); // Now, we add the interpretation to the clinical analysis ObjectMap parameters = new ObjectMap(); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATIONS.key(), Arrays.asList(interpretation)); Map<String, Object> actionMap = new HashMap<>(); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATIONS.key(), ParamUtils.UpdateAction.ADD.name()); parameters.put(Constants.ACTIONS, actionMap); catalogManager.getClinicalAnalysisManager().update(resource.getStudy().getFqn(), clinicalAnalysisStr, parameters, null, sessionId); return queryResult; }
QueryResult<ClinicalAnalysis> clinicalAnalysisQueryResult = catalogManager.getClinicalAnalysisManager().get(studyStr, clinicalAnalysisId, QueryOptions.empty(), token); if (clinicalAnalysisQueryResult.getNumResults() == 0) {
QueryResult<ClinicalAnalysis> clinicalAnalysisQueryResult = catalogManager.getClinicalAnalysisManager().get(studyStr, clinicalAnalysisId, QueryOptions.empty(), token); if (clinicalAnalysisQueryResult.getNumResults() == 0) {
private QueryResult<ClinicalAnalysis> createDummyEnvironment(boolean createFamily) throws CatalogException { createDummyFamily(); ClinicalAnalysis clinicalAnalysis = new ClinicalAnalysis() .setId("analysis").setDescription("My description").setType(ClinicalAnalysis.Type.FAMILY) .setDueDate("20180510100000") .setProband(new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2")))); if (createFamily) { clinicalAnalysis.setFamily(new Family().setId("family")); } return catalogManager.getClinicalAnalysisManager().create(STUDY, clinicalAnalysis, QueryOptions.empty(), sessionIdUser); }
catalogManager.getClinicalAnalysisManager().smartResolutor(studyUid, interpretation.getInterpretation().getClinicalAnalysisId(), user); } catch (CatalogException e) {
@Test public void updateSubjectsNoFamilyTest() throws CatalogException { createDummyEnvironment(false); ObjectMap params = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key(), new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2")))); QueryResult<ClinicalAnalysis> updateResult = catalogManager.getClinicalAnalysisManager().update(STUDY, "analysis", params, QueryOptions.empty(), sessionIdUser); assertEquals(1, updateResult.getNumResults()); assertEquals(0, updateResult.first().getInterpretations().size()); assertEquals(catalogManager.getIndividualManager().getUid("child1", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getUid()); assertEquals(1, updateResult.first().getProband().getSamples().size()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getSamples().get(0).getUid()); }
MyResource<ClinicalAnalysis> clinicalAnalysisResource = catalogManager.getClinicalAnalysisManager() .getUid(resource.getResource().getInterpretation().getClinicalAnalysisId(), studyStr, sessionId); authorizationManager.checkClinicalAnalysisPermission(resource.getStudy().getUid(), clinicalAnalysisResource.getResource().getUid(),
@Test public void updateSubjectsAndFamilyTest() throws CatalogException { createDummyEnvironment(false); ObjectMap params = new ObjectMap() .append(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key(), new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2")))) .append(ClinicalAnalysisDBAdaptor.QueryParams.FAMILY.key(), new Family().setId("family")); QueryResult<ClinicalAnalysis> updateResult = catalogManager.getClinicalAnalysisManager().update(STUDY, "analysis", params, QueryOptions.empty(), sessionIdUser); assertEquals(1, updateResult.getNumResults()); assertEquals(0, updateResult.first().getInterpretations().size()); assertEquals(catalogManager.getFamilyManager().getUid("family", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getFamily().getUid()); assertEquals(catalogManager.getIndividualManager().getUid("child1", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getUid()); assertEquals(1, updateResult.first().getProband().getSamples().size()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getSamples().get(0).getUid()); }