import { CodeableConcept } from './CodeableConcept.js';
import { DataRequirement_CodeFilter } from './DataRequirement_CodeFilter.js';
import { DataRequirement_DateFilter } from './DataRequirement_DateFilter.js';
import { DataRequirement_Sort } from './DataRequirement_Sort.js';
import { DataRequirement_ValueFilter } from './DataRequirement_ValueFilter.js';
import { Extension } from './Extension.js';
import { FhirPrimitive } from './FhirPrimitive.js';
import { Reference } from './Reference.js';
export interface DataRequirement {
    /**
     * @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 The type of the required data, specified as the type name of a resource. For profiles, this value is set to the type of the base resource of the profile.
     * @short The type of the required data
     */
    type: FhirPrimitive<string>;
    /**
     * @description The profile of the required data, specified as the uri of the profile definition.
     * @short The profile of the required data
     */
    profile?: FhirPrimitive<string>[];
    /**
     * @choice This is part of the subject[x] choice.
     * @oneOf subjectCodeableConcept, subjectReference
     */
    subjectCodeableConcept?: CodeableConcept;
    /**
     * @choice This is part of the subject[x] choice.
     * @oneOf subjectCodeableConcept, subjectReference
     */
    subjectReference?: Reference;
    /**
     * @description Indicates that specific elements of the type are referenced by the knowledge module and must be supported by the consumer in order to obtain an effective evaluation. This does not mean that a value is required for this element, only that the consuming system must understand the element and be able to provide values for it if they are available.
  
  The value of mustSupport SHALL be a FHIRPath resolvable on the type of the DataRequirement. The path SHALL consist only of identifiers, constant indexers, and .resolve() (see the [Simple FHIRPath Profile](fhirpath.html#simple) for full details).
     * @short Indicates specific structure elements that are referenced by the knowledge module
     */
    mustSupport?: FhirPrimitive<string>[];
    /**
     * @backbone Nested BackboneElement: codeFilter [0..*]
     */
    codeFilter?: DataRequirement_CodeFilter[];
    /**
     * @backbone Nested BackboneElement: dateFilter [0..*]
     */
    dateFilter?: DataRequirement_DateFilter[];
    /**
     * @backbone Nested BackboneElement: valueFilter [0..*]
     */
    valueFilter?: DataRequirement_ValueFilter[];
    /**
     * @description Specifies a maximum number of results that are required (uses the _count search parameter).
     * @comment This element can be used in combination with the sort element to specify quota requirements such as "the most recent 5" or "the highest 5".
     * @short Number of results
     */
    limit?: FhirPrimitive<number>;
    /**
     * @backbone Nested BackboneElement: sort [0..*]
     */
    sort?: DataRequirement_Sort[];
}
//# sourceMappingURL=DataRequirement.d.ts.map