import { TopicRole } from './TopicRole.mjs'; import { CodeStub } from './base/CodeStub.mjs'; import { HasEncryptionMetadata } from './base/HasEncryptionMetadata.mjs'; import { HasMedicalLocation } from './base/HasMedicalLocation.mjs'; import { ICureDocument } from './base/ICureDocument.mjs'; import { StoredDocument } from './base/StoredDocument.mjs'; import { Delegation } from './embed/Delegation.mjs'; import { Encryptable } from './embed/Encryptable.mjs'; import { SecurityMetadata } from './embed/SecurityMetadata.mjs'; import { Base64String } from './specializations/Base64String.mjs'; /** * * Represents a topic for secure messaging between healthcare parties. A topic groups messages in a * conversation * and can be linked to health elements and services for medical context. * / */ export interface Topic extends StoredDocument, ICureDocument, HasMedicalLocation, HasEncryptionMetadata, Encryptable { /** * * The id of the health element linked to this topic. */ healthElementId: string | undefined; /** * * The id of the contact linked to this topic. */ contactId: string | undefined; /** * * A description of the topic. */ description: string | undefined; /** * * Map of active participants with their roles (participant, admin, or owner). */ activeParticipants: { [key: string]: TopicRole; }; /** * * Set of ids of health elements linked to this topic. */ linkedHealthElements: Array; /** * * Set of ids of services linked to this topic. */ linkedServices: Array; readonly isEncrypted: boolean; toJSON(): object; } /** * * Represents a topic for secure messaging between healthcare parties. A topic groups messages in a * conversation * and can be linked to health elements and services for medical context. * / */ export declare class DecryptedTopic { /** * * The unique identifier of the topic. */ id: string; /** * * The revision of the topic in the database, used for conflict management / optimistic locking. */ rev: string | undefined; /** * * The timestamp (unix epoch in ms) of creation. */ created: number | undefined; /** * * The timestamp (unix epoch in ms) of the latest modification. */ modified: number | undefined; /** * * The id of the health element linked to this topic. */ healthElementId: string | undefined; /** * * The id of the contact linked to this topic. */ contactId: string | undefined; /** * * A description of the topic. */ description: string | undefined; /** * * Codes that identify or qualify this particular topic. */ codes: Array; /** * * Tags that qualify the topic as being member of a certain class. */ tags: Array; /** * * The id of the User that created this topic. */ author: string | undefined; /** * * The id of the HealthcareParty that is responsible for this topic. */ responsible: string | undefined; /** * * Hard delete (unix epoch in ms) timestamp of the object. */ deletionDate: number | undefined; /** * * Map of active participants with their roles (participant, admin, or owner). */ activeParticipants: { [key: string]: TopicRole; }; /** * * The security metadata of the entity. */ securityMetadata: SecurityMetadata | undefined; /** * * The secret patient key, encrypted in the patient's own AES key. */ secretForeignKeys: Array; /** * * The patient id encrypted in the delegates' AES keys. */ cryptedForeignKeys: { [key: string]: Array; }; /** * * The delegations giving access to connected healthcare information. */ delegations: { [key: string]: Array; }; /** * * The keys used to encrypt this entity when stored encrypted. */ encryptionKeys: { [key: string]: Array; }; /** * * The base64-encoded encrypted fields of this entity. */ encryptedSelf: Base64String | undefined; /** * * Set of ids of health elements linked to this topic. */ linkedHealthElements: Array; /** * * Set of ids of services linked to this topic. */ linkedServices: Array; readonly isEncrypted: false; constructor(partial: Partial); toJSON(): object; static fromJSON(json: any, ignoreUnknownKeys?: boolean, path?: Array): DecryptedTopic; } /** * * Represents a topic for secure messaging between healthcare parties. A topic groups messages in a * conversation * and can be linked to health elements and services for medical context. * / */ export declare class EncryptedTopic { /** * * The unique identifier of the topic. */ id: string; /** * * The revision of the topic in the database, used for conflict management / optimistic locking. */ rev: string | undefined; /** * * The timestamp (unix epoch in ms) of creation. */ created: number | undefined; /** * * The timestamp (unix epoch in ms) of the latest modification. */ modified: number | undefined; /** * * The id of the health element linked to this topic. */ healthElementId: string | undefined; /** * * The id of the contact linked to this topic. */ contactId: string | undefined; /** * * A description of the topic. */ description: string | undefined; /** * * Codes that identify or qualify this particular topic. */ codes: Array; /** * * Tags that qualify the topic as being member of a certain class. */ tags: Array; /** * * The id of the User that created this topic. */ author: string | undefined; /** * * The id of the HealthcareParty that is responsible for this topic. */ responsible: string | undefined; /** * * Hard delete (unix epoch in ms) timestamp of the object. */ deletionDate: number | undefined; /** * * Map of active participants with their roles (participant, admin, or owner). */ activeParticipants: { [key: string]: TopicRole; }; /** * * The security metadata of the entity. */ securityMetadata: SecurityMetadata | undefined; /** * * The secret patient key, encrypted in the patient's own AES key. */ secretForeignKeys: Array; /** * * The patient id encrypted in the delegates' AES keys. */ cryptedForeignKeys: { [key: string]: Array; }; /** * * The delegations giving access to connected healthcare information. */ delegations: { [key: string]: Array; }; /** * * The keys used to encrypt this entity when stored encrypted. */ encryptionKeys: { [key: string]: Array; }; /** * * The base64-encoded encrypted fields of this entity. */ encryptedSelf: Base64String | undefined; /** * * Set of ids of health elements linked to this topic. */ linkedHealthElements: Array; /** * * Set of ids of services linked to this topic. */ linkedServices: Array; readonly isEncrypted: true; constructor(partial: Partial); toJSON(): object; static fromJSON(json: any, ignoreUnknownKeys?: boolean, path?: Array): EncryptedTopic; }