Կլինիկայի հերթագրում․ ինչպես կանխել կրկնակի ամրագրումները
Ինչու են կլինիկայում առաջանում կրկնակի ամրագրումներ, ինչպես է օգնում տվյալների բազայի սահմանափակումը, և ինչ ստուգել ռեսուրսների ու հիշեցումների կառավարման մեջ։
Կլինիկայում կրկնակի ամրագրումը միշտ աշխատակցի անուշադրության հետևանք չէ։ Ադմինիստրատորը հեռախոսով այց է գրանցում, իսկ գործընկերը նույն պահին տեղափոխում է այլ պացիենտի այցը։ Երկուսն էլ տեսնում են ազատ ժամ, բայց նրանց էկրանների տվյալներն արդեն կարող են հնացած լինել։ Հակասություններ կարող են առաջանալ նաև ներմուծումից, այցի տևողությունը փոխելուց կամ չեղարկված այցի կարգավիճակը սխալ հասկանալուց։ Լուծումը պետք է պաշտպանի հերթագրումը բոլոր այդ ճանապարհներով, ոչ միայն սովորական գրանցման պատուհանում։
Ինչու էկրանի ստուգումը բավարար չէ
Ենթադրենք՝ ծրագիրը պահպանելուց առաջ հարցնում է՝ ժամը ազա՞տ է։ Միաժամանակյա հարցումները կարող են երկուսն էլ ստանալ դրական պատասխան, քանի դեռ մյուս այցը չի պահպանվել։ Սա մրցակցային վիճակ է․ յուրաքանչյուր առանձին ստուգում կարող է ճիշտ լինել, իսկ վերջնական արդյունքը՝ հակասական։ Նույն վտանգը մնում է, եթե սերվերը ստուգումն ու պահպանումը կատարում է իրարից անկախ քայլերով։ Օրացույցը հաճախ թարմացնելը օգտակար է, բայց այդ բացը չի փակում։
Տվյալների բազայի պաշտպանությունը պետք է գործի հենց փոփոխությունը հաստատելիս։ Բոլոր մուտքային ճանապարհները՝ էկրանը, API-ն, ներմուծումն ու կրկնվող այցերի ստեղծումը, պետք է ենթարկվեն նույն կանոնին։ Հակասող հարցումը չպետք է ավարտվի հաջող ամրագրմամբ․ աշխատակիցը պետք է տեսնի հասկանալի բացատրություն և ընտրի նոր ժամ։ Հարցման կրկնությունը ճանաչող մեխանիզմն էլ օգտակար է, բայց այլ խնդիր է լուծում․ նույն գործողության կրկնությունը կանխելը դեռ չի արգելում իրարից անկախ, համընկնող ամրագրումները։
Ինչ է տվյալների բազայի exclusion constraint-ը
PostgreSQL-ի բացառման սահմանափակումը՝ exclusion constraint-ը, թույլ է տալիս արգելել համընկնող ժամանակային միջակայքերը, օրինակ՝ նույն կլինիկայի նույն բժշկի զբաղվածություն ստեղծող այցերի համար։ Մեխանիզմը նկարագրված է PostgreSQL-ի փաստաթղթերում։ Ճիշտ կարգավորված սահմանափակման դեպքում բազան չի հաստատի այդ կանոնը խախտող գրառումները՝ նաև միաժամանակյա հարցումների դեպքում։ Սա ստուգելի երաշխիք է սահմանված շրջանակում։ Եթե կանոնը վերաբերում է միայն բժշկին, այն ինքնաբերաբար չի պաշտպանում սենյակը կամ սարքը։
Մատակարարից պահանջեք պարզ բացատրություն՝ որ կարգավիճակներն են զբաղեցնում ժամը, և երբ է չեղարկումը այն ազատում։ Հաջորդական այցերը կարող են սահմանին կպչել, եթե ավարտի պահը այլևս զբաղված չի համարվում։ Եթե մաքրում, ախտահանում կամ նախապատրաստում է պետք, այդ ժամանակն էլ պետք է ներառվի զբաղվածության մեջ։ Սկիզբը, ավարտը և ռեսուրսի նույնացուցիչը պետք է պարտադիր լինեն, իսկ տևողությունը՝ դրական։ Անորոշ արժեքները չպետք է հնարավորություն տան շրջանցելու արգելքը կամ ձևավորելու անիմաստ ամրագրում։
Բժշկի բացակայություն, սենյակներ և սարքավորումներ
Արձակուրդը կամ ժամանակավոր բացակայությունը պետք է ազդի հասանելիության վրա։ Եթե բացակայությունը պահվում է առանձին աղյուսակում, այցերի սահմանափակումը այն ինքնաբերաբար չի ստուգի․ պահանջեք ընդհանուր զբաղվածության մոդել կամ միաժամանակյա գործողություններից պաշտպանված համարժեք մեխանիզմ։ Սենյակն ու սարքը նույնպես առանձին ռեսուրսներ են։ Այցի համար անհրաժեշտ բոլոր ամրագրումները պետք է հաստատվեն միասին կամ ամբողջությամբ մերժվեն։ Եթե ռեսուրսը թույլ է տալիս զուգահեռ օգտագործում, պարզեք դրա տարողության կանոնը․ բացառիկ զբաղվածության արգելքը չի նկարագրում բոլոր հնարավոր դեպքերը։
- Տարբեր աշխատատեղերից միաժամանակ ամրագրեք նույն բժշկին, ապա կրկնեք փորձը նույն սենյակի և սարքի համար։
- Այցի գրանցմանը զուգահեռ ավելացրեք բժշկի բացակայություն և ստուգեք հակասության արդյունքը։
- Երկարացրեք այցը, տեղափոխեք այն և ներմուծեք համընկնող գրառում․ ստուգեք նաև հարակից, չհամընկնող այցերը։
- Չեղարկեք ամրագրումը և փորձեք նորից զբաղեցնել ժամը՝ ստուգելով ազատումը, սխալի հաղորդագրությունն ու պահպանված պատմությունը։
Սպասման ցուցակը դեռ հաստատված այց չէ
Սպասման ցուցակում պահեք պացիենտի նախընտրած ծառայությունը, բժշկին և հարմար ժամանակը։ Ազատված ժամի առաջարկը տարբերակեք հաստատված ամրագրումից։ Եթե առաջարկը ժամանակավոր պահում է ժամը, դրա ժամկետի ավարտը պետք է տեսանելի և սահմանված լինի։ Պացիենտի հաստատման պահին կրկին ստուգեք բոլոր անհրաժեշտ ռեսուրսները՝ նույն պաշտպանված մեխանիզմով։ Նախապես որոշեք նաև առաջարկների հերթականությունը, որպեսզի տարբեր աշխատակիցներ նույն ազատ ժամը չխոստանան տարբեր պացիենտների՝ այն արդեն ամրագրված համարելով։
Հիշեցումներ և չկայացած այցերի հաշվառում
Հիշեցման համար սահմանեք թույլատրելի կապի միջոցը և անհրաժեշտ համաձայնությունները՝ կիրառելի պահանջները նախապես ճշտելով։ Հաղորդագրության հերթագրվելը, ուղարկվելը, առաքվելը և պացիենտի հաստատումը տարբեր վիճակներ են։ Առանց անհրաժեշտության հաղորդագրության մեջ բժշկական մանրամասներ մի ներառեք։ Չներկայանալը հաշվառեք չեղարկումից առանձին՝ պատասխանատուով և հասանելի բացատրությամբ։ Ստացված տվյալներն օգտագործեք աշխատանքի ընթացքը հասկանալու համար․ չներկայանալը ինքնին չի բացատրում պատճառը և բժշկի աշխատանքի արագության չափանիշ չէ։
Ինչպես է դա աշխատում MedOne-ում
MedOne-ում համընկնող գրանցումներն արգելվում են տվյալների բազայի մակարդակում, այնպես որ երկու աշխատակից չեն կարող միաժամանակ զբաղեցնել նույն բժշկի, սենյակի կամ սարքի ժամը։ Գրաֆիկը հաշվի է առնում աշխատանքային ժամերն ու բժշկի բացակայությունները, սպասման ցուցակը տարբերվում է հաստատված գրանցումից, իսկ չներկայանալը հաշվառվում է չեղարկումից առանձին։ Հիշեցումներն ուղարկվում են միայն այն պացիենտներին, որոնք տվել են համապատասխան համաձայնություն։