All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencb.opencga.client.rest.clients.ClinicalAnalysisClient Maven / Gradle / Ivy

/*
* Copyright 2015-2024 OpenCB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.opencb.opencga.client.rest.clients;

import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant;
import org.opencb.commons.datastore.core.FacetField;
import org.opencb.commons.datastore.core.ObjectMap;
import org.opencb.opencga.client.config.ClientConfiguration;
import org.opencb.opencga.client.exceptions.ClientException;
import org.opencb.opencga.client.rest.*;
import org.opencb.opencga.core.models.analysis.knockout.KnockoutByGeneSummary;
import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividual;
import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividualSummary;
import org.opencb.opencga.core.models.analysis.knockout.KnockoutByVariant;
import org.opencb.opencga.core.models.analysis.knockout.KnockoutByVariantSummary;
import org.opencb.opencga.core.models.analysis.knockout.RgaKnockoutByGene;
import org.opencb.opencga.core.models.clinical.CancerTieringInterpretationAnalysisParams;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysis;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysisAclEntryList;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysisAclUpdateParams;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysisCreateParams;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysisLoadParams;
import org.opencb.opencga.core.models.clinical.ClinicalAnalysisUpdateParams;
import org.opencb.opencga.core.models.clinical.ClinicalReport;
import org.opencb.opencga.core.models.clinical.ExomiserInterpretationAnalysisParams;
import org.opencb.opencga.core.models.clinical.Interpretation;
import org.opencb.opencga.core.models.clinical.InterpretationCreateParams;
import org.opencb.opencga.core.models.clinical.InterpretationUpdateParams;
import org.opencb.opencga.core.models.clinical.RgaAnalysisParams;
import org.opencb.opencga.core.models.clinical.TeamInterpretationAnalysisParams;
import org.opencb.opencga.core.models.clinical.TieringInterpretationAnalysisParams;
import org.opencb.opencga.core.models.clinical.ZettaInterpretationAnalysisParams;
import org.opencb.opencga.core.models.common.TsvAnnotationParams;
import org.opencb.opencga.core.models.job.Job;
import org.opencb.opencga.core.models.sample.Sample;
import org.opencb.opencga.core.models.study.configuration.ClinicalAnalysisStudyConfiguration;
import org.opencb.opencga.core.response.RestResponse;


/*
* WARNING: AUTOGENERATED CODE
*
* This code was generated by a tool.
*
* Manual changes to this file may cause unexpected behavior in your application.
* Manual changes to this file will be overwritten if the code is regenerated.
*/


/**
 * This class contains methods for the ClinicalAnalysis webservices.
 *    PATH: analysis/clinical
 */
public class ClinicalAnalysisClient extends AbstractParentClient {

    public ClinicalAnalysisClient(String token, ClientConfiguration configuration) {
        super(token, configuration);
    }

    /**
     * Update the set of permissions granted for the member.
     * @param members Comma separated list of user or group IDs.
     * @param action Action to be performed [ADD, SET, REMOVE or RESET].
     * @param data JSON containing the parameters to add ACLs.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       propagate: Propagate permissions to related families, individuals, samples and files.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse updateAcl(String members, String action, ClinicalAnalysisAclUpdateParams data,
        ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("action", action);
        params.put("body", data);
        return execute("analysis", null, "clinical/acl", members, "update", params, POST, ClinicalAnalysisAclEntryList.class);
    }

    /**
     * Load annotation sets from a TSV file.
     * @param variableSetId Variable set ID or name.
     * @param path Path where the TSV file is located in OpenCGA or where it should be located.
     * @param data JSON containing the 'content' of the TSV file if this has not yet been registered into OpenCGA.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       parents: Flag indicating whether to create parent directories if they don't exist (only when TSV file was not previously
     *            associated).
     *       annotationSetId: Annotation set id. If not provided, variableSetId will be used.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse loadAnnotationSets(String variableSetId, String path, TsvAnnotationParams data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("variableSetId", variableSetId);
        params.putIfNotNull("path", path);
        params.put("body", data);
        return execute("analysis", null, "clinical/annotationSets", null, "load", params, POST, Job.class);
    }

    /**
     * Update Clinical Analysis configuration.
     * @param data Configuration params to update.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse updateClinicalConfiguration(ClinicalAnalysisStudyConfiguration data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/clinical/configuration", null, "update", params, POST, ObjectMap.class);
    }

    /**
     * Create a new clinical analysis.
     * @param data JSON containing clinical analysis information.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       skipCreateDefaultInterpretation: Flag to skip creating and initialise an empty default primary interpretation (Id will be
     *            '{clinicalAnalysisId}.1'). This flag is only considered if no Interpretation object is passed.
     *       includeResult: Flag indicating to include the created or updated document result in the response.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse create(ClinicalAnalysisCreateParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical", null, "create", params, POST, ClinicalAnalysis.class);
    }

    /**
     * Clinical Analysis distinct method.
     * @param field Comma separated list of fields for which to obtain the distinct values.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the
     *            operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100.
     *       type: Clinical Analysis type.
     *       disorder: Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g.
     *            '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       files: Clinical Analysis files.
     *       sample: Sample associated to the proband or any member of a family.
     *       individual: Proband or any member of a family.
     *       proband: Clinical Analysis proband.
     *       probandSamples: Clinical Analysis proband samples.
     *       family: Clinical Analysis family.
     *       familyMembers: Clinical Analysis family members.
     *       familyMemberSamples: Clinical Analysis family members samples.
     *       panels: Clinical Analysis panels.
     *       locked: Locked Clinical Analyses.
     *       analystId: Clinical Analysis analyst id.
     *       priority: Clinical Analysis priority.
     *       flags: Clinical Analysis flags.
     *       creationDate: Clinical Analysis Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       modificationDate: Clinical Analysis Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       dueDate: Clinical Analysis due date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       qualityControlSummary: Clinical Analysis quality control summary.
     *       release: Release when it was created.
     *       snapshot: Snapshot value (Latest version of the entry in the specified release).
     *       status: Filter by status.
     *       internalStatus: Filter by internal status.
     *       annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit
     *            http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0.
     *       deleted: Boolean to retrieve deleted entries.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse distinct(String field, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("field", field);
        return execute("analysis", null, "clinical", null, "distinct", params, GET, ObjectMap.class);
    }

    /**
     * Interpretation distinct method.
     * @param field Comma separated list of fields for which to obtain the distinct values.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       id: Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the
     *            operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100.
     *       name: Comma separated list of Interpretation names up to a maximum of 100.
     *       clinicalAnalysisId: Clinical Analysis id.
     *       analystId: Analyst ID.
     *       methodName: Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}'
     *            e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       panels: Interpretation panels.
     *       primaryFindings: Interpretation primary findings.
     *       secondaryFindings: Interpretation secondary findings.
     *       creationDate: Interpretation Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       modificationDate: Interpretation Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       status: Filter by status.
     *       internalStatus: Filter by internal status.
     *       release: Release when it was created.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse distinctInterpretation(String field, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("field", field);
        return execute("analysis", null, "clinical/interpretation", null, "distinct", params, GET, ObjectMap.class);
    }

    /**
     * Search clinical interpretations.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       sort: Sort the results.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       id: Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the
     *            operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100.
     *       name: Comma separated list of Interpretation names up to a maximum of 100.
     *       clinicalAnalysisId: Clinical Analysis id.
     *       analystId: Analyst ID.
     *       methodName: Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}'
     *            e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       panels: Interpretation panels.
     *       primaryFindings: Interpretation primary findings.
     *       secondaryFindings: Interpretation secondary findings.
     *       creationDate: Interpretation Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       modificationDate: Interpretation Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       status: Filter by status.
     *       internalStatus: Filter by internal status.
     *       release: Release when it was created.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse searchInterpretation(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/interpretation", null, "search", params, GET, Interpretation.class);
    }

    /**
     * Clinical interpretation information.
     * @param interpretations Comma separated list of clinical interpretation IDs  up to a maximum of 100.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       version: Comma separated list of interpretation versions. 'all' to get all the interpretation versions. Not supported if
     *            multiple interpretation ids are provided.
     *       deleted: Boolean to retrieve deleted entries.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse infoInterpretation(String interpretations, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/interpretation", interpretations, "info", params, GET, Interpretation.class);
    }

    /**
     * Run cancer tiering interpretation analysis.
     * @param data Cancer tiering interpretation analysis params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runInterpreterCancerTiering(CancerTieringInterpretationAnalysisParams data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/interpreter/cancerTiering", null, "run", params, POST, Job.class);
    }

    /**
     * Run exomiser interpretation analysis.
     * @param data Exomiser interpretation analysis params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runInterpreterExomiser(ExomiserInterpretationAnalysisParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/interpreter/exomiser", null, "run", params, POST, Job.class);
    }

    /**
     * Run TEAM interpretation analysis.
     * @param data TEAM interpretation analysis params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runInterpreterTeam(TeamInterpretationAnalysisParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/interpreter/team", null, "run", params, POST, Job.class);
    }

    /**
     * Run tiering interpretation analysis.
     * @param data Tiering interpretation analysis params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runInterpreterTiering(TieringInterpretationAnalysisParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/interpreter/tiering", null, "run", params, POST, Job.class);
    }

    /**
     * Run Zetta interpretation analysis.
     * @param data Zetta interpretation analysis params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runInterpreterZetta(ZettaInterpretationAnalysisParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/interpreter/zetta", null, "run", params, POST, Job.class);
    }

    /**
     * Load clinical analyses from a file.
     * @param data Parameters to load clinical analysis in OpenCGA catalog from a file.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse load(ClinicalAnalysisLoadParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical", null, "load", params, POST, Job.class);
    }

    /**
     * RGA aggregation stats.
     * @param field List of fields separated by semicolons, e.g.: clinicalSignificances;type. For nested fields use >>, e.g.:
     *     type>>clinicalSignificances;knockoutType.
     * @param params Map containing any of the following optional parameters.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse aggregationStatsRga(String field, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("field", field);
        return execute("analysis", null, "clinical/rga", null, "aggregationStats", params, GET, FacetField.class);
    }

    /**
     * Query gene RGA.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       includeIndividual: Include only the comma separated list of individuals to the response.
     *       skipIndividual: Number of individuals to skip.
     *       limitIndividual: Limit number of individuals returned (default: 1000).
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse queryRgaGene(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/gene", null, "query", params, GET, RgaKnockoutByGene.class);
    }

    /**
     * RGA gene summary stats.
     * @param params Map containing any of the following optional parameters.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse summaryRgaGene(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/gene", null, "summary", params, GET, KnockoutByGeneSummary.class);
    }

    /**
     * Generate Recessive Gene Analysis secondary index.
     * @param data Recessive Gene Analysis index params.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       jobId: Job ID. It must be a unique string within the study. An ID will be autogenerated automatically if not provided.
     *       jobDescription: Job description.
     *       jobDependsOn: Comma separated list of existing job IDs the job will depend on.
     *       jobTags: Job tags.
     *       jobScheduledStartTime: Time when the job is scheduled to start.
     *       jobPriority: Priority of the job.
     *       jobDryRun: Flag indicating that the job will be executed in dry-run mode. In this mode, OpenCGA will validate that all
     *            parameters and prerequisites are correctly set for successful execution, but the job will not actually run.
     *       auxiliarIndex: Index auxiliar collection to improve performance assuming RGA is completely indexed.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse runRgaIndex(RgaAnalysisParams data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical/rga/index", null, "run", params, POST, Job.class);
    }

    /**
     * Query individual RGA.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse queryRgaIndividual(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/individual", null, "query", params, GET, KnockoutByIndividual.class);
    }

    /**
     * RGA individual summary stats.
     * @param params Map containing any of the following optional parameters.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse summaryRgaIndividual(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/individual", null, "summary", params, GET, KnockoutByIndividualSummary.class);
    }

    /**
     * Query variant RGA.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       includeIndividual: Include only the comma separated list of individuals to the response.
     *       skipIndividual: Number of individuals to skip.
     *       limitIndividual: Limit number of individuals returned (default: 1000).
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse queryRgaVariant(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/variant", null, "query", params, GET, KnockoutByVariant.class);
    }

    /**
     * RGA variant summary stats.
     * @param params Map containing any of the following optional parameters.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       sampleId: Filter by sample id.
     *       individualId: Filter by individual id.
     *       sex: Filter by sex.
     *       phenotypes: Filter by phenotypes.
     *       disorders: Filter by disorders.
     *       numParents: Filter by the number of parents registered.
     *       geneId: Filter by gene id.
     *       geneName: Filter by gene name.
     *       chromosome: Filter by chromosome.
     *       start: Filter by start position.
     *       end: Filter by end position.
     *       transcriptId: Filter by transcript id.
     *       variants: Filter by variant id.
     *       dbSnps: Filter by DB_SNP id.
     *       knockoutType: Filter by knockout type.
     *       filter: Filter by filter (PASS, NOT_PASS).
     *       type: Filter by variant type.
     *       clinicalSignificance: Filter by clinical significance.
     *       populationFrequency: Filter by population frequency.
     *       consequenceType: Filter by consequence type.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse summaryRgaVariant(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/rga/variant", null, "summary", params, GET, KnockoutByVariantSummary.class);
    }

    /**
     * Clinical analysis search.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       flattenAnnotations: Flatten the annotations?.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the
     *            operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100.
     *       type: Clinical Analysis type.
     *       disorder: Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g.
     *            '~value' for case sensitive, '~/value/i' for case insensitive search.
     *       files: Clinical Analysis files.
     *       sample: Sample associated to the proband or any member of a family.
     *       individual: Proband or any member of a family.
     *       proband: Clinical Analysis proband.
     *       probandSamples: Clinical Analysis proband samples.
     *       family: Clinical Analysis family.
     *       familyMembers: Clinical Analysis family members.
     *       familyMemberSamples: Clinical Analysis family members samples.
     *       panels: Clinical Analysis panels.
     *       locked: Locked Clinical Analyses.
     *       analystId: Clinical Analysis analyst id.
     *       priority: Clinical Analysis priority.
     *       flags: Clinical Analysis flags.
     *       creationDate: Clinical Analysis Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       modificationDate: Clinical Analysis Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       dueDate: Clinical Analysis due date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805.
     *       qualityControlSummary: Clinical Analysis quality control summary.
     *       release: Release when it was created.
     *       snapshot: Snapshot value (Latest version of the entry in the specified release).
     *       status: Filter by status.
     *       internalStatus: Filter by internal status.
     *       annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit
     *            http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0.
     *       deleted: Boolean to retrieve deleted entries.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse search(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical", null, "search", params, GET, ClinicalAnalysis.class);
    }

    /**
     * Fetch clinical variants.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       limit: Number of results to be returned.
     *       skip: Number of results to skip.
     *       count: Get the total number of results matching the query. Deactivated by default.
     *       approximateCount: Get an approximate count, instead of an exact total count. Reduces execution time.
     *       approximateCountSamplingSize: Sampling size to get the approximate count. Larger values increase accuracy but also increase
     *            execution time.
     *       savedFilter: Use a saved filter at User level.
     *       includeInterpretation: Interpretation ID to include the fields related to this interpretation.
     *       id: List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T.
     *       region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.:
     *            2,3:100000-200000.
     *       type: List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, COPY_NUMBER_GAIN, INSERTION,
     *            DELETION, DUPLICATION, TANDEM_DUPLICATION, BREAKEND, e.g. SNV,INDEL.
     *       study: Filter variants from the given studies, these can be either the numeric ID or the alias with the format
     *            organization@project:study.
     *       file: Filter variants from the files specified. This will set includeFile parameter when not provided.
     *       filter: Specify the FILTER for any of the files. If 'file' filter is provided, will match the file and the filter. e.g.:
     *            PASS,LowGQX.
     *       qual: Specify the QUAL for any of the files. If 'file' filter is provided, will match the file and the qual. e.g.: >123.4.
     *       fileData: Filter by file data (i.e. FILTER, QUAL and INFO columns from VCF file). [{file}:]{key}{op}{value}[,;]* . If no file
     *            is specified, will use all files from "file" filter. e.g. AN>200 or file_1.vcf:AN>200;file_2.vcf:AN<10 . Many fields can
     *            be combined. e.g. file_1.vcf:AN>200;DB=true;file_2.vcf:AN<10,FILTER=PASS,LowDP.
     *       sample: Filter variants by sample genotype. This will automatically set 'includeSample' parameter when not provided. This
     *            filter accepts multiple 3 forms: 1) List of samples: Samples that contain the main variant. Accepts AND (;) and OR (,)
     *            operators.  e.g. HG0097,HG0098 . 2) List of samples with genotypes: {sample}:{gt1},{gt2}. Accepts AND (;) and OR (,)
     *            operators.  e.g. HG0097:0/0;HG0098:0/1,1/1 . Unphased genotypes (e.g. 0/1, 1/1) will also include phased genotypes (e.g.
     *            0|1, 1|0, 1|1), but not vice versa. When filtering by multi-allelic genotypes, any secondary allele will match,
     *            regardless of its position e.g. 1/2 will match with genotypes 1/2, 1/3, 1/4, .... Genotype aliases accepted: HOM_REF,
     *            HOM_ALT, HET, HET_REF, HET_ALT, HET_MISS and MISS  e.g. HG0097:HOM_REF;HG0098:HET_REF,HOM_ALT . 3) Sample with
     *            segregation mode: {sample}:{segregation}. Only one sample accepted.Accepted segregation modes: [ autosomalDominant,
     *            autosomalRecessive, XLinkedDominant, XLinkedRecessive, YLinked, mitochondrial, deNovo, deNovoStrict, mendelianError,
     *            compoundHeterozygous ]. Value is case insensitive. e.g. HG0097:DeNovo Sample must have parents defined and indexed. .
     *       sampleData: Filter by any SampleData field from samples. [{sample}:]{key}{op}{value}[,;]* . If no sample is specified, will
     *            use all samples from "sample" or "genotype" filter. e.g. DP>200 or HG0097:DP>200,HG0098:DP<10 . Many FORMAT fields can be
     *            combined. e.g. HG0097:DP>200;GT=1/1,0/1,HG0098:DP<10.
     *       sampleAnnotation: Selects some samples using metadata information from Catalog. e.g.
     *            age>20;phenotype=hpo:123,hpo:456;name=smith.
     *       cohort: Select variants with calculated stats for the selected cohorts.
     *       cohortStatsRef: Reference Allele Frequency: [{study:}]{cohort}[<|>|<=|>=]{number}. e.g. ALL<=0.4.
     *       cohortStatsAlt: Alternate Allele Frequency: [{study:}]{cohort}[<|>|<=|>=]{number}. e.g. ALL<=0.4.
     *       cohortStatsMaf: Minor Allele Frequency: [{study:}]{cohort}[<|>|<=|>=]{number}. e.g. ALL<=0.4.
     *       cohortStatsMgf: Minor Genotype Frequency: [{study:}]{cohort}[<|>|<=|>=]{number}. e.g. ALL<=0.4.
     *       cohortStatsPass: Filter PASS frequency: [{study:}]{cohort}[<|>|<=|>=]{number}. e.g. ALL>0.8.
     *       missingAlleles: Number of missing alleles: [{study:}]{cohort}[<|>|<=|>=]{number}.
     *       missingGenotypes: Number of missing genotypes: [{study:}]{cohort}[<|>|<=|>=]{number}.
     *       score: Filter by variant score: [{study:}]{score}[<|>|<=|>=]{number}.
     *       family: Filter variants where any of the samples from the given family contains the variant (HET or HOM_ALT).
     *       familyDisorder: Specify the disorder to use for the family segregation.
     *       familySegregation: Filter by segregation mode from a given family. Accepted values: [ autosomalDominant, autosomalRecessive,
     *            XLinkedDominant, XLinkedRecessive, YLinked, mitochondrial, deNovo, deNovoStrict, mendelianError, compoundHeterozygous ].
     *       familyMembers: Sub set of the members of a given family.
     *       familyProband: Specify the proband child to use for the family segregation.
     *       gene: List of genes, most gene IDs are accepted (HGNC, Ensembl gene, ...). This is an alias to 'xref' parameter.
     *       ct: List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function'
     *            and 'protein_altering'.
     *       xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes,
     *            dbSNP, ClinVar, HPO, Cosmic, HGVS ...
     *       biotype: List of biotypes, e.g. protein_coding.
     *       proteinSubstitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score
     *            {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant.
     *       conservation: Filter by conservation score: {conservation_score}[<|>|<=|>=]{number} e.g. phastCons>0.5,phylop<0.1,gerp>0.1.
     *       populationFrequencyAlt: Alternate Population Frequency: {study}:{population}[<|>|<=|>=]{number}. e.g. 1000G:ALL<0.01.
     *       populationFrequencyRef: Reference Population Frequency: {study}:{population}[<|>|<=|>=]{number}. e.g. 1000G:ALL<0.01.
     *       populationFrequencyMaf: Population minor allele frequency: {study}:{population}[<|>|<=|>=]{number}. e.g. 1000G:ALL<0.01.
     *       transcriptFlag: List of transcript flags. e.g. canonical, CCDS, basic, LRG, MANE Select, MANE Plus Clinical, EGLH_HaemOnc,
     *            TSO500.
     *       geneTraitId: List of gene trait association id. e.g. "umls:C0007222" , "OMIM:269600".
     *       go: List of GO (Gene Ontology) terms. e.g. "GO:0002020".
     *       expression: List of tissues of interest. e.g. "lung".
     *       proteinKeyword: List of Uniprot protein variant annotation keywords.
     *       drug: List of drug names.
     *       functionalScore: Functional score: {functional_score}[<|>|<=|>=]{number} e.g. cadd_scaled>5.2 , cadd_raw<=0.3.
     *       clinical: Clinical source: clinvar, cosmic.
     *       clinicalSignificance: Clinical significance: benign, likely_benign, likely_pathogenic, pathogenic.
     *       clinicalConfirmedStatus: Clinical confirmed status.
     *       customAnnotation: Custom annotation: {key}[<|>|<=|>=]{number} or {key}[~=|=]{text}.
     *       panel: Filter by genes from the given disease panel.
     *       panelModeOfInheritance: Filter genes from specific panels that match certain mode of inheritance. Accepted values : [
     *            autosomalDominant, autosomalRecessive, XLinkedDominant, XLinkedRecessive, YLinked, mitochondrial, deNovo, mendelianError,
     *            compoundHeterozygous ].
     *       panelConfidence: Filter genes from specific panels that match certain confidence. Accepted values : [ high, medium, low,
     *            rejected ].
     *       panelRoleInCancer: Filter genes from specific panels that match certain role in cancer. Accepted values : [ both, oncogene,
     *            tumorSuppressorGene, fusion ].
     *       panelFeatureType: Filter elements from specific panels by type. Accepted values : [ gene, region, str, variant ].
     *       panelIntersection: Intersect panel genes and regions with given genes and regions from que input query. This will prevent
     *            returning variants from regions out of the panel.
     *       trait: List of traits, based on ClinVar, HPO, COSMIC, i.e.: IDs, histologies, descriptions,...
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse queryVariant(ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical/variant", null, "query", params, GET, ClinicalVariant.class);
    }

    /**
     * Returns the acl of the clinical analyses. If member is provided, it will only return the acl for the member.
     * @param clinicalAnalyses Comma separated list of clinical analysis IDs or names up to a maximum of 100.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       member: User or group ID.
     *       silent: Boolean to retrieve all possible entries that are queried for, false to raise an exception whenever one of the entries
     *            looked for cannot be shown for whichever reason.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse acl(String clinicalAnalyses, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical", clinicalAnalyses, "acl", params, GET, ClinicalAnalysisAclEntryList.class);
    }

    /**
     * Delete clinical analyses.
     * @param clinicalAnalyses Comma separated list of clinical analysis IDs or names up to a maximum of 100.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       force: Force deletion if the ClinicalAnalysis contains interpretations or is locked.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse delete(String clinicalAnalyses, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical", clinicalAnalyses, "delete", params, DELETE, ClinicalAnalysis.class);
    }

    /**
     * Update clinical analysis attributes.
     * @param clinicalAnalyses Comma separated list of clinical analysis IDs.
     * @param data JSON containing clinical analysis information.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       commentsAction: Action to be performed if the array of comments is being updated.
     *       flagsAction: Action to be performed if the array of flags is being updated.
     *       analystsAction: Action to be performed if the array of analysts is being updated.
     *       filesAction: Action to be performed if the array of files is being updated.
     *       panelsAction: Action to be performed if the array of panels is being updated.
     *       annotationSetsAction: Action to be performed if the array of annotationSets is being updated.
     *       includeResult: Flag indicating to include the created or updated document result in the response.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse update(String clinicalAnalyses, ClinicalAnalysisUpdateParams data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis", null, "clinical", clinicalAnalyses, "update", params, POST, ClinicalAnalysis.class);
    }

    /**
     * Update annotations from an annotationSet.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param annotationSet AnnotationSet ID to be updated.
     * @param data Json containing the map of annotations when the action is ADD, SET or REPLACE, a json with only the key 'remove'
     *     containing the comma separated variables to be removed as a value when the action is REMOVE or a json with only the key 'reset'
     *     containing the comma separated variables that will be set to the default value when the action is RESET.
     * @param params Map containing any of the following optional parameters.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       action: Action to be performed: ADD to add new annotations; REPLACE to replace the value of an already existing annotation;
     *            SET to set the new list of annotations removing any possible old annotations; REMOVE to remove some annotations; RESET to
     *            set some annotations to the default value configured in the corresponding variables of the VariableSet if any.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse updateAnnotationSetsAnnotations(String clinicalAnalysis, String annotationSet, ObjectMap data, ObjectMap
        params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis/clinical", clinicalAnalysis, "annotationSets", annotationSet, "annotations/update", params, POST,
                Sample.class);
    }

    /**
     * Clinical analysis info.
     * @param clinicalAnalysis Comma separated list of clinical analysis IDs or names up to a maximum of 100.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       flattenAnnotations: Flatten the annotations?.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       version: Comma separated list of clinical versions. 'all' to get all the clinical versions. Not supported if multiple clinical
     *            ids are provided.
     *       deleted: Boolean to retrieve deleted entries.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse info(String clinicalAnalysis, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis", null, "clinical", clinicalAnalysis, "info", params, GET, ClinicalAnalysis.class);
    }

    /**
     * Create a new Interpretation.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param data JSON containing clinical interpretation information.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: [[organization@]project:]study id.
     *       setAs: Set interpretation as.
     *       includeResult: Flag indicating to include the created or updated document result in the response.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse createInterpretation(String clinicalAnalysis, InterpretationCreateParams data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis/clinical", clinicalAnalysis, "interpretation", null, "create", params, POST, Interpretation.class);
    }

    /**
     * Clear the fields of the main interpretation of the Clinical Analysis.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param interpretations Interpretation IDs of the Clinical Analysis.
     * @param params Map containing any of the following optional parameters.
     *       study: [[organization@]project:]study ID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse clearInterpretation(String clinicalAnalysis, String interpretations, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis/clinical", clinicalAnalysis, "interpretation", interpretations, "clear", params, POST,
                Interpretation.class);
    }

    /**
     * Delete interpretation.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param interpretations Interpretation IDs of the Clinical Analysis.
     * @param params Map containing any of the following optional parameters.
     *       study: [[organization@]project:]study ID.
     *       setAsPrimary: Interpretation id to set as primary from the list of secondaries in case of deleting the actual primary one.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse deleteInterpretation(String clinicalAnalysis, String interpretations, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        return execute("analysis/clinical", clinicalAnalysis, "interpretation", interpretations, "delete", params, DELETE,
                Interpretation.class);
    }

    /**
     * Revert to a previous interpretation version.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param interpretation Interpretation ID.
     * @param version Version to revert to.
     * @param params Map containing any of the following optional parameters.
     *       study: [[organization@]project:]study ID.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse revertInterpretation(String clinicalAnalysis, String interpretation, int version, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.putIfNotNull("version", version);
        return execute("analysis/clinical", clinicalAnalysis, "interpretation", interpretation, "revert", params, POST,
                Interpretation.class);
    }

    /**
     * Update interpretation fields.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param interpretation Interpretation ID.
     * @param data JSON containing clinical interpretation information.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: [[organization@]project:]study ID.
     *       primaryFindingsAction: Action to be performed if the array of primary findings is being updated.
     *       methodsAction: Action to be performed if the array of methods is being updated.
     *       secondaryFindingsAction: Action to be performed if the array of secondary findings is being updated.
     *       commentsAction: Action to be performed if the array of comments is being updated. To REMOVE or REPLACE, the date will need to
     *            be provided to identify the comment.
     *       panelsAction: Action to be performed if the array of panels is being updated.
     *       setAs: Set interpretation as.
     *       includeResult: Flag indicating to include the created or updated document result in the response.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse updateInterpretation(String clinicalAnalysis, String interpretation, InterpretationUpdateParams
        data, ObjectMap params) throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis/clinical", clinicalAnalysis, "interpretation", interpretation, "update", params, POST,
                Interpretation.class);
    }

    /**
     * Update clinical analysis report.
     * @param clinicalAnalysis Clinical analysis ID.
     * @param data JSON containing clinical report information.
     * @param params Map containing any of the following optional parameters.
     *       include: Fields included in the response, whole JSON path must be provided.
     *       exclude: Fields excluded in the response, whole JSON path must be provided.
     *       study: Study [[organization@]project:]study where study and project can be either the ID or UUID.
     *       commentsAction: Action to be performed if the array of comments is being updated.
     *       supportingEvidencesAction: Action to be performed if the array of supporting evidences is being updated.
     *       filesAction: Action to be performed if the array of files is being updated.
     *       includeResult: Flag indicating to include the created or updated document result in the response.
     * @return a RestResponse object.
     * @throws ClientException ClientException if there is any server error.
     */
    public RestResponse updateReport(String clinicalAnalysis, ClinicalReport data, ObjectMap params)
            throws ClientException {
        params = params != null ? params : new ObjectMap();
        params.put("body", data);
        return execute("analysis/clinical", clinicalAnalysis, "report", null, "update", params, POST, ClinicalReport.class);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy