In Home & Office Uroflowmetry Device
The In Home & Office Uroflowmetry Device, which has been nicknamed “Uroflow”, is an ongoing project with the pediatric urology department at the Children’s Hospital of Philadelphia. The goal is this project is to help combat lower urinary tract dysfunction in children.
Lower urinary tract (LUT) symptoms and dysfunction affect 17-22% of all school-aged children. Common symptoms of this include hold maneuvers, urinary incontinence, urinary urgency & increased frequency, and urinary retention (urine left in bladder). The most common causes of LUT dysfunction include dysfunctional voiding, overactive bladder, voiding postponement, and primary bladder neck dysfunction. [Statistics and information courtesy of Children’s Hospital of Philadelphia, Urology Division]
A typical urine flow profile resembles a bell shaped curve, where the flow rate of urine begins low, increases, peaks, and slowly tapers off to 0. In children with LUT, the flow profile will look like a bit like a sinusoid, indicating that the stream is starting and stopping repeatedly. This is called staccato flow. This commonly leads to urine being left in the bladder, commonly leading to infection. Shown below are healthy and unhealthy (LUT) flow profile. [Images courtesy of Children’s Hospital of Philadelphia, Urology Division]
The urology division at CHOP explained to us with the concept of training, where they can actively teach a child how to better control their muscles to mitigate staccato flow and train the child to urinate in a bell-shaped flow profile, limiting urine left in the bladder and limiting risk of infection and other complications. Doing this requires a way to monitor urine flow rate.
Currently, the “gold standard” monitoring method is the setup shown to the right. It involves the child urinating into a container that is weighed as they urinate, and this weight-over-time is converted to a flow rate. The main issue with this method is that it doesn’t provide real time feedback.
The results are printed on a piece of paper, printed after the patient is finished urinating. Beyond the antiquation of this method, it can also only be done in a hospital setting.
A big issue associated with the concept of ‘training’ is that it can only be currently done in a hospital, with a doctor, and only a few times a week at most: taking up the doctor’s time, the patient’s time, and the patient’s family’s time. How can we enable the patients to be able to train more often, on their own time?
Our team’s goal was to match this gold standard, but provide the feedback to the patient in as real-time as possible. After experimenting with a number of sensors and ideas, including an ultrasonic range finder to measure fluid height and a dedicated liquid flow sensor, we were able to find a simple idea that worked: an air pressure sensor.
Our chosen sensor is the MPX5050, from Freescale Semiconductor. It provides a simple analog output, proportional to the air pressure it detects in its input ports. In our test setup, we attached the sensor to a rigid plastic tube, and inserted the other end of the tube at the bottom of a collection chamber. We found that the pressure sensor would output a voltage proportional to the height of the liquid in the collection chamber (which matched the height of the liquid in the rigid plastic tube attached to the sensor). If we could measure the height of the liquid over time, we could mathematically calculate the flow rate.
Using a digitally-controlled water pump, we generated various flow profiles, including sine, square, and triangle waves. These waves were generated using the PWM output of an ATMega328 microcontroller.
The analog output of the sensor was fed, using a microcontroller and serial communication, into MATLAB. In MATLAB, we planned to take the derivative of the data (by taking the difference between two consecutive samples and dividing by the sampling period), to generate a flow rate. We found that this method of taking a derivative was extremely sensitive to noise, and ruined the results. To combat this, we applied a low-pass filter to the data, to smooth it out, and then calculated our derivate.
This method, when tested in a hospital setting, matched the gold standard of urine flow monitoring perfectly.
Our next question became, how we can move our platform off of MATLAB/PC entirely, and allow a patient to use this methodology in their homes?
This phase of the project is currently ongoing, and a solution is being implemented, as shown in the below schematic.
The small goals of the project are to read the data, filter/process it, visualize it, and empty the urine in a responsible, sanitary manner.
I am currently using a Teensy 2.0 microcontroller, to read the sensor, filter the data using a filter library, take the derivative onboard, and convert it to a flow rate (which requires calibration).
The data is being sent over Bluetooth, using an HC-505 module, connected to the TX&RX lines of the microcontroller. The data is visualized using the Adafruit Bluefruit mobile app.
Lastly, the urine needs to be emptied. At the bottom of the collection chamber is a motorized valve, which can be opened and closed using the GPIO pins of the microcontroller. The valve has 3 pins, a ground, an open, and a close. To open it, a HIGH signal is sent to the open pin and LOW to the close pin, and vice versa to close it. It takes approximately 5 seconds, and approximately half a watt of power (12V @ 40 mA). In order to control this with low voltage, low current GPIO signals, two high side switches are implemented. Their schematic is shown below. One of these circuit is used to control each control pin on the valve.
This phase of the project is ongoing. The full device is currently being assembled and updates will be provided as it progresses!