/// <reference types="node" />
import { ResourceMaster } from "../../Interfaces";
import { ENCOUNTER } from "../Encounter";
import { PATIENT } from "../Patient";
import { ORGANIZATION } from "../Organization";
import ResourceMain from "../ResourceMai";
import { DIAGNOSTIC_REPORT, SPECIMEN } from "../..";
import { PDF_HEADER } from "js-ts-report";
import { EXTENSION, resourceType } from "../../config";
import { PDF_FOOter } from "js-ts-report/build/classes/create-pdf";
export declare const compositionTypeArrey: readonly [{
    readonly type: "OPConsultation";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/OPConsultRecord";
    readonly code: "371530004";
    readonly text: "Clinical consultation report";
}, {
    readonly type: "DischargeSummary";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/DischargeSummaryRecord";
    readonly code: "373942005";
    readonly text: "Discharge summary";
}, {
    readonly type: "ImmunizationRecord";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/ImmunizationRecord";
    readonly code: "41000179103";
    readonly text: "Immunization record";
}, {
    readonly type: "Prescription";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/PrescriptionRecord";
    readonly code: "440545006";
    readonly text: "Prescription record";
}, {
    readonly type: "HealthDocumentRecord";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/HealthDocumentRecord";
    readonly code: "419891008";
    readonly text: "Health Document";
}, {
    readonly type: "DiagnosticReport";
    readonly system: "https://ndhm.gov.in/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/DiagnosticReportRecord";
    readonly code: "721981007";
    readonly text: "Diagnostic studies report";
}, {
    readonly type: "InitialAssessment";
    readonly system: "http://snomed.info/sct";
    readonly url: "https://nrces.in/ndhm/fhir/r4/StructureDefinition/InitialAssessment";
    readonly code: "371530004";
    readonly text: "Initial assessment report";
}];
declare const onlyType: ("DiagnosticReport" | "OPConsultation" | "DischargeSummary" | "ImmunizationRecord" | "Prescription" | "HealthDocumentRecord" | "InitialAssessment")[];
export declare type compositionType = typeof onlyType[number];
declare const compositionStatusArrey: readonly ["preliminary", "final", "amended", "entered-in-error"];
declare type compositionStatus = typeof compositionStatusArrey[number];
export interface compositionAuthor {
    reference: string;
    display: string;
}
export interface COMPOSITOIN {
    id?: string;
    identifier?: string;
    /**
     * user Object
     */
    user?: USER_COMPOSITION_EXTENSION[];
    patient: PATIENT;
    patientId: string;
    encounter: ENCOUNTER;
    encounterId: string;
    date: string;
    author: compositionAuthor[];
    organization: ORGANIZATION;
    organizationId: string;
    status: compositionStatus;
    type: compositionType;
    documentDatahtml?: string;
    section: any[];
    extension?: EXTENSION[];
    documentSubType?: string;
}
export interface USER_COMPOSITION_EXTENSION {
    date: string;
    id: number;
    orgId: number;
    name: string;
    orgName: string;
}
export declare class Composition extends ResourceMain implements ResourceMaster {
    toHtml(composition: COMPOSITOIN): Promise<string>;
    private compType;
    mapCompositionType(type: compositionType): void;
    private _patient;
    get patient(): PATIENT;
    private _organization;
    get organization(): ORGANIZATION;
    /**
     * This are persons who interpt the result in care of diagnostic report and in care of the others these who treat patinets
     */
    private _practitioner;
    get practitioner(): any;
    private _encounter;
    get encounter(): ENCOUNTER;
    /**
     * This is for diagnostic reporting enity requesting the services
     */
    private requeter;
    /** This form specimen */
    private specimenCollectedTime;
    /** This form specimen */
    private specimenRecivedTime;
    /**Sample Type */
    private specimenType;
    private reportedDateandTime;
    private performer;
    setEncounter(id: string): Promise<void>;
    setPatient(id: string): Promise<void>;
    setOrganization(id: string): Promise<void>;
    setPractitioner(id: string): Promise<void>;
    getOpdOrIPDNumber(encounter: ENCOUNTER): {
        type: "IPD" | "OPD";
        "opdOrIpdNumber": string;
        "value": string;
    };
    /**
     * service requested by could be patient , organization, patient him or herself
     * this is applicable diagnostic report
     */
    setRequester: (options: {
        reesource: resourceType;
        display: string;
    }) => void;
    setSpecimenRecivedAndCollectedTime: (specimen: SPECIMEN) => void;
    setDiagnosticReportDateTime: (diagnosticReport: DIAGNOSTIC_REPORT) => void;
    setPerformer: (options: {
        reesource: resourceType;
        display: string;
    }) => void;
    getFHIR(options: COMPOSITOIN): {
        resourceType: string;
        id: string | undefined;
        meta: {
            versionId: string;
            lastUpdated: string;
            profile: string[];
        };
        language: string;
        text: {
            status: string;
            div: string;
        };
        extension: any[];
        identifier: {
            system: string;
            value: string;
        };
        status: "entered-in-error" | "preliminary" | "final" | "amended";
        type: {
            coding: {
                system: string;
                code: string;
                display: string;
            }[];
            text: string;
        };
        subject: {
            reference: string;
        };
        encounter: {
            reference: string;
        };
        date: string;
        author: compositionAuthor[];
        title: "DiagnosticReport" | "OPConsultation" | "DischargeSummary" | "ImmunizationRecord" | "Prescription" | "HealthDocumentRecord" | "InitialAssessment";
        custodian: {
            reference: string;
        };
        section: {
            title: string;
            code: {
                coding: {
                    system: string;
                    code: string;
                    display: "DiagnosticReport" | "OPConsultation" | "DischargeSummary" | "ImmunizationRecord" | "Prescription" | "HealthDocumentRecord" | "InitialAssessment";
                }[];
            };
            entry: any[];
        }[];
    };
    convertFhirToObject(options: any): Partial<COMPOSITOIN>;
    statusArray(): compositionStatus[];
    typeArray(): compositionType[];
    /**
     * this function return the all resources of copistion namely Patient, Author/Practioner, Encounter and entries in section
     * @param id composition id
     * @returns
     */
    getWithIncludes: (id: string) => Promise<any>;
    /**
     * This function returns all the compositions of patient
     * @param id of patient
     * @returns
     */
    getCompositionsByPatient: (id: string) => Promise<any>;
    /**
     *
     * @param id This array of ids many merged pateints
     * @returns compostions
     */
    getCompositionsByPatientArray: (id: string[]) => Promise<any>;
    getPdf: (options: {
        html: string;
        header?: ((options: PDF_HEADER) => []) | undefined;
        footer?: ((options: PDF_FOOter) => []) | undefined;
        composition: COMPOSITOIN;
        base64: boolean;
        signBase64: string;
        nameLine1: string;
        nameLine2?: string | undefined;
        qrCode: string;
        qrCodeWidth?: number | undefined;
        paperSize: string;
        headerbase64Image?: string | undefined;
        paragraphSpace?: number | undefined;
        singleImagePerPage?: boolean | undefined;
        /**
         * This is letter pad header preprinted
         */
        topMargin?: number | undefined;
        bottomMargin?: number | undefined;
    }) => Promise<string | Buffer>;
    getMediaComposition: (index: number, mediaId: string[], content: string[]) => Promise<void>;
    /**
     * This returns the diagnosis from encounter
     * @param encounter
     * @returns
     */
    getDiagnosisFromEnconter(diagnosis: ENCOUNTER["diagnosis"], index: number, diagnosisStringArray: string[]): Promise<void>;
}
export declare const emptySign = "data:image/gif;base64,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";
export interface Records {
    create: Function;
    update: Function;
    getOptions: Function;
}
export {};
//# sourceMappingURL=index.d.ts.map