// 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.Immutable;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * A piece of clinical information, expressed as a code in a clinical coding system, extended by semantic information.
 */
@Immutable
public final class ExtendedClinicalCodedElement {
    /*
     * The clinical coding system, e.g. ICD-10, SNOMED-CT, UMLS.
     */
    @JsonProperty(value = "system", required = true)
    private String system;

    /*
     * The code within the given clinical coding system.
     */
    @JsonProperty(value = "code", required = true)
    private String code;

    /*
     * The name of this coded concept in the coding system.
     */
    @JsonProperty(value = "name")
    private String name;

    /*
     * A value associated with the code within the given clinical coding system.
     */
    @JsonProperty(value = "value")
    private String value;

    /*
     * The [UMLS semantic type](https://www.nlm.nih.gov/research/umls/META3_current_semantic_types.html) associated
     * with the coded concept.
     */
    @JsonProperty(value = "semanticType")
    private String semanticType;

    /*
     * The bio-medical category related to the coded concept, e.g. Diagnosis, Symptom, Medication, Examination.
     */
    @JsonProperty(value = "category")
    private String category;

    /**
     * Creates an instance of ExtendedClinicalCodedElement class.
     *
     * @param system the system value to set.
     * @param code the code value to set.
     */
    @JsonCreator
    private ExtendedClinicalCodedElement(
            @JsonProperty(value = "system", required = true) String system,
            @JsonProperty(value = "code", required = true) String code) {
        this.system = system;
        this.code = code;
    }

    /**
     * Get the system property: The clinical coding system, e.g. ICD-10, SNOMED-CT, UMLS.
     *
     * @return the system value.
     */
    public String getSystem() {
        return this.system;
    }

    /**
     * Get the code property: The code within the given clinical coding system.
     *
     * @return the code value.
     */
    public String getCode() {
        return this.code;
    }

    /**
     * Get the name property: The name of this coded concept in the coding system.
     *
     * @return the name value.
     */
    public String getName() {
        return this.name;
    }

    /**
     * Get the value property: A value associated with the code within the given clinical coding system.
     *
     * @return the value value.
     */
    public String getValue() {
        return this.value;
    }

    /**
     * Get the semanticType property: The [UMLS semantic
     * type](https://www.nlm.nih.gov/research/umls/META3_current_semantic_types.html) associated with the coded concept.
     *
     * @return the semanticType value.
     */
    public String getSemanticType() {
        return this.semanticType;
    }

    /**
     * Get the category property: The bio-medical category related to the coded concept, e.g. Diagnosis, Symptom,
     * Medication, Examination.
     *
     * @return the category value.
     */
    public String getCategory() {
        return this.category;
    }
}
