// 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.clinicalmatching.models;

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

/** Patient structured information, including demographics and known structured clinical information. */
@Fluent
public final class PatientInfo {
    /*
     * The patient's sex.
     */
    @JsonProperty(value = "sex")
    private PatientInfoSex sex;

    /*
     * The patient's date of birth.
     */
    @JsonProperty(value = "birthDate")
    private LocalDate birthDate;

    /*
     * Known clinical information for the patient, structured.
     */
    @JsonProperty(value = "clinicalInfo")
    private List<ClinicalCodedElement> clinicalInfo;

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

    /**
     * Get the sex property: The patient's sex.
     *
     * @return the sex value.
     */
    public PatientInfoSex getSex() {
        return this.sex;
    }

    /**
     * Set the sex property: The patient's sex.
     *
     * @param sex the sex value to set.
     * @return the PatientInfo object itself.
     */
    public PatientInfo setSex(PatientInfoSex sex) {
        this.sex = sex;
        return this;
    }

    /**
     * Get the birthDate property: The patient's date of birth.
     *
     * @return the birthDate value.
     */
    public LocalDate getBirthDate() {
        return this.birthDate;
    }

    /**
     * Set the birthDate property: The patient's date of birth.
     *
     * @param birthDate the birthDate value to set.
     * @return the PatientInfo object itself.
     */
    public PatientInfo setBirthDate(LocalDate birthDate) {
        this.birthDate = birthDate;
        return this;
    }

    /**
     * Get the clinicalInfo property: Known clinical information for the patient, structured.
     *
     * @return the clinicalInfo value.
     */
    public List<ClinicalCodedElement> getClinicalInfo() {
        return this.clinicalInfo;
    }

    /**
     * Set the clinicalInfo property: Known clinical information for the patient, structured.
     *
     * @param clinicalInfo the clinicalInfo value to set.
     * @return the PatientInfo object itself.
     */
    public PatientInfo setClinicalInfo(List<ClinicalCodedElement> clinicalInfo) {
        this.clinicalInfo = clinicalInfo;
        return this;
    }
}
