Class: Renalware::PD::AdequacyCalculatedAttributes

Inherits:
Object
  • Object
show all
Defined in:
app/models/renalware/pd/adequacy_calculated_attributes.rb

Instance Method Summary collapse

Instance Method Details

#body_surface_areaObject



143
144
145
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 143

def body_surface_area
  Clinics::BodySurfaceArea.calculate(weight: weight, height: height)
end

#dietry_protein_intakeObject

rubocop:disable Metrics/MethodLength,Metrics/AbcSize



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 88

def dietry_protein_intake
  return if urine_24_missing || dial_24_missing
  return if any_are_nil_or_zero?(
    dialysate_urea,
    dial_24_vol_out,
    urine_urea,
    urine_24_vol,
    weight
  )

  (
    (
      19.0 + 0.272 *
      (
        (dialysate_urea * dial_24_vol_out / 1000.0) + (urine_urea * urine_24_vol / 1000.0)
      )
    ) / weight
  ).round(2)
end

#pertitoneal_creatinine_clearanceObject



66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 66

def pertitoneal_creatinine_clearance
  return if dial_24_missing
  return if any_are_nil_or_zero?(
    dial_24_vol_out,
    serum_creatinine,
    dialysate_creatinine,
    body_surface_area
  )

  (
    (dialysate_creatinine * dial_24_vol_out / 1000.0) /
    serum_creatinine * 7.0 * 1.72 / body_surface_area
  ).to_i
end

#pertitoneal_ktvObject



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 123

def pertitoneal_ktv
  return if dial_24_missing
  return if any_are_nil_or_zero?(
    serum_urea,
    dialysate_urea,
    dial_24_vol_out,
    total_body_water
  )

  (
    (dialysate_urea / serum_urea * dial_24_vol_out / 1000.0 * 7.0) / total_body_water.to_f
  ).round(2)
end

#renal_creatinine_clearanceObject



45
46
47
48
49
50
51
52
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 45

def renal_creatinine_clearance
  return if urine_24_missing
  return if any_are_nil_or_zero?(urine_creatinine, serum_creatinine, urine_24_vol)

  (
    (urine_creatinine * urine_24_vol) / serum_creatinine * 7.0
  ).round(2)
end

#renal_ktvObject

rubocop:enable Metrics/MethodLength,Metrics/AbcSize



109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 109

def renal_ktv
  return if urine_24_missing
  return if any_are_nil_or_zero?(
    urine_urea,
    serum_urea,
    urine_24_vol,
    total_body_water
  )

  (
    (urine_urea / serum_urea * urine_24_vol / 1000.0 * 7.0) / total_body_water.to_f
  ).round(2)
end

#renal_urine_clearanceObject



38
39
40
41
42
43
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 38

def renal_urine_clearance
  return if urine_24_missing
  return if any_are_nil_or_zero?(urine_urea, serum_urea, urine_24_vol)

  (urine_urea * urine_24_vol / 1000.0) / serum_urea * 7.0
end

#residual_renal_functionObject



54
55
56
57
58
59
60
61
62
63
64
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 54

def residual_renal_function
  return if any_are_nil_or_zero?(
    body_surface_area,
    renal_creatinine_clearance,
    renal_urine_clearance
  )

  (
    (renal_creatinine_clearance + renal_urine_clearance) / (2.0 * body_surface_area) * 1.72
  ).to_i
end

#to_hObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 24

def to_h
  return {} unless adequacy

  {
    total_creatinine_clearance: total_creatinine_clearance,
    pertitoneal_creatinine_clearance: pertitoneal_creatinine_clearance,
    renal_creatinine_clearance: renal_creatinine_clearance,
    total_ktv: total_ktv,
    pertitoneal_ktv: pertitoneal_ktv,
    renal_ktv: renal_ktv,
    dietry_protein_intake: dietry_protein_intake
  }
end

#total_body_waterObject



147
148
149
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 147

def total_body_water
  Clinics::TotalBodyWater.calculate(height: height, weight: weight, age: age, sex: sex)
end

#total_creatinine_clearanceObject



81
82
83
84
85
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 81

def total_creatinine_clearance
  return if any_are_nil_or_zero?(residual_renal_function, pertitoneal_creatinine_clearance)

  residual_renal_function + pertitoneal_creatinine_clearance
end

#total_ktvObject



137
138
139
140
141
# File 'app/models/renalware/pd/adequacy_calculated_attributes.rb', line 137

def total_ktv
  return if any_are_nil_or_zero?(renal_ktv, pertitoneal_ktv)

  (renal_ktv + pertitoneal_ktv).round(2)
end