diabetes-assistant / documentation

Diabetes Assistant related documentations
MIT License
0 stars 0 forks source link

Simple patient insulin dosage calculation #20

Open meandor opened 3 years ago

meandor commented 3 years ago

As a patient I want to get a recommendation for my insulin dose dependent on my planned calories intake so that I can make sure that I can quickly dose my insulin and am sticking to my insulin treatment plan

Context

Before each main meal, the patient self-measures her/his blood glucose levels and makes an informed assessment of the carbohydrate intake, expressed in KE ("Kohlenhydrateinheiten", 1KE = 10 g carbohydrates.)

Based on this patient input (blood glucose level & KEs), the app calculates the suggested insulin dosis for a given meal. The "KE-factor" and the standard insulin dosis are needed for the calculation - the doctor has already entered these values, for example during a previous visit to the doctor.

präprandialen Blutzuckerspiegels, der aufgenommenen Kohlenhydrateinheiten, des Kohlenhydrateinheiten-Faktors sowie ggf. des Korrekturfaktors ermitteln

In scope

Out of scope

Tech notes

Pseudocode:

int standarddosis = Math.round(ke * kefaktor) string insulin // z.B. “Actrapid”, “Humalog”, “NovoRapid”, bereits vom Arzt eingegeben

// Der BZ-Wert vor dem Essen ist zu niedrig

IF bz < 80 THEN System.out.println(“Unterzuckerung! Kein” + insulin + “spritzen ! Traubenzucker !”);

// Der BZ-Wert vor dem Essen ist hoch (definiert als > 240 mg/dl)

IF bz >= 241 THEN System.out.println(“Blutzucker sehr hoch! Bitte Arzt anrufen!”); int standarddosis = Math.round(ke * kefaktor) // Standarddosis, s. Wikipedia-Artikel “BE-Faktor”

// Der BZ-Wert vor dem Essen ist normal: man spritz die Standarddosis

IF bz > 80 AND bz < 120 { System.out.println(“Ergebnis: ” + standarddosis + “IE” + insulin + “spritzen”); }

// Der BZ-Wert vor dem Essen ist hoch: man spritz die Standarddosis plus “Korrekturdosis”

IF bz > 121 AND bz =< 240 { int diskrepanz = bz – 120 float stufefloat = diskrepanz / korrschritte int stufeint = Math.ceil(stufefloat)

int dosis = standarddosis + (stufeint * korrIE)

System.out.println(“Ergebnis: ” + dosis + “IE” + insulin + “spritzen”); }

Acceptance Criteria

AC1

GIVEN ...the patient enters blood glucose level & KEs WHEN ...the doctor has not entered the KE-factor and the standard insulin dosis THEN ...Error message: "Treatment paramters are incomplete; please consult your doctor"

AC2

GIVEN ... the patient enters blood glucose level & KEs WHEN ... KEs are unrealistic (for example 100) and/or blood glucose level are extremely high/low THEN ... Error message to patient to confirm his/her input and eventually to take action

AC3

GIVEN ...the patient enters blood glucose level & KEs WHEN ...the suggested insulin dosis is extremely high/low THEN ...Warning to patient: "This dosis is uncommonly high/low! Do you usually apply insulin dosis in this magnitude?"

Sketches

Anything that helps implementing it (optional)

itchie2019 commented 3 years ago

Im englischen Sprachraum scheint die Kohlenhydrateinheit nicht gebräuchlich zu sein, soweit für mich ersichtlich nutzt man zur Berechnung einer Insulindosis stattdessen die Menge "reiner" Kohlenhydrate in Gramm.

NiMe568 commented 3 years ago

Pseudocode s.oben.