public QueryResult<Interpretation> create(String studyStr, String clinicalAnalysisStr, Interpretation interpretation,
QueryOptions options, String sessionId) throws CatalogException {
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);
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;
}