Developing a Low Cost Ultrasound Phantom

Introduction

Ultrasound phantoms can cost upwards of $700 (source). This is a steep price for students, educators, or clinicians who simply want to practice their technique. I wanted to create a low-cost alternative that would let me rehearse ultrasound-guided peripheral IV (PIV) placement without breaking the bank.

While reviewing organic chemistry, I started thinking about polymers and remembered Mary Roach’s Stiff: The Curious Lives of Human Cadavers mentioning ballistic gel. Ballistic gel is a synthetic or gelatin-based material originally developed to replicate the density and viscosity of human tissue for projectile impact testing. That made me wonder if it could mimic the echogenicity of expensive phantoms like the CAE Blue Phantom. 

Come to find, many others came to the same conclusion, so there is a wealth of info online about making these low cost alternatives.

Armed with that insight, I decided to start experimenting. My goal wasn’t perfection, but progress: to build something functional, testable, and cheap. Each attempt became a prototype, teaching me something new about materials, design, and the trade-offs between realism, durability, and ultrasound performance. Here’s a breakdown of what I tried, what worked, and what didn’t.

Prototype 1

For my first attempt, I used 20% NATO ballistic gel produced from a low cost ballistic gel alternative from Fit Lane Nutrition/Amazon and opted for silicone tubing instead of latex. I had come across a tip on 5MinSono noting that latex tubing can shrivel when exposed to hot gel before it set.

I used an ice mold for shaping, which was easy and accessible, but I made the phantom nearly 2 inches (5.08 centimeters) thick. That turned out to be a major misstep and far too deep for realistic PIV insertion practice. In real patients, superficial veins are usually within 0.5 to 1 cm of the skin surface, so this block made even shallow access feel like a central line attempt.

Still, it was a useful baseline to learn from, especially about material behavior and the importance of scale in procedural realism.

Prototype 2

For the second attempt, I went with a 10% FBI ballistic gel mix and poured it into a bread pan, creating a block about 1.5 inches thick. The size and shape worked somewhat better but the depth was barely acceptable for practicing superficial vein access.

Functionally, it was solid for basic training, but the “mock tissue” lacked echogenicity. The gel appeared mostly anechoic, making it difficult to appreciate needle depth or surrounding structures on ultrasound. To improve vessel visualization, I injected saline into the vein cavity. Without it, the air-filled veins showed up like bright fog lights—far too echogenic for realistic image interpretation.

One major drawback is that the block sheared apart after just one or two attempts. The lower gel concentration made it soft and fragile. However, ambient temperature may have also played a role. The room was warm, and the gel felt noticeably softer than when it had first set, suggesting that even small temperature shifts could affect its mechanical stability. This made the block less forgiving to needle passes and more prone to tearing with repeated use.

Prototype 3

For this iteration, I went with a smaller form factor and re-melted my original 20% NATO block. This time, I incorporated cornstarch at a 10% concentration to increase echogenicity in the surrounding “tissue” (source). The goal was to make the phantom appear more realistic under ultrasound, with improved scatter and soft tissue texture. It worked, and the structures looked more like actual tissue, and the needle was easy to track on screen as it pierced and advanced through the gel.

That realism came at a cost. The block lost its translucency. In earlier versions, I could visually track the needle as it approached the vein, which helped correlate hand motion with needle tip position. With the added echogenicity, that visibility disappeared. It’s a trade-off: better imaging fidelity on the screen, but less direct visual feedback.

One additional observation: the added density made it more difficult to fully compress the mock vein with the probe. While this might not perfectly simulate real-world vein behavior, it didn’t seem to hinder needle guidance. Overall, this version struck a better balance between ultrasound realism and practical usability.

Comparisons

Prototype 2 (left) via Mindray versus Prototype 1 (right) via Butterfly.

Left is a $500 US phantom from a medical simulation company. Right is Prototype 2, which comes in at approximately $10.

Future Considerations

The bargain-brand ballistic gel I used for these prototypes is made from organic gelatin, most likely bovine in origin. While affordable and easy to work with, this type of gel isn’t truly shelf-stable. It can degrade, soften, or even grow mold over time when stored at room temperature. For short-term use or small batch experimentation, it works well. But for long-term durability and reusability, I’m looking into synthetic alternatives.

These synthetic gels come with a higher upfront cost for raw materials, but they’re still significantly cheaper than commercial medical training models. They’re also more stable, reusable, and less prone to biological breakdown. In future iterations, I also plan to experiment with graphite powder instead of cornstarch as my echogenicity agent. Graphite offers a more consistent ultrasound appearance and, importantly, it doesn’t support microbial growth, making it a better choice for models intended to last.

Enhanced Compat Mode: Optimizing IV Medication Management and Streamlining the Process of Creating Infusion Compatibility Groupings

Background

Try out here: https://www.marksescon.com/ecm-main.

Patients in the ICU often require multiple simultaneous infusions, making drug compatibility critical. Enhanced Compat Mode operates through a straightforward interface where users select medications from a predefined list. The algorithm evaluates these selections against a compatibility dataset and iteratively forms optimized groupings, ensuring no incompatibilities arise. Results are presented in an intuitive table, clearly showing which medications can be grouped together, with the goal of utilizing the fewest lumens possible. Powered by JavaScript and leveraging an external JSON compatibility database, the web app is fully expandable and can be updated dynamically to accommodate new medications or guidelines, making it a future-proof solution for evolving clinical needs.

Machinations

If you are not interested in the innerworkings of the algorithm, you can skip this part.

Algorithm

  1. Input Collection: The user selects all the medications the patient is receiving, categorized dynamically into primary and secondary infusions based on metadata.

  2. Behavior Selection: The user chooses between Stacked Mode and Separated Mode for secondary infusions:

    • Stacked Mode: Secondary infusions can share a lumen even if incompatible with each other, as long as they are compatible with the primary infusion.

    • Separated Mode: Secondary infusions are separated into different lumens if they are incompatible with each other.

  3. Compatibility Evaluation: Using the compatibility dataset, the algorithm checks:

    • Primary Compatibility: Ensures all infusions in a group are compatible with the primary infusion.

    • Secondary Handling: In Stacked Mode, secondary infusions are only checked for compatibility with the primary. In Separated Mode, all infusions in the same group must be compatible with each other.

  4. Strict Compatibility Mode (if enabled): If Strict Mode is active, only medications with well-established compatibility (highest evidence) are grouped, excluding conditional or uncertain pairings.

  5. Grouping Process: The algorithm iterates through the selected medications to create groups:

    • Prioritizes grouping medications with the most compatibility.

    • Non-secondary infusions are limited to three per group.

    • Secondary infusions in Stacked Mode can exceed the three-per-lumen rule if compatible with the primary.

  6. Output Generation: The algorithm generates optimized groupings, displaying each group with its assigned infusions. It minimizes the number of lumens used while respecting compatibility constraints.

Compatibility information was garnered from Lexicomp and Stabilis. Those combinations with confirmed compatibility are scored 2; those with conditional compatibility are scored 1; and all else (incompatible and untested) are scored 0.

JSON and Scalability

Compatibility data from Lexicomp and Stabilis is converted into a spreadsheet, which is then converted into a data matrices.

The JSON structure in Enhanced Compat Mode transforms raw compatibility datasheets into a dynamic and actionable format. Compatibility data, typically presented as rows and columns in datasheets, is converted into a nested JSON structure, effectively creating a matrix. Each medication becomes a key, with its compatibility with other medications stored as subkeys and corresponding values.

For example:

This format enables the algorithm to quickly evaluate compatibility relationships without manual lookups.

The metadata` section enhances scalability by providing additional context for each medication, such as its category (e.g., Sedatives, Secondaries) and aliases. This allows the app to dynamically group medications and display user-friendly names. Adding a new medication is as simple as including it in the `metadata` and `compatibility` sections, ensuring seamless integration into the UI and algorithm.

The separation of metadata and compatibility makes updates modular and efficient. New medications or changes to compatibility guidelines require only localized updates to the JSON file, without altering the core functionality of the app.

This scalability ensures that Enhanced Compat Mode remains adaptable to evolving clinical practices and datasets.

Philosophical Considerations

The Conditional Compatibility Dilemma

The original compatibility dataset, sourced from Lexicomp and Stabilis, included not only binary outcomes (compatible or incompatible) but also conditional compatibilities—pairings that might work under specific circumstances. I initially introduced a scoring system to account for these conditional interactions, assigning values of 0 (incompatible), 1 (conditionally compatible), and 2 (fully compatible). The algorithm prioritized groupings with the least contention, aiming for configurations that were both compatible and stable.

However, as I progressed, I realized this approach added unnecessary complexity. Clinicians prioritize clarity and actionable results over navigating gray areas. Conditional compatibility often depends on variables like drug concentration, infusion rate, or compounding agents, which are rarely captured in static datasets. Without this context, the scoring system risked creating false confidence and undermining the tool’s practicality. Additionally, the distinction between “conditionally compatible” and “fully compatible” rarely impacted real-world groupings.

This realization led to Strict Compatibility Mode, which focuses exclusively on well-established, evidence-based compatibility. By eliminating ambiguity, this mode simplifies decision-making and ensures the tool remains reliable, intuitive, and aligned with the needs of clinicians.

Secondaries: To Be or Not to Be…Treated as Continuous Infusions?

Secondary infusions, like intravenous piggybacks (IVPB), are typically intermittent rather than continuous, which changes compatibility dynamics. To accommodate this, the tool introduces Stacked and Separated modes:

  • Stacked Mode: Secondary infusions can share a lumen even if incompatible with each other, provided they are compatible with the primary infusion. This assumes secondaries won’t run simultaneously, allowing them to “break” the three-per-lumen rule. For example, magnesium sulfate and potassium phosphates, which are incompatible with each other but compatible with vasopressin, can share the same lumen if administered at different times.

  • Separated Mode: Secondary infusions expected to run simultaneously are grouped into separate lumens. This ensures incompatible secondaries are never mixed, prioritizing safety. For instance, a patient requiring multiple antibiotics and electrolytes administered at the same time would benefit from this mode.

These modes provide flexibility to reflect real-world practices while maintaining safety.

Shortcomings

While the tool offers significant benefits, limitations remain. It does not account for central venous access requirements or prioritize infusions based on clinical urgency. It also assumes all secondaries pair with a single primary (e.g., Normal Saline), without addressing scenarios involving multiple primaries. Additionally, it cannot enforce institution-specific policies, such as dedicated lumens for TPN or lipids. These limitations underscore the importance of clinical judgment in complex cases.

Future Synergy with DripMap

Enhanced Compat Mode is an offshoot of DripMap, a tool designed to visually map infusion setups. Future integration will combine compatibility optimization with visual mapping to create a comprehensive solution for IV management, dubbed FlowMatrix. Challenges like accounting for medication aliases (e.g., Levophed vs. Norepinephrine) highlight the importance of bridging technical precision with clinical usability. By addressing these gaps, the tool aims to offer clinicians an intuitive, end-to-end solution for managing complex infusion setups.

Flowchart for FlowMatrix.

Conclusion

This project illustrates the delicate balance between technological innovation and practical clinical application. By evolving from a complex scoring system to a streamlined, evidence-based approach, Enhanced Compat Mode prioritizes clarity and usability, making it a valuable tool for optimizing IV management. While limitations remain, the lessons learned lay the foundation for future iterations, ensuring the tool continues to grow alongside the needs of clinicians and patients.

Simple Fick/Thermodilution CO/CI Calculator

Note: An updated version of this calculator can be found here.

Disclaimer: This Fick/Thermodilution cardiac output/index calculator is intended for educational purposes only and should not be used as a diagnostic tool or a substitute for professional medical advice, diagnosis, or treatment. Use of this calculator is at your own discretion and risk.

Cardiac Output and Cardiac Index Calculator






Results

Cardiac Output (L/min):

Cardiac Index (L/min/m²):

If you have taken the time to utilize this calculator, I kindly ask that you consider filling out a brief survey.

Your input is incredibly valuable to me and will significantly contribute to the development and enhancement of future projects. Thank you for your participation and support.

"Closure", a short film treatment and script.

I recently took a class on script writing at San Diego City College. The following are from my fiction script titled Closure. The storyline was inspired by Ubiq by Philip K. Dick and written as if I was doing a project for Wong Fu Productions.

Hook

In the future, hospice patients are given the opportunity to wear a cybernetic device (Reminiscence) that allows them to traverse their memories and explore their pasts. Many use it to revel in a moment that brought them great joy and others use it to rectify an error from ages ago. Unfortunately, the technology is still limited and users are only allotted the ability to travel to a single event.

Isiah, an elderly man dying from pancreatic cancer, has a final wish of revisiting an incident prior to his wife’s (Grace) death. Present at his side is his estranged daughter, Anna. However, things go awry when the machine malfunctions, and Anna must go into the fading mind of her father to help him confront the greatest mistake he ever made and prevent a Compartmentalization Event from occurring.

Files

Progress Report: Envelope Follower, Voltage Controlled FETS, and the Elusive "Dynamic Power Supply Sag"

...the highlight of this pedal is a unique blown amp feature which provides crackles, compression, gating and eq changes similar to that of a tube amp pushed past it’s (sic) limits...
— Smallsound/Bigsound F- Ovedrive Manual

The Smallsound/Bigsound F- Overdrive has been on the market for some time, and alongside its amazing overdrive pedal, is a highly unique feature: A Crackle/Burst/Threshold system that is an enveloper follower circuit based on the Dr. Quack schematic. The Dr. Quack is an off-shoot of the Dr. Q by Electro-Harmonix. The Dr. Quack was used by The Tone God to create The Punisher, and the Punisher is widely said to be the schematic behind the F- Overdrive’s Crackle/Burst/Threshold (CBT) feature.

Go to 3:35 for demonstration.

The Punisher is a dynamic power supply sag simulator. The Punisher is not an audio effect but a companion effect that is to be used to control another effect to provide new sounds. You plug your audio signal and power supply into Punisher in series and connect the output audio signal and power supply into the effect to be controlled.
— The Tone God, "Punisher"

The envelope follower feeds a control voltage to a JFET, which in turn alters its resistance, producing a voltage-controlled resistor in the process. The JFET is run in series with the power supply to a JFET stage, thus mis-biasing the JFET stage in the process. The resulting sounds is said to emulate that of an amp on the verge of explosion whose tubes wax and wane.

For further reading, I suggest visiting this page and scrolling down to “Driving Effects Circuits with the LFO Waveforms.”

Having built the Smallsound/Bigsound (SSBS) Mini, I started to set my eyes on the SSBS F- Oveddrive. However, I had little clue as to the underworkings of the CBT. Initially I thought the circuit was some sort of phaser/tremolo circuit that altered the volume/output of a specific stage of the SSBS Mini. But I wasn't too sure. Also, pictures of the F- Overdrive PCB did not look anything like a tremolo/phaser circuit. Although, oddly enough, the concepts of JFETs as voltage-controlled resistors (VCRs) is closely associated with phasers.

I began researching the most readily available information out there: It's a voltage-controlled envelope follower circuit. I pulled up schematics for the Glowfly Retroflect and Frantone Vibutron, which features envelope followers affecting FETs. I shot off a few Google searches, which immediately turned up the Dr. Q schematic. Unfortunately, there was very little information about how that particular circuit fit in the CBT. I wish I could say that the subsequent research was streamlined once I aligned the CBT circuit with the Dr. Q schematic, but in reality, I spent quite a few days perusing various forums to no avail. A culmination of 2-3 days of digging deep into forums helped me learn that the envelope follower controlled a "resistor," the resistor was associated with the second stage of the SSBS Mini, and the overall result was the JFET being mis-biased.

Simple enough, right?

A few more hours of Google searching lead me to Reddit where someone used the keywords, "dynamic sag." (Coincidently, I had just completed a LM317-based sag unit.) A few more Google searches lead me to the Pusnisher circuit. Furthermore, if you Google the Punisher circuit, the CBT pops-up alongside it!

I breadboarded the circuit, but I could not get it to function. Furthermore, I found several posts of individuals identifying the Punisher as being a key part of the CBT, but only a handful of people who successfully implemented the circuit: The Tone God, author of the circuit; some random guy on DIYStompboxes; and the mind behind SSBS. After a day of troubleshooting the circuit, I crowdsourced Reddit and DIYStompboxes for assistance.

The key piece missing from the original schematic was just a pair of resistors: The op-amp was not biased! The addition of the transistors allowed the circuit to work. I also experimented/ with and implemented some other changes from forum suggestions and the Dr. Q, which allowed the envelope signal to be much stronger. However, one change that helped was found on accident: I was trying out different biasing resistors and left one resistor in. This made the circuit work much better for reasons I am unsure of.

Schematic with many changes.

And like that, I figured it all out...sort of.

See, I call this "Progress Report" because there are still a few of issues to solve:

  • How to calculate the resistance that is bestowed upon by the VCR/JFET.

  • How to make the circuit smoother as the attack/release is really fast.

  • How to elicit more crackling. I actually did manage to do this when I was using two 1M ohm resistors for biasing, but the envelope signal was not as strong.

  • What the “Heavy/Light” function changes. I think it either changes the electrolytic capacitor attached to red LED or it may be the Attack function seen in the Nurse Quacky.

As for now, this is it.

Left side is the Crackle/Burst/Threshold function. On the right is a dummy unit to test the circuit. The dummy unit based on the Fairfield Circuitry Barbershop, which is like a minimalist SSBS Mini.

Updates:

  • May 8, 2023: Grammar and spelling errors corrected.