import { Attachment } from './Attachment.js';
import { CodeableConcept } from './CodeableConcept.js';
import { Extension } from './Extension.js';
import { FhirPrimitive } from './FhirPrimitive.js';
import { Period } from './Period.js';
import { Quantity } from './Quantity.js';
import { Range } from './Range.js';
import { Ratio } from './Ratio.js';
import { Reference } from './Reference.js';
import { SampledData } from './SampledData.js';
export interface Observation_Component {
    /**
     * @description Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
     * @short Unique id for inter-element referencing
     */
    id?: string;
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
     * @comment There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
     * @short Additional content defined by implementations
     */
    extension?: Extension[];
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained andor the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
  
  Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).
     * @comment There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
     * @short Extensions that cannot be ignored even if unrecognized
     */
    modifierExtension?: Extension[];
    /**
     * @description Describes what was observed. Sometimes this is called the observation "code".
     * @comment All code-value and  component.code-component.value pairs need to be taken into account to correctly understand the meaning of the observation.
     * @short Type of component observation (code  type)
     */
    code: CodeableConcept;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueQuantity?: Quantity;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueCodeableConcept?: CodeableConcept;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueString?: FhirPrimitive<string>;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueBoolean?: FhirPrimitive<boolean>;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueInteger?: FhirPrimitive<number>;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueRange?: Range;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueRatio?: Ratio;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueSampledData?: SampledData;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueTime?: FhirPrimitive<string>;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueDateTime?: FhirPrimitive<string>;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valuePeriod?: Period;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueAttachment?: Attachment;
    /**
     * @choice This is part of the value[x] choice.
     * @oneOf valueQuantity, valueCodeableConcept, valueString, valueBoolean, valueInteger, valueRange, valueRatio, valueSampledData, valueTime, valueDateTime, valuePeriod, valueAttachment, valueReference
     */
    valueReference?: Reference;
    /**
     * @description Provides a reason why the expected value in the element Observation.component.value[x] is missing.
     * @comment "Null" or exceptional values can be represented two ways in FHIR Observations.  One way is to simply include them in the value set and represent the exceptions in the value.  For example, measurement values for a serology test could be  "detected", "not detected", "inconclusive", or  "test not done".
  
  The alternate way is to use the value element for actual observations and use the explicit dataAbsentReason element to record exceptional values.  For example, the dataAbsentReason code "error" could be used when the measurement was not completed.  Because of these options, use-case agreements are required to interpret general observations for exceptional values.
     * @short Why the component result is missing
     */
    dataAbsentReason?: CodeableConcept;
    /**
     * @description A categorical assessment of an observation value.  For example, high, low, normal.
     * @comment Historically used for laboratory results (known as 'abnormal flag' ),  its use extends to other use cases where coded interpretations  are relevant.  Often reported as one or more simple compact codes this element is often placed adjacent to the result value in reports and flow sheets to signal the meaningnormalcy status of the result.
     * @short High, low, normal, etc
     */
    interpretation?: CodeableConcept[];
    /**
     * @description Guidance on how to interpret the value by comparison to a normal or recommended range.
     * @comment Most observations only have one generic reference range. Systems MAY choose to restrict to only supplying the relevant reference range based on knowledge about the patient (e.g., specific to the patient's age, gender, weight and other factors), but this might not be possible or appropriate. Whenever more than one reference range is supplied, the differences between them SHOULD be provided in the reference range andor age properties.
     * @short Provides guide for interpretation of component result
     */
    referenceRange?: any[];
}
//# sourceMappingURL=Observation_Component.d.ts.map