import { Mongo } from "cry-db"; import type { Dobavnica, Obisk, Obravnava, OsemenitevGoveda, Pacient, Racun, Terapija, Zdravilo } from "./index.mjs"; import type { RejnaZival } from "./types/stranka.mjs"; interface Pogostnost { vrsta: string; n: number; prc: number; } type ArtikliPmz = Pick; type PacientVrsteObj = Record>; type ArtikliPmzMap = Record; interface VrsteZivaliZaZdravilo { zdravilo_id: string; za: { n: number; vrsta: string; pmzZa: string; }[]; } export interface PmzUpdateAllForYearResult { updates: { terapije: Partial[]; osemenitevGoveda: Partial[]; obiski: Partial[]; racuni: Partial[]; dobavnice: Partial[]; obravnave: Partial[]; }; errors: string[]; stats: PmzStats; } export interface PmzStats { postavk: number; kodaOkVrstaOk: number; kodaOkVrstaNiVeljavna: number; okNiPmz: number; kodaJeBilaOk: number; kodaDopisanaIzArtikla: number; kodaPopravljenaIzArtikla: number; vrstaJeBilaOk: number; vrstaPreslikana: number; vrstaSeNePreslika: number; vrstaIzZivali: number; vrstaIzPasme: number; vrstaIzPogostnostiGmid: number; vrstaIzPogostnostiTenant: number; vrstaIzZdravila: number; vrstaBrezUstreznegaZdravila: number; vrstaNeznanaKodaBrezZgodovine: number; kodaIzbrisanaNiPMZ: number; } export declare function pmzPogostnostVrstZivali(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, gmid?: string): Promise>; export declare function pmzUpdateTerapije(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, zivali: RejnaZival[], znaneVrsteZivali: Record, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], errors: string[]): Promise<{ terapije: Partial[]; stats: PmzStats; }>; export declare function pmzUpdateOsemenitevGoveda(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, zivali: RejnaZival[], znaneVrsteZivali: Record, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], errors: string[]): Promise<{ osemenitevGoveda: Partial[]; stats: PmzStats; }>; export declare function pmzUpdateObiski(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, zivali: RejnaZival[], znaneVrsteZivali: Record, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], errors: string[]): Promise<{ obiski: Partial[]; stats: PmzStats; }>; export declare function pmzUpdateRacuni(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], pacientiVrsteObj: PacientVrsteObj, zivali: RejnaZival[], znaneVrsteZivali: Record, errors: string[]): Promise<{ racuni: Partial[]; stats: PmzStats; }>; export declare function pmzUpdateDobavnice(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, zivali: RejnaZival[], znaneVrsteZivali: Record, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], errors: string[]): Promise<{ dobavnice: Partial[]; stats: PmzStats; }>; export declare function pmzUpdateObravnave(mongo: Mongo, tenant: string, year: number, artikli: ArtikliPmzMap, vrsteZivaliZaZdravilo: VrsteZivaliZaZdravilo[], pacientiVrsteObj: PacientVrsteObj, errors: string[]): Promise<{ obravnave: Partial[]; stats: PmzStats; }>; /** * Posodobi PMZ polja (pmzKodaZdravila, pmzZa) na postavkah vseh dokumentov za dano leto. * * ## Obdelane kolekcije * * | kolekcija | način določanja vrste | * |-------------------|-----------------------------------------------------------| * | terapije | async kaskada (vrsta, živali, pasma, pogostnost, zdravilo)| * | osemenitve goveda | async kaskada | * | obiski | async kaskada | * | dobavnice | async kaskada | * | obravnave | sync iz pacienta (pmzZa_izvorna / pmzZa / pacient.vrsta) | * | računi | sync iz pacienta, nato async kaskada (obe skupaj) | * * ## Async kaskada za določanje pmzZa (poisciNovoVrstoZivali) * * 1. Iz že vpisane vrste (pmzZa_izvorna / pmzZa) prek poisciPmzVrstoZivali * 2. Iz znanih vrst živali po ušesni številki (iz prejšnjih terapij) * 3. Iz pasme goveda (molzna → "Govedo molznice", rejna → "Govedo pitovno") * 4. Iz najpogostejše vrste za GMID/tenant, ki ustreza zdravilu * 5. Iz najpogostejše vrste za zdravilo (zdraviluPrimernaVrsta) * * Pri govedu se vrsta prilagodi glede na starost živali * (npr. <1 leto → "Govedo pitovno<1leto"). * * ## Sync način (mogocePopraviPostavkoKoraka) * * Vrsto določi samo iz pmzZa_izvorna / pmzZa / pacient.vrsta prek poisciPmzVrstoZivali. * Ne uporablja živali, pasem ali pogostnosti. Uporablja se za obravnave (nimajo živali) * in kot prvi korak pri računih (podatki iz kartoteke pacienta). * * ## Kdaj se podatki NE spremenijo * * - artikel je PMZ, pmzZa je že veljavna vrsta → brez sprememb * - vrsta ni določljiva in ODSTRANI_ZDRAVILA_ZA_NEVELJAVNE_VRSTE=false → * obstoječi pmzZa ostane nespremenjen, posodobi se le pmzKodaZdravila * * ## Kdaj se podatki spremenijo * * - artikel ni PMZ (nima pmzKodaZdravila v šifrantu) → pmzKodaZdravila=0, pmzZa se ne spremeni * - artikel je PMZ in vrsta je uspešno določena → pmzZa se nastavi na novo vrsto, * pmzKodaZdravila se posodobi; izvorne vrednosti se shranijo v _izvorna polja * * ## Ko popravek ni možen * * - zdravilo nima zgodovine uporabe → obstoječa vrsta s postavke se ohrani nespremenjena * - nobena metoda ne najde vrste → napaka v errors[] * ("Ni mogoče določiti živalske vrste za zdravilo ...") * * @param tenant - identifikator veterinarske ambulante * @param year - leto, za katero se posodobijo dokumenti * @param mongo - opcijska mongo instanca (če ni podana, se ustvari nova) * @param writeToDb - če true, spremembe zapiše v bazo z upsertBatch * @returns updates po kolekcijah (terapije, osemenitevGoveda, obiski, računi, dobavnice, obravnave), * errors z nedoločljivimi vrstami živali, stats z agregirano statistiko popravkov */ export declare function pmzUpdateAllForYear({ mongo, tenant, year, writeToDb }: { tenant: string; year: number; mongo?: Mongo; writeToDb: boolean; }): Promise; export {}; //# sourceMappingURL=pmzUpdate.d.mts.map