/**
 * iCure Data Stack API Documentation
 * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { Annotation } from './Annotation';
import { CodeStub } from './CodeStub';
import { Content } from './Content';
import { Delegation } from './Delegation';
import { Identifier } from './Identifier';
import { SecurityMetadata } from './SecurityMetadata';
/**
 * This entity represents a Service. A Service is created in the course a contact. Services include subjective information provided by the patient, such as complaints, reason for visit, feelings, etc. or objective information like bio-metric measures (blood pressure, temperature, heart beat, etc.), or physical exam description, diagnosis, prescription, integration of lab reports from another healthcare party, action plan, etc. Any action performed by the healthcare party which is relevant for the healthcare element of a patient is considered a service. The services can be linked to healthcare elements or other structuring elements of the medical record
 */
export declare class Service {
    constructor(json: JSON | any);
    /**
     * The Id of the Service. We encourage using either a v4 UUID or a HL7 Id.
     */
    id?: string;
    /**
     * The transactionId is used when a single service had to be split into parts for technical reasons. Several services with the same non null transaction id form one single service
     */
    transactionId?: string;
    identifier?: Array<Identifier>;
    /**
     * Id of the contact during which the service is provided
     */
    contactId?: string;
    /**
     * List of IDs of all sub-contacts that link the service to structural elements. Only used when the Service is emitted outside of its contact
     */
    subContactIds?: Array<string>;
    /**
     * List of IDs of all plans of actions (healthcare approaches) as a part of which the Service is provided. Only used when the Service is emitted outside of its contact
     */
    plansOfActionIds?: Array<string>;
    /**
     * List of IDs of all healthcare elements for which the service is provided. Only used when the Service is emitted outside of its contact
     */
    healthElementsIds?: Array<string>;
    /**
     * List of Ids of all forms linked to the Service. Only used when the Service is emitted outside of its contact.
     */
    formIds?: Array<string>;
    /**
     * The secret patient key, encrypted in the patient document, in clear here.
     */
    secretForeignKeys?: Array<string>;
    /**
     * The public patient key, encrypted here for separate Crypto Actors.
     */
    cryptedForeignKeys?: {
        [key: string]: Array<Delegation>;
    };
    /**
     * The delegations giving access to connected healthcare information.
     */
    delegations?: {
        [key: string]: Array<Delegation>;
    };
    /**
     * The contact secret encryption key used to encrypt the secured properties (like services for example), encrypted for separate Crypto Actors.
     */
    encryptionKeys?: {
        [key: string]: Array<Delegation>;
    };
    /**
     * Description / Unambiguous qualification (LOINC code) of the type of information contained in the service. Could be a code to qualify temperature, complaint, diagnostic, ...
     */
    label?: string;
    dataClassName?: string;
    /**
     * Used for sorting services inside an upper object (A contact, a transaction, a FHIR bundle, ...)
     */
    index?: number;
    /**
     * Information contained in the service. Content is localized, using ISO language code as key
     */
    content?: {
        [key: string]: Content;
    };
    encryptedContent?: string;
    textIndexes?: {
        [key: string]: string;
    };
    /**
     * The date (YYYYMMDDhhmmss) when the Service is noted to have started and also closes on the same date
     */
    valueDate?: number;
    /**
     * The date (YYYYMMDDhhmmss) of the start of the Service
     */
    openingDate?: number;
    /**
     * The date (YYYYMMDDhhmmss) marking the end of the Service
     */
    closingDate?: number;
    /**
     * Id of the form used during the Service
     */
    formId?: string;
    /**
     * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.
     */
    created?: number;
    /**
     * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.
     */
    modified?: number;
    /**
     * Soft delete (unix epoch in ms) timestamp of the object.
     */
    endOfLife?: number;
    /**
     * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.
     */
    author?: string;
    /**
     * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.
     */
    responsible?: string;
    /**
     * The id of the medical location where this entity was created.
     */
    medicalLocationId?: string;
    /**
     * Text, comments on the Service provided
     */
    comment?: string;
    status?: number;
    /**
     * List of invoicing codes
     */
    invoicingCodes?: Array<string>;
    /**
     * Comments - Notes recorded by a HCP about this service
     */
    notes?: Array<Annotation>;
    /**
     * Links towards related services (possibly in other contacts)
     */
    qualifiedLinks?: {
        [key: string]: {
            [key: string]: string;
        };
    };
    /**
     * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes
     */
    codes?: Array<CodeStub>;
    /**
     * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.
     */
    tags?: Array<CodeStub>;
    /**
     * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.
     */
    encryptedSelf?: string;
    securityMetadata?: SecurityMetadata;
}
