def test_form_rejects_empty_string(self): form = CRIMetoclopramideForm(data={'weight': '', 'rate': '', 'volume': '', 'infusion': '', 'inc_volume': 100, 'inc_infusion': 1}) self.assertFalse(form.is_valid())
def test_increase_volume_and_infusion_fields_are_optional(self): form = CRIMetoclopramideForm(data={'weight': 4.0, 'rate': 10, 'volume': 100, 'infusion': 4, 'inc_volume': '', 'inc_infusion': ''}) self.assertTrue(form.is_valid())
def test_form_rejects_non_numeric_input(self): form = CRIMetoclopramideForm(data={'weight': 'wait', 'rate': 'eight', 'volume': 'volume', 'infusion': 'fusion', 'inc_volume': 'volume', 'inc_infusion': 'fusion'}) self.assertFalse(form.is_valid())
def calc_cri_metoclopramide(request): """Calculates CRI dosages for metoclopramide GET parameters: weight: weight in kg rate: current rate volume: current iv volume in mLs infusion: target infusion rate Context: rx: calculated cri dosages rounded to 3 decimal places """ form = CRIMetoclopramideForm() rx = dict() if request.method == 'GET' and request.is_ajax(): form = CRIMetoclopramideForm(data=request.GET) if form.is_valid(): weight = float(request.GET['weight']) rate = float(request.GET['rate']) volume = float(request.GET['volume']) infusion = float(request.GET['infusion']) dose = (weight * infusion / 5)/(rate * 24) * volume rx = {'maint': round((weight * 2.2 * 30)/24, 3), 'maint_plus': round((weight * 30 + 70)/24, 3), 'dose': round(dose, 3), 'concentration': round(dose * 5 / volume, 3)} if request.GET['inc_infusion'] and request.GET['inc_volume']: inc_volume = float(request.GET['inc_volume']) inc_infusion = float(request.GET['inc_infusion']) dose_inc_infusion = inc_infusion + infusion rx['inc_infusion'] = round(dose_inc_infusion, 3) rx['inc_dose'] = round(((dose_inc_infusion * weight / (rate * 24)) - (dose * 5 / volume)) * inc_volume / 5, 3) rx['inc_rate'] = round((dose_inc_infusion * weight)/((dose * 5)/volume)/24, 3) return render(request, 'calc/cri_metoclopramide.html', {'navbar': 'calc', 'form': form, 'rx': rx})