// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.health.insights.cancerprofiling.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** Configuration affecting the Onco Phenotype model's inference. */
@Fluent
public final class OncoPhenotypeModelConfiguration {
    /*
     * An indication whether the model should produce verbose output.
     */
    @JsonProperty(value = "verbose")
    private Boolean verbose;

    /*
     * An indication whether the model's output should include evidence for the inferences.
     */
    @JsonProperty(value = "includeEvidence")
    private Boolean includeEvidence;

    /*
     * A list of inference types to be inferred for the current request.
     * This could be used if only part of the Onco Phenotype inferences are required.
     * If this list is omitted or empty, the model will return all the inference types.
     */
    @JsonProperty(value = "inferenceTypes")
    private List<OncoPhenotypeInferenceType> inferenceTypes;

    /*
     * An indication whether to perform a preliminary step on the patient's documents to determine whether they relate
     * to a Cancer case.
     */
    @JsonProperty(value = "checkForCancerCase")
    private Boolean checkForCancerCase;

    /** Creates an instance of OncoPhenotypeModelConfiguration class. */
    public OncoPhenotypeModelConfiguration() {}

    /**
     * Get the verbose property: An indication whether the model should produce verbose output.
     *
     * @return the verbose value.
     */
    public Boolean isVerbose() {
        return this.verbose;
    }

    /**
     * Set the verbose property: An indication whether the model should produce verbose output.
     *
     * @param verbose the verbose value to set.
     * @return the OncoPhenotypeModelConfiguration object itself.
     */
    public OncoPhenotypeModelConfiguration setVerbose(Boolean verbose) {
        this.verbose = verbose;
        return this;
    }

    /**
     * Get the includeEvidence property: An indication whether the model's output should include evidence for the
     * inferences.
     *
     * @return the includeEvidence value.
     */
    public Boolean isIncludeEvidence() {
        return this.includeEvidence;
    }

    /**
     * Set the includeEvidence property: An indication whether the model's output should include evidence for the
     * inferences.
     *
     * @param includeEvidence the includeEvidence value to set.
     * @return the OncoPhenotypeModelConfiguration object itself.
     */
    public OncoPhenotypeModelConfiguration setIncludeEvidence(Boolean includeEvidence) {
        this.includeEvidence = includeEvidence;
        return this;
    }

    /**
     * Get the inferenceTypes property: A list of inference types to be inferred for the current request. This could be
     * used if only part of the Onco Phenotype inferences are required. If this list is omitted or empty, the model will
     * return all the inference types.
     *
     * @return the inferenceTypes value.
     */
    public List<OncoPhenotypeInferenceType> getInferenceTypes() {
        return this.inferenceTypes;
    }

    /**
     * Set the inferenceTypes property: A list of inference types to be inferred for the current request. This could be
     * used if only part of the Onco Phenotype inferences are required. If this list is omitted or empty, the model will
     * return all the inference types.
     *
     * @param inferenceTypes the inferenceTypes value to set.
     * @return the OncoPhenotypeModelConfiguration object itself.
     */
    public OncoPhenotypeModelConfiguration setInferenceTypes(List<OncoPhenotypeInferenceType> inferenceTypes) {
        this.inferenceTypes = inferenceTypes;
        return this;
    }

    /**
     * Get the checkForCancerCase property: An indication whether to perform a preliminary step on the patient's
     * documents to determine whether they relate to a Cancer case.
     *
     * @return the checkForCancerCase value.
     */
    public Boolean isCheckForCancerCase() {
        return this.checkForCancerCase;
    }

    /**
     * Set the checkForCancerCase property: An indication whether to perform a preliminary step on the patient's
     * documents to determine whether they relate to a Cancer case.
     *
     * @param checkForCancerCase the checkForCancerCase value to set.
     * @return the OncoPhenotypeModelConfiguration object itself.
     */
    public OncoPhenotypeModelConfiguration setCheckForCancerCase(Boolean checkForCancerCase) {
        this.checkForCancerCase = checkForCancerCase;
        return this;
    }
}
