export interface IBase {
}
export interface IExtension {
}
export interface IElement extends IBase {
    id?: string;
    extension?: IExtension;
}
export interface IDataType extends IElement {
}
export interface IPrimitiveType extends IDataType {
}
export interface ICode extends IPrimitiveType {
}
export interface IResource extends IBase {
    id?: IId;
    meta?: IMeta;
    implicitRules?: string;
    language?: string;
}
export type IId = string;
export type IUri = string;
export type IUrl = string;
export interface ICanonical<T> extends IPrimitiveType {
    uri: IUri;
    _type: T;
}
export type IMarkdown = string;
export type IMimeType = string;
export interface IMeta extends IDataType {
    versionId?: IId;
    lastUpdated?: IInstant;
    source?: IUri;
    profile?: ICanonical<IStructureDefinition>[];
    security?: ICoding[];
    tag?: ICoding[];
}
export interface INarrative extends IDataType {
    status: 'generated' | 'extensions' | 'additional' | 'empty';
    div: string;
}
export interface IDomainResource extends IResource {
    text?: INarrative;
    contained?: IResource;
    extension?: IExtension;
    modifierExtension?: IExtension;
    _resourceType: string;
}
export interface IStructureDefinition extends IDomainResource {
    _resourceType: "StructureDefinition";
    url: IUri;
    identifier?: IIdentifier[];
    version?: string;
    versionAlgorithmString?: string;
    versionAlgorithmCoding?: ICoding;
    name: string;
    title?: string;
    status: 'draft' | 'active' | 'retired' | 'unknown';
    experimental?: boolean;
    date?: IDateTime;
    publisher?: string;
    contact?: IContactDetail[];
    description?: IMarkdown;
    useContext?: IUsageContext[];
    jurisdiction?: ICodeableConcept[];
    purpose?: IMarkdown;
    copyright?: IMarkdown;
    copyrightLabel?: string;
    keyword?: ICoding[];
    fhirVersion?: ICode;
    mapping?: {
        identity: IId;
        uri?: IUri;
        name?: string;
        comment?: string;
    }[];
    kind: 'primitive-type' | 'complex-type' | 'resource' | 'logical';
    abstract: boolean;
    context?: {
        type: 'fhirpath' | 'element' | 'extension';
        expression: string;
    }[];
    contextInvariant?: string[];
    type: IUri;
    baseDefinition?: ICanonical<IStructureDefinition>;
    derivation?: 'specialization' | 'constraint';
    snapshot?: {
        element: IElementDefinition[];
    };
    differential?: {
        element: IElementDefinition[];
    };
}
export interface ICoding extends IDataType {
    system?: IUri;
    version?: string;
    code?: string;
    display?: string;
    userSelected?: boolean;
}
export interface ICodeableConcept {
    coding?: ICoding[];
    text?: string;
}
export interface IReference<T> extends IDataType {
    reference?: string;
    type?: IUri;
    identifier?: IIdentifier;
    display?: string;
    _type: T;
}
export interface ICodeableReference<T> extends IDataType {
    concept?: ICodeableConcept;
    reference?: IReference<T>;
}
export interface IIdentifier extends IDataType {
    use?: "usual" | "official" | "temp" | "secondary" | "old";
    type?: ICodeableConcept;
    system?: string;
    value?: string;
    period?: IPeriod;
    assigner?: IReference<IOrganization>;
}
export interface IPeriod extends IDataType {
    start?: Date;
    end?: Date;
}
export interface IInstant extends IPrimitiveType {
    dateTime: Date | number | string;
}
export interface IDateTime extends IPrimitiveType {
    dateTime: Date | number | string;
}
export interface IMoney extends IDataType {
    value?: number;
    currency?: string;
}
export interface IContactDetail {
}
export interface IElementDefinition {
}
export interface IUsageContext {
}
export interface IAccount extends IDomainResource {
    _resourceType: "Account";
    identifier?: IIdentifier[];
    status: "active" | "inactive" | "entered-in-error" | "on-hold" | "unknown";
    billingStatus?: ICodeableConcept;
    type?: ICodeableConcept;
    name?: string;
    subject?: IReference<IDevice | IHealthcareService | ILocation | IOrganization | IPatient | IPractitioner | IPractitionerRole>[];
    servicePeriod?: IPeriod;
    coverage?: [
        {
            coverage: IReference<ICoverage>;
            priority?: number;
        }
    ];
    owner?: IReference<IOrganization>;
    description?: string;
    guarantor?: {
        party: IReference<IOrganization | IPatient | IRelatedPerson>;
        onHold?: true;
        period?: IPeriod;
    }[];
    diagnosis?: {
        sequence?: number;
        condition: ICodeableReference<ICondition>;
        dateOfDiagnosis?: IDateTime;
        type?: ICodeableConcept[];
        onAdmission?: boolean;
        packageCode?: ICodeableConcept[];
    }[];
    procedure?: {
        sequence?: number;
        code: ICodeableReference<IProcedure>;
        dateOfService?: IDateTime;
        type?: ICodeableConcept[];
        packageCode?: ICodeableConcept[];
        device?: IReference<IDevice>[];
    }[];
    relatedAccount?: {
        relationship?: ICodeableConcept;
        account: IReference<IAccount>;
    }[];
    currency?: ICodeableConcept;
    balance?: {
        aggregate?: ICodeableConcept;
        term?: ICodeableConcept;
        estimate?: boolean;
        amount: IMoney;
    }[];
    calculatedAt?: IInstant;
}
export interface IOrganization extends IDomainResource {
    _resourceType: "Organization";
    identifier?: IIdentifier[];
    active?: boolean;
    type?: ICodeableConcept[];
    name?: string;
    alias?: string[];
    description?: IMarkdown;
    contact?: IExtendedContactDetail[];
    partOf?: IReference<IOrganization>;
    endpoint?: IReference<IEndpoint>[];
    qualification?: {
        identifier?: IIdentifier[];
        code: ICodeableConcept;
        period?: IPeriod;
        issuer?: IReference<IOrganization>;
    }[];
}
export interface IEndpoint extends IDomainResource {
    resourceType: "Endpoint";
    identifier?: IIdentifier[];
    status: 'active' | 'suspended' | 'error' | 'off' | 'entered-in-error' | 'test';
    connectionType: ICodeableConcept[];
    name?: string;
    description?: string;
    environmentType?: ICodeableConcept[];
    managingOrganization?: IReference<IOrganization>;
    contact?: IContactPoint[];
    period?: IPeriod;
    payload?: {
        type?: ICodeableConcept[];
        mimeType?: IMimeType[];
    }[];
    address: IUrl;
    header?: string[];
}
export interface IExtendedContactDetail extends IDataType {
    purpose?: ICodeableConcept;
    name?: IHumanName[];
    telecom?: IContactPoint[];
    address?: IAddress;
    organization?: IReference<IOrganization>;
    period?: IPeriod;
}
export interface IHumanName extends IDataType {
    use?: 'usual' | 'official' | 'temp' | 'nickname' | 'anonymous' | 'old' | 'maiden';
    text?: string;
    family?: string;
    given?: string[];
    prefix?: string[];
    suffix?: string[];
    period?: IPeriod;
}
export interface IContactPoint extends IDataType {
    system?: 'phone' | 'fax' | 'email' | 'pager' | 'url' | 'sms' | 'other';
    value?: string;
    use?: 'home' | 'work' | 'temp' | 'old' | 'mobile';
    rank?: number;
    period?: IPeriod;
}
interface IAddress {
    resourceType: "Address";
    use?: 'home' | 'work' | 'temp' | 'old' | 'billing';
    type?: 'postal' | 'physical' | 'both';
    text?: string;
    line?: string[];
    city?: string;
    district?: string;
    state?: string;
    postalCode?: string;
    country?: string;
    period?: IPeriod;
}
export interface ICoverage {
}
export interface IPatient {
}
export interface IDevice {
}
export interface IHealthcareService {
}
export interface ILocation {
}
export interface IPractitioner {
}
export interface IPractitionerRole {
}
export interface IRelatedPerson {
}
export interface ICondition {
}
export interface IProcedure {
}
export interface IAttachment {
}
export interface IPerson extends IDomainResource {
    _resourceType: "Person";
    identifier?: IIdentifier[];
    active?: boolean;
    name?: IHumanName[];
    telecom?: IContactPoint[];
    gender?: 'male' | 'female' | 'other' | 'unknown';
    birthDate?: Date;
    deceasedBoolean?: boolean;
    deceasedDateTime?: IDateTime;
    address?: IAddress[];
    maritalStatus?: ICodeableConcept;
    photo?: IAttachment[];
    communication?: {
        language: ICodeableConcept;
        preferred?: boolean;
    }[];
    managingOrganization?: IReference<IOrganization>[];
    link?: {
        target: IReference<IPatient | IPerson | IPractitioner | IRelatedPerson>;
        assurance?: 'level1' | 'level2' | 'level3' | 'level4';
    }[];
}
export interface IFHIRResource {
    name: string;
    description: string;
    notes: string;
}
export interface IPersonResource {
    name: string;
    description: string;
    notes: string;
}
export {};
//# sourceMappingURL=STSFhirTypes.d.ts.map