<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lenin Mishra</title>
    <description>The latest articles on DEV Community by Lenin Mishra (@pyleninlabs).</description>
    <link>https://dev.to/pyleninlabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3802050%2F05c3199a-0ad7-4d93-bc53-4b1850a87c2e.jpeg</url>
      <title>DEV Community: Lenin Mishra</title>
      <link>https://dev.to/pyleninlabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pyleninlabs"/>
    <language>en</language>
    <item>
      <title>How I Built a Performance Dashboard for a Multi-Office Chiropractic Practice</title>
      <dc:creator>Lenin Mishra</dc:creator>
      <pubDate>Mon, 06 Apr 2026 18:48:22 +0000</pubDate>
      <link>https://dev.to/pyleninlabs/how-i-built-a-performance-dashboard-for-a-multi-office-chiropractic-practice-573g</link>
      <guid>https://dev.to/pyleninlabs/how-i-built-a-performance-dashboard-for-a-multi-office-chiropractic-practice-573g</guid>
      <description>&lt;p&gt;When a chiropractic practice owner came to me via &lt;a href="https://www.upwork.com/freelancers/pylenin" rel="noopener noreferrer"&gt;Upwork&lt;/a&gt;, they had a clear request: &lt;em&gt;"I don't want to rebuild anything. I just want to see what's happening."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They were already tracking everything — visits, collections, new patients — across Google Sheets. What they lacked was a way to see it all together, in one place, without digging through individual tabs for each doctor or office. This is a problem I see constantly with small and mid-size healthcare practices: the data exists, but the visibility doesn't.&lt;/p&gt;

&lt;p&gt;Here's exactly what I built, and how I did it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Starting Point: Understanding the Data
&lt;/h2&gt;

&lt;p&gt;Before touching a single chart or dashboard, I reviewed the existing data structure. The practice had records across two offices — Office A and Office B — and four associate doctors: Dr. Sarah Mitchell, Dr. James Patel, Dr. Emily Tran, and Dr. Marcus Lee.&lt;/p&gt;

&lt;p&gt;Each row of data captured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The date of the visit&lt;/li&gt;
&lt;li&gt;Which office it occurred at&lt;/li&gt;
&lt;li&gt;Which doctor performed it&lt;/li&gt;
&lt;li&gt;The type of visit (Adjustment, Consultation, or Rehab)&lt;/li&gt;
&lt;li&gt;Whether the patient was new&lt;/li&gt;
&lt;li&gt;The collection amount in dollars&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favah3p1v3nmn2u8bj8ga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favah3p1v3nmn2u8bj8ga.png" alt=" " width="746" height="872"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simple, clean, and already consistent — which made this project much more straightforward than most.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Structuring the Google Sheet
&lt;/h2&gt;

&lt;p&gt;Rather than altering the raw data tab, I added a dedicated &lt;strong&gt;Summary tab&lt;/strong&gt; on top of it. This is the key principle of this kind of project: you add a layer, you don't replace anything.&lt;/p&gt;

&lt;p&gt;The Summary tab contains three tables, all driven by formulas that pull directly from the raw data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Doctor Summary&lt;/strong&gt; — Total visits, new patients, total collections, and average collection per visit for each doctor. These are calculated using &lt;code&gt;COUNTIF&lt;/code&gt;, &lt;code&gt;COUNTIFS&lt;/code&gt;, and &lt;code&gt;SUMIF&lt;/code&gt; functions referencing the raw data tab. No manual entry required — when new rows are added to the raw data, the summary updates automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Office Summary&lt;/strong&gt; — The same metrics rolled up by office, making it easy to compare Office A vs. Office B at a glance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monthly Trend Table&lt;/strong&gt; — Visits, new patients, collections, and average collection per visit broken out by month. This powers the trend charts in Looker Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls65xra4tx9qz93xpxk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls65xra4tx9qz93xpxk0.png" alt=" " width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Connecting to Looker Studio
&lt;/h2&gt;

&lt;p&gt;Connecting Google Sheets to Looker Studio takes about 90 seconds. From the Looker Studio homepage, I created a new report, selected Google Sheets as the data source, pointed it at the Raw Data tab, and confirmed the headers were being read correctly.&lt;/p&gt;

&lt;p&gt;The key decision here: I used the &lt;strong&gt;raw data tab&lt;/strong&gt; as the primary source, not the summary tab. This gives Looker Studio full flexibility to slice and aggregate the data however we need, rather than being locked into the pre-aggregated summary structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Building the Dashboard
&lt;/h2&gt;

&lt;p&gt;I organized the dashboard into five pages, each answering a different question the owner might have when they open it in the morning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page 1: Executive Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Five KPI scorecards at the top of the page: total visits, total collections, new patients, average collection per visit, and new patient rate. A date range control sits in the corner — the owner can filter everything to this week, this month, or any custom range they choose.&lt;/p&gt;

&lt;p&gt;This page is designed to answer the question: &lt;em&gt;"How are we doing right now?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0541obwdtpuwzy99w4vb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0541obwdtpuwzy99w4vb.png" alt=" " width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page 2: Doctor Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bar charts showing each doctor's total visits and total collections, plus a detailed table with a heatmap overlay so the top performer is immediately visible. A dropdown filter lets the owner isolate a single doctor and review their numbers in full.&lt;/p&gt;

&lt;p&gt;This page answers: &lt;em&gt;"Which doctors are performing, and where are the gaps?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwt678ci04wko2u4rrm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwt678ci04wko2u4rrm2.png" alt=" " width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page 3: Office Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A donut chart for visit share between offices, a bar chart for collections, and a grouped bar chart breaking down visit types (Adjustment, Consultation, Rehab) by office. This surfaces patterns like one office skewing heavily toward adjustments while the other has more consultations — which often has implications for revenue mix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl79o77xqrn2xtxt1ypi3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl79o77xqrn2xtxt1ypi3.png" alt=" " width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page 4: New Patient Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dedicated to tracking new patient flow by doctor and by office. New patients are the lifeblood of any practice, so giving this its own page keeps it front-of-mind rather than buried in the doctor performance table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhgggrux78g02gokr1u5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhgggrux78g02gokr1u5.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page 5: Monthly collections&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a time series that tracks the collection amount - both daily and cumulative. Helps to understand which days were busy and which days had no collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtfumm11fjmx5dghcdbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtfumm11fjmx5dghcdbc.png" alt=" " width="473" height="630"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;p&gt;Across the three-month dataset:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Office A&lt;/strong&gt; handled a higher volume of visits, driven largely by Dr. Sarah Mitchell and Dr. Emily Tran.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Office B&lt;/strong&gt; showed a slightly higher average collection per visit, suggesting a different patient mix or visit type distribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New patient flow&lt;/strong&gt; was consistent across both offices month-over-month, with no significant spike or drop — a stable baseline to build from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dr. Sarah Mitchell&lt;/strong&gt; led on total collections in the dataset, while &lt;strong&gt;Dr. Marcus Lee&lt;/strong&gt; showed the highest new patient rate among Office B doctors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this required rebuilding the sheet. It required reading it better.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Delivered to my client
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Raw data tab (unchanged from original structure)&lt;/li&gt;
&lt;li&gt;Summary tab with auto-updating formulas and a written problem statement&lt;/li&gt;
&lt;li&gt;Full 5-page Looker Studio dashboard connected to live Google Sheets data&lt;/li&gt;
&lt;li&gt;Plain-English documentation for every chart, formula, and data connection&lt;/li&gt;
&lt;li&gt;1 free revision post-delivery and 7 days of follow-up support&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Approach Works for Small Healthcare Practices
&lt;/h2&gt;

&lt;p&gt;Most practice owners don't need a new system. They need a window into the system they already have. Building on top of existing Google Sheets — rather than migrating to a new database or analytics platform — keeps the barrier to adoption low, keeps the team's workflow intact, and keeps the owner in control of their own data.&lt;/p&gt;

&lt;p&gt;The Looker Studio layer costs nothing to maintain, updates in real time as new data is entered, and requires no technical knowledge to use. That's the point.&lt;/p&gt;

&lt;p&gt;If your practice has data scattered across spreadsheets and you're spending more time digging for answers than making decisions — this is the kind of project that pays for itself in the first week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Want to see examples of dashboards I've built? Reach out and I'll share a live demo.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>google</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
