@Override public QueryResult<ClinicalAnalysis> create(String studyStr, ClinicalAnalysis clinicalAnalysis, QueryOptions options, String sessionId) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); authorizationManager.checkStudyPermission(study.getUid(), userId, StudyAclEntry.StudyPermissions.WRITE_CLINICAL_ANALYSIS); options = ParamUtils.defaultObject(options, QueryOptions::new); ParamUtils.checkObj(clinicalAnalysis, "clinicalAnalysis"); ParamUtils.checkAlias(clinicalAnalysis.getId(), "id"); ParamUtils.checkObj(clinicalAnalysis.getType(), "type"); ParamUtils.checkObj(clinicalAnalysis.getDueDate(), "dueDate"); if (TimeUtils.toDate(clinicalAnalysis.getDueDate()) == null) { throw new CatalogException("Unrecognised due date. Accepted format is: yyyyMMddHHmmss"); } clinicalAnalysis.setProband(getFullValidatedMember(clinicalAnalysis.getProband(), study, sessionId)); clinicalAnalysis.setFamily(getFullValidatedFamily(clinicalAnalysis.getFamily(), study, sessionId)); validateClinicalAnalysisFields(clinicalAnalysis, study, sessionId); clinicalAnalysis.setCreationDate(TimeUtils.getTime()); clinicalAnalysis.setDescription(ParamUtils.defaultString(clinicalAnalysis.getDescription(), "")); clinicalAnalysis.setStatus(new ClinicalAnalysis.ClinicalStatus()); clinicalAnalysis.setRelease(catalogManager.getStudyManager().getCurrentRelease(study, userId)); clinicalAnalysis.setAttributes(ParamUtils.defaultObject(clinicalAnalysis.getAttributes(), Collections.emptyMap())); clinicalAnalysis.setInterpretations(ParamUtils.defaultObject(clinicalAnalysis.getInterpretations(), ArrayList::new)); clinicalAnalysis.setPriority(ParamUtils.defaultObject(clinicalAnalysis.getPriority(), ClinicalAnalysis.Priority.MEDIUM)); clinicalAnalysis.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.CLINICAL)); QueryResult<ClinicalAnalysis> queryResult = clinicalDBAdaptor.insert(study.getUid(), clinicalAnalysis, options); return queryResult; }